diff --git a/.helperHerosKeepOut.sh b/.helperHerosKeepOut.sh index fe628f3..2cd3e09 100755 --- a/.helperHerosKeepOut.sh +++ b/.helperHerosKeepOut.sh @@ -5,6 +5,18 @@ FOLDER=STL/HeroesKeepOut mkdir -p STL mkdir -p $FOLDER +# ── Boxes ───────────────────────────────────────────────────────────── +echo "Rendering Box-Items..." +"$OPENSCAD" -o "$FOLDER/Box-Items.stl" "./HeroesKeepOut/Box-Items.scad" +"$OPENSCAD" -o "$FOLDER/Box-Items-Lid.stl" "./HeroesKeepOut/Box-Items-Lid.scad" + +echo "Rendering Box-Heroes..." +"$OPENSCAD" -o "$FOLDER/Box-Heroes.stl" "./HeroesKeepOut/Box-Heroes.scad" +"$OPENSCAD" -o "$FOLDER/Box-Heroes-Lid.stl" "./HeroesKeepOut/Box-Heroes-Lid.scad" + +echo "Rendering Box-Figures-Heroes..." +"$OPENSCAD" -o "$FOLDER/Box-Figures-Heroes.stl" "./HeroesKeepOut/Box-Figures-Heroes.scad" + # ── Cards ───────────────────────────────────────────────────────────── while IFS=',' read -r b t h name; do # Remove quotes around name, replace spaces with - @@ -19,6 +31,3 @@ 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/Box-Lid.scad b/Box-Lid.scad new file mode 100644 index 0000000..c0be3b9 --- /dev/null +++ b/Box-Lid.scad @@ -0,0 +1,44 @@ +include + +// Parameter for console overwrite +b = 30.0; +t = 30.0; + +module lid(b, t) { + bInner = b - 10; + tInner = t - 10; + + if (bInner >= 6 && tInner >= 6) { + difference() { + cube([ b, t, 2 ], 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, 2 ], false); + + sideCut(b,t); + + translate([b, 0, 0]) mirror([1, 0, 0]) sideCut(b,t); +} + +module sideCut(b,t) { + difference() { + translate([0,0,2]) cube([3, 0.75 * t - 2.5,6.6], false); + + translate([2.3,t/4+2,0.5]) rotate([-90,-90,0]) linear_extrude(0.5 * t) polygon(points=[ + [-1,-1], + [-1,1], + [7, 1], + [5.1,-1] + ]); + } + + translate([0,0,2]) cube([1.4, t, 3.4], false); +} + +lid(b, t); diff --git a/Box.scad b/Box.scad index 07311e4..d11df51 100644 --- a/Box.scad +++ b/Box.scad @@ -3,82 +3,71 @@ include // Parameter for console overwrite b = 30.0; t = 30.0; -h = 30.0; +h = 20.0; module box(b, t, h) { difference() { // base cuboid( - [ b, t, h], + [ b, t, h - 2], anchor = [ -1, -1, -1 ], rounding = 1, - edges = [ TOP, FRONT + LEFT, FRONT + RIGHT, BACK + LEFT, BACK + RIGHT ] + 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 ] - ); - } + 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); - } - } - } + sideCut(t); // left lower + translate([0, 0, h - 2]) mirror([0, 0, 1]) sideCut(t); // left upper + translate([b, 0, 0]) mirror([1, 0, 0]) sideCut(t); // right lower + translate([b, 0, h - 2]) mirror([1, 0, 0]) mirror([0, 0, 1]) sideCut(t); // right upper } } -module sideCut(b,t) { - translate([0,-1,0]) { - rotate([-90,-90,0]) { - linear_extrude(t/4+4) { - polygon(points=[[-1,-1], [-1,1.85], [3.35, 1.85], [6.35,-1]]); - } - } - } +module sideCut(t) { + translate([0,-1,0]) rotate([-90,-90,0]) linear_extrude(t/4+4) polygon(points=[ + [-1,-1], + [-1,2.1], + [3.05, 2.1], + [6.35,-1] + ]); difference() { - translate([0,t/4+2,0]) { - rotate([-90,-90,0]) { - linear_extrude(0.75 * t) { - polygon(points=[[-1,-1], [-1,3.45], [7.15, 3.45], [11.45,-1]]); - } - } - } + translate([0,t/4+2,0]) rotate([-90,-90,0]) linear_extrude(0.75 * t) polygon(points=[ + [-1,-1], + [-1,3.45], + [7.15, 3.45], + [11.45,-1] + ]); - translate([2.45,0.75 * t - 2.4, 0]) { - rotate([90,-90,0]) { - linear_extrude(0.4 * t + 5) { - polygon(points=[[-1,-1], [-1,0.35], [3.05, 0.35], [4.65,-1]]); - } - } - } + translate([2.45,0.75 * t - 2.4, 0]) rotate([90,-90,0]) linear_extrude(0.4 * t + 5) polygon(points=[ + [-1,-1], + [-1,0.35], + [3.05, 0.35], + [4.65,-1] + ]); } } -box(b, t, h - 2); +box(b, t, h); diff --git a/BoxLid.scad b/BoxLid.scad deleted file mode 100644 index fc62079..0000000 --- a/BoxLid.scad +++ /dev/null @@ -1,58 +0,0 @@ -include - -// Parameter for console overwrite -b = 30.0; -t = 30.0; - -module box(b, t) { - bInner = b - 10; - tInner = t - 10; - - if (bInner >= 6 && tInner >= 6) { - difference() { - cube([ b, t, 2 ], 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, 2 ], false); - } - sideCut(b,t); - - translate([b, 0, 0]) { - mirror([1, 0, 0]) { - sideCut(b,t); - } - } -} - -module sideCut(b,t) { - difference() { - translate([0,0,2]) { - cube([3, 0.75 * t - 2.5,6.6], false); - } - - translate([2.3,t/4+2,0.5]) { - rotate([-90,-90,0]) { - linear_extrude(0.5 * t) { - polygon(points=[[-1,-1], [-1,1], [7, 1], [5.1,-1]]); - } - } - } - } - - translate([0,0,2]) { - cube([1.4, t, 3.4], false); - } -} - -box(b, t); diff --git a/HeroesKeepOut/Box-Figures-Heroes.scad b/HeroesKeepOut/Box-Figures-Heroes.scad new file mode 100644 index 0000000..56018e9 --- /dev/null +++ b/HeroesKeepOut/Box-Figures-Heroes.scad @@ -0,0 +1,67 @@ +include + +difference() { + cube([ 175, 55, 37 ], false); + translate([ 1.5, 1.5, 1.5 ]) cube([ 172, 52, 36 ], false); + + // windows + window(16.875, 55, "Neuling"); + window(49.5, 55, "Krieger"); + window(83.25, 55, "Schurkin"); + window(113.5, 55, "Magier"); + window(149.25, 55, "Bogenschützin"); +} + +// deviders +translate([ 8.25, 1.5, 1.5]) cube([1, 52, 5.5], false); +translate([ 27.5, 1.5, 1.5]) cube([1, 52, 5.5], false); +translate([ 38, 1.5, 1.5]) cube([1, 52, 5.5], false); +translate([ 63, 1.5, 1.5]) cube([1, 52, 5.5], false); +translate([ 73.25, 1.5, 1.5]) cube([1, 52, 5.5], false); +translate([ 95.25, 1.5, 1.5]) cube([1, 52, 5.5], false); +translate([ 99.25, 1.5, 1.5]) cube([1, 52, 5.5], false); +translate([ 129.75, 1.5, 1.5]) cube([1, 52, 5.5], false); +translate([ 137.5, 1.5, 1.5]) cube([1, 52, 5.5], false); +translate([ 163, 1.5, 1.5]) cube([1, 52, 5.5], false); + +module window(x, y, name) { + windowHelper(x, 0, name); + windowHelper(x, y - 1, ""); +} + +module windowHelper(x, y, name) { + translate([ x - 10, y - 1, 12 ]) cuboid( + [ 23, 3.5, 26 ], + anchor = [-1, -1, -1], + rounding = 5, + edges = [ + BOTTOM + LEFT, + BOTTOM + RIGHT + ] + ); + + difference() { + translate([ x - 15, y - 1, 32 ]) cube([ 33, 3.5, 6 ], false); + translate([ x - 16, y - 1, 31 ]) cuboid( + [ 6, 3.5 , 6 ], + anchor = [-1, -1, -1], + rounding = 5, + edges = TOP + RIGHT + ); + + translate([ x + 13, y - 1, 31 ]) cuboid( + [ 6, 3.5 , 6 ], + anchor = [-1, -1, -1], + rounding = 5, + edges = TOP + LEFT + ); + } + + translate([ x + 1.5, y + 0.6, 6 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( + name, + size = 4, + font = "Arial:style=Bold", + halign="center", + valign="center" + ); +} diff --git a/HeroesKeepOut/Box-Heroes-Lid.scad b/HeroesKeepOut/Box-Heroes-Lid.scad new file mode 100644 index 0000000..5871168 --- /dev/null +++ b/HeroesKeepOut/Box-Heroes-Lid.scad @@ -0,0 +1,11 @@ +include +use <../Box-Lid.scad> + +difference() { + union() { + lid(140, 38); + translate([54.95, 21.2, 0]) cube([85.1, 16.8, 2], false); // frame area around card pocket + } + + translate([58.75, 26, -1]) cube([81.4, 13, 41], false); // clean area for card pocket +} diff --git a/HeroesKeepOut/Box-Heroes.scad b/HeroesKeepOut/Box-Heroes.scad index eab965e..64e71c8 100644 --- a/HeroesKeepOut/Box-Heroes.scad +++ b/HeroesKeepOut/Box-Heroes.scad @@ -1,68 +1,40 @@ include +use <../Box.scad> -// Parameter for console overwrite -b = 178; -t = 38; -h = 20; - -module box(b, t, h) { +difference() { 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); + // base + cuboid( + [ 140, 38, 18], + anchor = [ -1, -1, -1 ], + rounding = 1, + edges = [ + TOP, + FRONT + LEFT, + FRONT + RIGHT, + BACK + LEFT, + BACK + RIGHT + ] + ); } + + sideCut(43); // left lower + translate([0, 0, 18]) mirror([0, 0, 1]) sideCut(43); // left upper + translate([140, 0, 0]) mirror([1, 0, 0]) sideCut(43); // right lower + translate([140, 0, 18]) mirror([1, 0, 0]) mirror([0, 0, 1]) sideCut(43); // right upper + + // inner + translate([16.5, 18.5, 7]) cylinder(h = 12, r = 13, center = false); + translate([9.5, -1, 7]) cube([14, 46, 18.5], false); + translate([43, 18.5, 7]) cylinder(h = 12, r = 13, center = false); + translate([36, -1, 7]) cube([14, 46, 18.5], false); + translate([70, 24.5, 7]) cylinder(h = 12, r = 13, center = false); + translate([63, -1, 7]) cube([14, 46, 18.5], false); + translate([97, 24.5, 7]) cylinder(h = 12, r = 13, center = false); + translate([90, -1, 7]) cube([14, 46, 18.5], false); + translate([123.5, 24.5, 7]) cylinder(h = 12, r = 13, center = false); + translate([116.5, -1, 7]) cube([14, 46, 18.5], false); + + // clean area for card pocket + translate([58.75, -1, -1]) cube([81.4, 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 index 8155de8..0cfc3d8 100644 --- a/HeroesKeepOut/Box-Items-Lid.scad +++ b/HeroesKeepOut/Box-Items-Lid.scad @@ -1,66 +1,11 @@ include +use <../Box-Lid.scad> -// 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); +difference() { + union() { + lid(178, 38); + translate([92.95, 21.2, 0]) cube([85.1, 16.8, 2], false); // frame area around card pocket } + + translate([96.75, 26, -1]) cube([81.4, 13, 41], false); // clean area for card pocket } - - // 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 index 0b152e0..37be79b 100644 --- a/HeroesKeepOut/Box-Items.scad +++ b/HeroesKeepOut/Box-Items.scad @@ -1,118 +1,54 @@ include +use <../Box.scad> -// Parameter for console overwrite -b = 178; -t = 38; -h = 20; +difference() { + box(178, 38, 20); + translate([96.75, -1, -1]) cube([79.4, 13, 41], false); // clean area for card pocket +} -module box(b, t, h) { - difference() { +// deviders +translate([154, 12, 1.5]) cube([1, 24.5, 16.5], false); +translate([129, 12, 1.5]) cube([1, 24.5, 16.5], false); +translate([104, 12, 1.5]) cube([1, 24.5, 16.5], false); +translate([79, 1.5, 1.5]) cube([1, 35, 16.5], false); +translate([54, 1.5, 1.5]) cube([1, 35, 16.5], false); + +// card pocket +difference() { + translate([96.75, 0, 0]) { 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 ]); - } + cube([79.4, 12, 40], false); + translate([1.5, -1, 1.5]) cube([76.4, 11.5, 41], false); } - // 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); - } - } - } + translate([1.5, 0, 1.5]) cuboid( + [6, 1.5, 38.5], + anchor = [-1, -1, -1], + rounding = 5, + edges = TOP + RIGHT + ); - // clean area for card pocket - translate([b- 79, -1, -1]) { - cube([77.4, 13, 41], false); - } - } + translate([71.9, 0, 1.5]) cuboid( + [6, 1.5, 38.5], + anchor = [-1, -1, -1], + rounding = 5, edges = TOP + LEFT + ); - // 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]); - } + cube([64.4, 1.5, 11], false); + translate([0, -1, 6]) cuboid( + [64.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]]); - } - } - } - } + translate([178, 0, 0]) mirror([1, 0, 0]) sideCut(43); } - -box(b, t, h);