From 330998483acdb85186375f3c94f65a2cc2038e2f Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Tue, 30 Dec 2025 22:57:18 -0600 Subject: [PATCH] Backpack Organizer v8: layer 2, tweak SD card holder. --- backpack-organization/main-box.scad | 97 +++++++++++++++++++++++------ 1 file changed, 78 insertions(+), 19 deletions(-) diff --git a/backpack-organization/main-box.scad b/backpack-organization/main-box.scad index 5d79317..0b633c7 100644 --- a/backpack-organization/main-box.scad +++ b/backpack-organization/main-box.scad @@ -6,7 +6,7 @@ $fn=128; outerWall=4; innerWall=2; layerClearance = 0.5; -verStr="v7"; +verStr="v8"; font="Montserrat"; // as a convention, outer dimensions refer to measurements from outside wall to @@ -18,7 +18,6 @@ outerBoxWidth = 154; innerBoxLength = outerBoxLength - 2*outerWall; innerBoxWidth = outerBoxWidth - 2*outerWall; -innerBoxHeight = 44; audioTraySide = 64; audioTrayHeight = 15; @@ -26,15 +25,15 @@ audioTrayIS = audioTraySide - 2*innerWall; audioTrayIH = audioTrayHeight - innerWall; -module audioLayer() { - oH = innerBoxHeight; +module layer1() { + oH = 44; 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; + handleDia = 42; cableDia = 130; translate([innerWall, innerWall, innerWall]) union() { @@ -53,7 +52,13 @@ 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, 102 - handleDia/2, oH]); + translate([handleDia / 2, handleDia / 2 + 3, handleDia / 2]) + sphere(d=handleDia); + + translate([handleDia / 2, handleDia / 2 + 3, handleDia / 2]) + cylinder(d=handleDia, h = handleDia / 2 + innerWall); + + translate([(handleDia - 32) / 2, handleDia / 2, 7]) cube([32, 103 - handleDia/2, oH]); // screw bits bitL = 112; @@ -98,19 +103,23 @@ module audioLayer() { // SD-card adapter + SIM removal tool union() { - translate([iW - 26, 278, 9.5]) + translate([iW - 27, 278, 9.5]) rotate([0, 0, -45]) - cube([24.5, 2, 33]); + cube([25, 2.5, 33]); translate([iW - 8, 280, 4.5]) rotate([0, 0, -135]) - cube([8.5, 1, 38]); + cube([8.75, 1.5, 38]); // fingerway translate([iW - 16, 271, iH + 15]) sphere(d=46); } + // version marker + color("black") + translate([-innerWall + 0.6, 20, 4]) rotate([90, 0,-90]) + linear_extrude(0.61) text(text = verStr, font = font, size = 8); } translate([handleDia*0.988, 77.5, -0.1]) @@ -129,6 +138,57 @@ module audioLayer() { } } +module layer2() { + oH = 40; + 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 + + union() { + + difference() { + roundedCube([oW, oL, oH], [1, 1, 1]); + + translate([innerWall, innerWall, innerWall]) + union() { + // HDD + translate([(iW - 131)/2, 0, 0]) + cube([131, 83, oH]); + + // Tekton tool kit + translate([2, 103 + innerWall, 0]) + cube([105.5, 57, oH]); + + // Slice knife + translate([114, 103 + innerWall, 0]) + cube([22.5, 153, oH]); + + // cables + translate([56, 224, 0]) + cylinder(d=110, h=oH); + + // fingerways + translate([30, 80, 0]) + cube([36, 30, oH]); + + translate([105, 126, 0]) + cube([12, 36, oH]); + } + + // version marker + color("black") + translate([0.6, 20 + innerWall, 4]) rotate([90, 0,-90]) + linear_extrude(0.61) text(text = verStr, font = font, size = 8); + } + + translate([32, 96, 0]) scale([6, 22, 1]) cylinder(d=1, h=oH); + translate([68, 96, 0]) scale([6, 22, 1]) cylinder(d=1, h=oH); + translate([112.75, 128, 0]) scale([6.5, 6, 1]) cylinder(d=1, h=oH); + } +} + module audioTrayBlank(s, h) { difference() { union() { @@ -177,7 +237,7 @@ module audioTrayBlank(s, h) { } } -module audioTray1() { +module audioJackTray() { difference() { audioTrayBlank(s = audioTraySide, h = audioTrayHeight); @@ -241,7 +301,7 @@ module audioTray1() { } } -module audioTray2() { +module drumKeyTray() { difference() { audioTrayBlank(s = audioTraySide, h = audioTrayHeight); @@ -275,7 +335,7 @@ module audioTray2() { } } -module audioTray3() { +module headphoneAmpTray() { difference() { audioTrayBlank(s = audioTraySide, h = audioTrayHeight - 1); @@ -336,7 +396,6 @@ module usbBitsTray() { cube([12, 22, 7]); // release wedge - //color("blue") translate([17, 0, 0]) rotate([0, 30, 0]) cube([8, 13, 7]); @@ -357,7 +416,6 @@ module usbBitsTray() { cube([18, 29, 10]); // release wedge - //color("blue") translate([0, 28.5, -4]) rotate([-20, 0, 0]) translate([0, -29, 0]) @@ -368,8 +426,9 @@ module usbBitsTray() { } } -//audioLayer(); -//translate([outerBoxWidth + 10, 0, 0]) audioTray1(); -translate([outerBoxWidth + 10, 80, 0]) usbBitsTray(); -//translate([outerBoxWidth + 10, 160, 0]) audioTray3(); -//translate([outerBoxWidth + 10, 240, 0]) audioTray2(); +layer1(); +//layer2(); +//translate([outerBoxWidth + 10, 0, 0]) audioJackTray(); +//translate([outerBoxWidth + 10, 80, 0]) usbBitsTray(); +//translate([outerBoxWidth + 10, 160, 0]) headphoneAmpTray(); +//translate([outerBoxWidth + 10, 240, 0]) drumKeyTray();