diff --git a/backpack-organization/main-box.scad b/backpack-organization/main-box.scad index 4bac4a1..5d79317 100644 --- a/backpack-organization/main-box.scad +++ b/backpack-organization/main-box.scad @@ -1,3 +1,4 @@ +include <../lib/chamfered-cube.scad> include <../lib/rounded-cube.scad> // All units in mm @@ -5,7 +6,7 @@ $fn=128; outerWall=4; innerWall=2; layerClearance = 0.5; -verStr="v6"; +verStr="v7"; font="Montserrat"; // as a convention, outer dimensions refer to measurements from outside wall to @@ -17,6 +18,7 @@ outerBoxWidth = 154; innerBoxLength = outerBoxLength - 2*outerWall; innerBoxWidth = outerBoxWidth - 2*outerWall; +innerBoxHeight = 44; audioTraySide = 64; audioTrayHeight = 15; @@ -25,11 +27,12 @@ audioTrayIH = audioTrayHeight - innerWall; module audioLayer() { - iH = 42; // inner height + oH = innerBoxHeight; oL = innerBoxLength - 2*layerClearance; // outer length oW = innerBoxWidth - 2*layerClearance; // outer width iL = oL - 2*innerWall; // inner length iW = oW - 2*innerWall; // inner width + iH = oH - innerWall; // inner height handleDia=42; cableDia = 130; @@ -38,8 +41,10 @@ module audioLayer() { difference() { // main shell translate([-innerWall, -innerWall, -innerWall]) - roundedCube([oW, oL, iH], [1, 1, 1]); + roundedCube([oW, oL, oH], [1, 1, 1]); + translate([0, 169, 0]) + mirror([0, 1, 0]) union() { // screwdriver handle translate([handleDia / 2, handleDia / 2, handleDia / 2]) @@ -48,37 +53,71 @@ module audioLayer() { translate([handleDia / 2, handleDia / 2, handleDia / 2]) cylinder(d=handleDia, h = handleDia / 2 + innerWall); - translate([(handleDia - 32) / 2, handleDia / 2, 7]) cube([32, 130 + handleDia/2, iH]); + translate([(handleDia - 32) / 2, handleDia / 2, 7]) cube([32, 102 - handleDia/2, oH]); // screw bits bitL = 112; bitW = 22; - translate([(handleDia - bitW) / 2, handleDia / 2, 0]) cube([bitW, bitL + handleDia/2, iH]); - // release ramp - /* - translate([(handleDia - bitW)/2, handleDia/2 + 20 + bitL + 1, 0]) - rotate([-45, 0, 0]) translate([0, -iH, 0]) cube([bitW, iH, iH*2]); - */ + // plain cube version (we're going to oversize and chamfer to get + // diagonal edges) + // translate([(handleDia - bitW) / 2, handleDia / 2, 0]) cube([bitW, bitL + handleDia/2, oH]); + translate([(handleDia - bitW) / 2 - 5, handleDia / 2 - 5, -0.01]) + chamferedCube([bitW + 10, bitL + handleDia/2 + 10, 16], chamfer=5); - // lower-right cubby - translate([handleDia + 2*innerWall, 0, 0]) - cube([iW - handleDia - 3*innerWall, 150, iH]); - - // cable cut-out - translate([iW/2, iL - cableDia/2 - innerWall, 0]) - cylinder(d=cableDia, h=iH); + // power block cutout + translate([(handleDia - 32) / 2 - 4, handleDia / 2 + 80, 7]) cube([40, 68, oH]); // fingerway cut-outs - translate([handleDia*0.6, 70, 0]) cube([24, 36, iH]); + translate([handleDia*0.6, 55, 0]) cube([24, 36, oH]); } - //translate([innerWall, innerWall, innerWall]) cube([iW, iL, iH]); + + // lower-right cubby + translate([handleDia + 2*innerWall, 0, 0]) + cube([iW - handleDia - 3*innerWall, 150, oH]); + + // cable cut-out + translate([iW/2, iL - cableDia/2 - innerWall, 0]) + cylinder(d=cableDia, h=oH); + + // upper-left bits + union() { + // PortaPow + translate([6.5, 249.5, 22]) + rotate([0, 0, 45]) + cube([44.5, 10.5, oH]); + + // USB thumbdrive + translate([5, 272, 1]) + rotate([0, 0, 45]) + cube([13, 5, oH]); + + // fingerway + translate([16, 271, iH + 15]) + sphere(d=46); + } + + // SD-card adapter + SIM removal tool + union() { + translate([iW - 26, 278, 9.5]) + rotate([0, 0, -45]) + cube([24.5, 2, 33]); + + translate([iW - 8, 280, 4.5]) + rotate([0, 0, -135]) + cube([8.5, 1, 38]); + + // fingerway + translate([iW - 16, 271, iH + 15]) + sphere(d=46); + } + } - translate([handleDia*0.988, 69.5, -0.1]) - cylinder(d=9, iH - innerWall + 0.1); + translate([handleDia*0.988, 77.5, -0.1]) + cylinder(d=9, oH - innerWall + 0.1); - translate([handleDia*0.988, 105.5, -0.1]) - cylinder(d=9, iH - innerWall + 0.1); + translate([handleDia*0.988, 114.5, -0.1]) + cylinder(d=9, oH - innerWall + 0.1); translate([iW/2 - audioTraySide/2, iL - audioTraySide/2 - cableDia/2 - innerWall, 0]) difference() { @@ -261,18 +300,18 @@ module usbBitsTray() { // right-angle connectors (1st variation) translate([innerWall, innerWall, -1]) for (i = [0, 1]) { - translate([33*i, 16*i, 0]) + translate([34*i, 16*i, 0]) rotate([0, 0, 180*i]) union() { // main body - cube([22, 7, 14]); + cube([22.5, 7, 14]); // usb connector // 1.64 to edge, 4.64 thick - translate([1.4, 0, 0]) cube([5.2, 16, 14]); + translate([1.4, 0, 0]) cube([6, 16, 14]); // release wedge - translate([22, 0, 0]) + translate([22.5, 0, 0]) rotate([0, 15, 0]) translate([-22, 0, 0]) cube([22, 7, 14]); @@ -296,19 +335,26 @@ module usbBitsTray() { // 10.32 wide, 0.73 to edge cube([12, 22, 7]); + // release wedge + //color("blue") + translate([17, 0, 0]) + rotate([0, 30, 0]) + cube([8, 13, 7]); + + // finergway translate([25, 6.5, 8]) sphere(d=13); } } // usb A-C converers // 29 x 18 x 9 - translate([innerWall + 38, innerWall - 0.5, 5]) + translate([innerWall + 38, innerWall - 0.5, 3]) for(i = [0,1]) { translate([0, 28.5*2*i, 0]) mirror([0, i, 0]) union() { // main body - cube([18, 29, 9]); + cube([18, 29, 10]); // release wedge //color("blue") @@ -325,5 +371,5 @@ module usbBitsTray() { //audioLayer(); //translate([outerBoxWidth + 10, 0, 0]) audioTray1(); translate([outerBoxWidth + 10, 80, 0]) usbBitsTray(); -translate([outerBoxWidth + 10, 160, 0]) audioTray3(); +//translate([outerBoxWidth + 10, 160, 0]) audioTray3(); //translate([outerBoxWidth + 10, 240, 0]) audioTray2();