From 9db047336922f51b4dc04f05422665d1ded60e98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20Schr=C3=B6ter?= Date: Tue, 7 Apr 2026 10:17:39 +0200 Subject: [PATCH] item boxes --- .helperHerosKeepOut.sh | 3 + HeroesKeepOut/Box-Heroes.scad | 68 ++++++++++++++++++ HeroesKeepOut/Box-Items-Lid.scad | 66 +++++++++++++++++ HeroesKeepOut/Box-Items.scad | 118 +++++++++++++++++++++++++++++++ 4 files changed, 255 insertions(+) create mode 100644 HeroesKeepOut/Box-Heroes.scad create mode 100644 HeroesKeepOut/Box-Items-Lid.scad create mode 100644 HeroesKeepOut/Box-Items.scad diff --git a/.helperHerosKeepOut.sh b/.helperHerosKeepOut.sh index 94b7773..fe628f3 100755 --- a/.helperHerosKeepOut.sh +++ b/.helperHerosKeepOut.sh @@ -19,3 +19,6 @@ while IFS=',' read -r b t h name; do -D "name=\"$name\"" \ -o "$output" "$SCAD_FILE" done <./HeroesKeepOut/cardConfigs.txt + +echo "Rendering $output..." +"$OPENSCAD" -o "$output" "$SCAD_FILE" diff --git a/HeroesKeepOut/Box-Heroes.scad b/HeroesKeepOut/Box-Heroes.scad new file mode 100644 index 0000000..eab965e --- /dev/null +++ b/HeroesKeepOut/Box-Heroes.scad @@ -0,0 +1,68 @@ +include + +// Parameter for console overwrite +b = 178; +t = 38; +h = 20; + +module box(b, t, h) { + difference() { + difference() { + // base + cuboid([ b, t, h], anchor = [ -1, -1, -1 ],rounding = 1,edges = [ TOP, FRONT + LEFT, FRONT + RIGHT, BACK + LEFT, BACK + RIGHT ]); + } + + // left lower + sideCut(b,t); + // left upper + translate([0, 0, h]) mirror([0, 0, 1]) sideCut(b, t); + // right lower + translate([b, 0, 0]) mirror([1, 0, 0]) sideCut(b,t); + // right upper + translate([b, 0, h]) mirror([1, 0, 0]) mirror([0, 0, 1]) sideCut(b, t); + + // inner + translate([ 21, 19, h-11 ]) cylinder(h = 12, r = 13, center = false); + translate([14, -1, h-11]) cube([14, t + 2, 18.5], false); + translate([ 55, 19, h-11 ]) cylinder(h = 12, r = 13, center = false); + translate([49, -1, h-11]) cube([14, t + 2, 18.5], false); + translate([ 89, 23, h-11 ]) cylinder(h = 12, r = 13, center = false); + translate([83, -1, h-11]) cube([14, t + 2, 18.5], false); + translate([ 123, 25, h-11 ]) cylinder(h = 12, r = 13, center = false); + translate([117, -1, h-11]) cube([14, t + 2, 18.5], false); + translate([ 157, 25, h-11 ]) cylinder(h = 12, r = 13, center = false); + translate([151, -1, h-11]) cube([14, t + 2, 18.5], false); + + // clean area for card pocket + translate([b- 79, -1, -1]) cube([80, 13, 41], false); + } +} + +module sideCut(b,t) { + translate([0,-1,0]) { + rotate([-90,-90,0]) { + linear_extrude(t/4+4) { + polygon(points=[[-1,-1], [-1,1.6], [3.1, 1.6], [6.1,-1]]); + } + } + } + difference() { + translate([0,t/4+2,0]) { + rotate([-90,-90,0]) { + linear_extrude(0.75 * t) { + polygon(points=[[-1,-1], [-1,3.2], [6.9, 3.2], [11.2,-1]]); + } + } + } + translate([2.2,0.75 * t - 2.4, 0]) { + rotate([90,-90,0]) { + linear_extrude(0.4 * t + 5) { + polygon(points=[[-1,-1], [-1,0.6], [3.3, 0.6], [4.9,-1]]); + } + } + } + } +} + +box(b, t, h); + diff --git a/HeroesKeepOut/Box-Items-Lid.scad b/HeroesKeepOut/Box-Items-Lid.scad new file mode 100644 index 0000000..8155de8 --- /dev/null +++ b/HeroesKeepOut/Box-Items-Lid.scad @@ -0,0 +1,66 @@ +include + +// Parameter for console overwrite +b = 178; +t = 38; +h = 20; + +module box(b, t) { + bInner = b - 10; + tInner = t - 10; + difference() { + union () { + if (bInner >= 6 && tInner >= 6) { + difference() { + cube([ b, t, 1.5 ], false); + bSpace = 5 + (((bInner + 2) % 8) / 2); + bAmount = (((bInner + 2) - bSpace + 5) / 8); + tSpace = 5 + (((tInner + 2) % 8) / 2); + tAmount = (((tInner + 2) - tSpace + 5) / 8); + for (i = [0:bAmount - 1], j = [0:tAmount - 1]) { + translate([ bSpace + i * 8, tSpace + j * 8, -1 ]) { + cube([ 6, 6, 3.5 ], false); + } + } + } + } else { + cube([ b, t, 1.5 ], false); + } + sideCut(b,t); + translate([b, 0, 0]) { + mirror([1, 0, 0]) { + sideCut(b,t); + } + } + // frame area around card pocket + translate([b-83, t - 16, 0]) { + cube([83, 16, 1.5], false); + } +} + + // clean area for card pocket + translate([b-79, t - 12, -1]) { + cube([80, 13, 41], false); + } + } +} + +module sideCut(b,t) { + difference() { + translate([0,0,1.5]) { + cube([3, 0.75 * t - 2.5,6.6], false); + } + translate([2.3,t/4+2,0]) { + rotate([-90,-90,0]) { + linear_extrude(0.5 * t) { + polygon(points=[[-1,-1], [-1,1], [7, 1], [5.1,-1]]); + } + } + } + } + translate([0,0,1.5]) { + cube([1.4, t, 3.4], false); + } +} + +box(b, t); diff --git a/HeroesKeepOut/Box-Items.scad b/HeroesKeepOut/Box-Items.scad new file mode 100644 index 0000000..0b152e0 --- /dev/null +++ b/HeroesKeepOut/Box-Items.scad @@ -0,0 +1,118 @@ +include + +// Parameter for console overwrite +b = 178; +t = 38; +h = 20; + +module box(b, t, h) { + difference() { + difference() { + // base + cuboid([ b, t, h], anchor = [ -1, -1, -1 ],rounding = 1,edges = [ TOP, FRONT + LEFT, FRONT + RIGHT, BACK + LEFT, BACK + RIGHT ]); + + // inner + translate([ 5, 1.5, 1.5 ]) { + cuboid([ b - 10, t - 3, h - 0.5 ], anchor = [ -1, -1, -1 ], + rounding = 8, edges = [ BOTTOM + FRONT, BOTTOM + LEFT, BOTTOM + BACK, BOTTOM + RIGHT, FRONT + LEFT, FRONT + RIGHT, BACK + LEFT, BACK + RIGHT ]); + } + } + + // left lower + sideCut(b,t); + // left upper + translate([0, 0, h]) { + mirror([0, 0, 1]) { + sideCut(b, t); + } + } + // right lower + translate([b, 0, 0]) { + mirror([1, 0, 0]) { + sideCut(b,t); + } + } + // right upper + translate([b, 0, h]) { + mirror([1, 0, 0]) { + mirror([0, 0, 1]) { + sideCut(b, t); + } + } + } + + // clean area for card pocket + translate([b- 79, -1, -1]) { + cube([77.4, 13, 41], false); + } + } + + // deviders + translate([150, 12, 1.5]) { + cube([1, 24.5, 18.5], false); + } + translate([127, 12, 1.5]) { + cube([1, 24.5, 18.5], false); + } + translate([104, 12, 1.5]) { + cube([1, 24.5, 18.5], false); + } + translate([81, 1.5, 1.5]) { + cube([1, 35, 18.5], false); + } + translate([58, 1.5, 1.5]) { + cube([1, 35, 18.5], false); + } + + // card pocket + translate([b- 80, 0, ]) { + difference() { + cube([78.4, 12, 40], false); + translate([1.5, -1, 1.5]) { + cube([75.4, 11.5, 41], false); + } + } + translate([1.5, 0, 1.5]) { + cuboid([6, 1.5, 38.5], anchor = [-1, -1, -1], rounding = 5, edges = TOP + RIGHT); + } + translate([70.9, 0, 1.5]) { + cuboid([6, 1.5, 38.5], anchor = [-1, -1, -1], rounding = 5, edges = TOP + LEFT); + } + translate([7.5, 0, 1.5]) { + difference() { + cube([63.4, 1.5, 11], false); + translate([0, -1, 6]) { + cuboid([63.4, 4.5, 6], anchor = [-1, -1, -1], rounding = 5, edges = [ BOTTOM + LEFT, BOTTOM + RIGHT]); + } + } + } + } +} + +module sideCut(b,t) { + translate([0,-1,0]) { + rotate([-90,-90,0]) { + linear_extrude(t/4+4) { + polygon(points=[[-1,-1], [-1,1.6], [3.1, 1.6], [6.1,-1]]); + } + } + } + difference() { + translate([0,t/4+2,0]) { + rotate([-90,-90,0]) { + linear_extrude(0.75 * t) { + polygon(points=[[-1,-1], [-1,3.2], [6.9, 3.2], [11.2,-1]]); + } + } + } + translate([2.2,0.75 * t - 2.4, 0]) { + rotate([90,-90,0]) { + linear_extrude(0.4 * t + 5) { + polygon(points=[[-1,-1], [-1,0.6], [3.3, 0.6], [4.9,-1]]); + } + } + } + } +} + +box(b, t, h);