diff --git a/.helperHerosKeepOut.sh b/.helperHerosKeepOut.sh index 2cd3e09..680d327 100755 --- a/.helperHerosKeepOut.sh +++ b/.helperHerosKeepOut.sh @@ -1,33 +1,56 @@ OPENSCAD="openscad" -SCAD_FILE="./CardHolder.scad" FOLDER=STL/HeroesKeepOut mkdir -p STL mkdir -p $FOLDER # ── Boxes ───────────────────────────────────────────────────────────── +mkdir -p $FOLDER/Box 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" +"$OPENSCAD" -o "$FOLDER/Box/Box-Items.stl" "./HeroesKeepOut/Box-Items.scad" +"$OPENSCAD" -o "$FOLDER/Box/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-Tokens..." +"$OPENSCAD" -o "$FOLDER/Box/Box-Tokens.stl" "./HeroesKeepOut/Box-Tokens.scad" +"$OPENSCAD" -o "$FOLDER/Box/Box-Tokens-Lid.stl" "./HeroesKeepOut/Box-Items-Lid.scad" echo "Rendering Box-Figures-Heroes..." -"$OPENSCAD" -o "$FOLDER/Box-Figures-Heroes.stl" "./HeroesKeepOut/Box-Figures-Heroes.scad" +"$OPENSCAD" -o "$FOLDER/Box/Box-Figure-Heroes.stl" "./HeroesKeepOut/Box-Figure-Heroes.scad" -# ── Cards ───────────────────────────────────────────────────────────── -while IFS=',' read -r b t h name; do +echo "Rendering Box-Figures-Big..." +"$OPENSCAD" -o "$FOLDER/Box/Box-Figure-Big.stl" "./HeroesKeepOut/Box-Figure-Big.scad" + +echo "Rendering Box-Figures-Monster-1..." +"$OPENSCAD" -o "$FOLDER/Box/Box-Figure-Monster-1.stl" "./HeroesKeepOut/Box-Figure-Monster-1.scad" + +SCAD_FILE="./HeroesKeepOut/Box-Figure.scad" +while IFS=',' read -r x y z name; do # Remove quotes around name, replace spaces with - label=$(printf '%s' "$name" | sed 's/"//g; s/ /-/g') - output="$FOLDER/Cards-$label.stl" + output="$FOLDER/Box/Box-Figure-$label.stl" echo "Rendering $output..." "$OPENSCAD" \ - -D "b=$b" \ - -D "t=$t" \ - -D "h=$h" \ + -D "x=$x" \ + -D "y=$y" \ + -D "z=$z" \ -D "name=\"$name\"" \ -o "$output" "$SCAD_FILE" -done <./HeroesKeepOut/cardConfigs.txt +done <./HeroesKeepOut/Box-Figure-Configs.txt + +# ── Cards ───────────────────────────────────────────────────────────── +SCAD_FILE="./CardHolder.scad" +mkdir -p $FOLDER/Cards +while IFS=',' read -r b t h name; do + # Remove quotes around name, replace spaces with - + label=$(printf '%s' "$name" | sed 's/"//g; s/ /-/g') + output="$FOLDER/Cards/Cards-$label.stl" + + echo "Rendering $output..." + "$OPENSCAD" \ + -D "x=$b" \ + -D "y=$t" \ + -D "z=$h" \ + -D "name=\"$name\"" \ + -o "$output" "$SCAD_FILE" +done <./HeroesKeepOut/Card-Configs.txt diff --git a/CardHolder.scad b/CardHolder.scad index c24f7e5..12272ff 100644 --- a/CardHolder.scad +++ b/CardHolder.scad @@ -1,85 +1,93 @@ include // Parameter for console overwrite -b = 58; -t = 3; -h = 88; +x = 58; +y = 5; +z = 88; name = "Cards"; -module cardHolder(b, t, h, name) { +cardHolder(x + 5, y + 3, z + 4, name); + +module cardHolder(x, y, z, name) { // floor - bInner = b - 10; - tInner = t - 10; - if (bInner >= 6 && tInner >= 6) { + xInner = x - 10; + yInner = y - 10; + if (xInner >= 6 && yInner >= 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); - } - } + cube([ x, y, 1.5 ], false); + + xSpace = 5 + (((xInner + 2) % 8) / 2); + xAmount = (((xInner + 2) - xSpace + 5) / 8); + ySpace = 5 + (((yInner + 2) % 8) / 2); + yAmount = (((yInner + 2) - ySpace + 5) / 8); + for (i = [0:xAmount - 1], j = [0:yAmount - 1]) translate([ xSpace + i * 8, ySpace + j * 8, -1 ]) cube([ 6, 6, 3.5 ], false); } - } else { - cube([ b, t, 1.5 ], false); - } + } else cube([ x, y, 1.5 ], false); // left - translate([ 0, 0, 1.5 ]) { - cuboid([ 1.5, t, h - 1.5 ], anchor = [ -1, -1, -1 ], - rounding = min(10, t - 1.5), edges = FRONT + TOP); - } + translate([ 0, 0, 1.5 ]) cuboid( + [ 1.5, y, z - 1.5 ], + anchor = [ -1, -1, -1 ], + rounding = min(10, y - 1.5), + edges = FRONT + TOP + ); // right - translate([ b - 1.5, 0, 1.5 ]) { - cuboid([ 1.5, t, h - 1.5 ], anchor = [ -1, -1, -1 ], - rounding = min(10, t - 1.5), edges = FRONT + TOP); - } + translate([ x - 1.5, 0, 1.5 ]) cuboid( + [ 1.5, y, z - 1.5 ], + anchor = [ -1, -1, -1 ], + rounding = min(10, y - 1.5), + edges = FRONT + TOP + ); // back - translate([ 1.5, t - 1.5, 1.5 ]) { - cuboid([ 10, 1.5, h -1.5], anchor = [ -1, -1, -1 ], rounding = 5, - edges = RIGHT + TOP); - translate([ b - 13, 0, 0 ]) { - cuboid([ 10, 1.5, h - 1.5 ], anchor = [ -1, -1, -1 ], rounding = 5, - edges = LEFT + TOP); - } - translate([ 10, 0, 0 ]) { - difference() { - difference() { - cube([ b - 23, 1.5, h - 1 ], false); - translate([ 0, -1, 15 ]) { - cuboid([ b - 23, 3, h - 12 ], anchor = [ -1, -1, -1 ], - rounding = 10, edges = [ LEFT + BOTTOM, RIGHT + BOTTOM ]); - } - } - translate([ -1, -1, 35 ]) { cube([ b - 21, 3, h - 20 ], false); } - } + translate([ 1.5, y - 1.5, 1.5 ]) { + cuboid( + [ 10, 1.5, z -1.5], + anchor = [ -1, -1, -1 ], + rounding = 5, + edges = RIGHT + TOP + ); + + translate([ x - 13, 0, 0 ]) cuboid( + [ 10, 1.5, z - 1.5 ], + anchor = [ -1, -1, -1 ], + rounding = 5, + edges = LEFT + TOP + ); + + translate([ 10, 0, 0 ]) difference() { + cube([ x - 23, 1.5, z - 1 ], false); + + translate([ 0, -1, 15 ]) cuboid( + [ x - 23, 3, z - 12 ], + anchor = [ -1, -1, -1 ], + rounding = 10, + edges = [ LEFT + BOTTOM, RIGHT + BOTTOM ] + ); + translate([ -1, -1, 35 ]) cube([ x - 21, 3, z - 20 ], false); } } // front translate([ 1, 0, 1 ]) { difference() { - cuboid([ 10, 1.5, h - 21 ], anchor = [ -1, -1, -1 ], rounding = 5, - edges = RIGHT + TOP); - translate([ 7.5, 0.4, 2.5 ]) { - rotate([ 0, -90, 90 ]) { - linear_extrude(height = 0.6) { - text(name, size = 5, font = "Arial:style=Bold"); - } - } - } - } - translate([ b - 12, 0, 0 ]) { - cuboid([ 10, 1.5, h - 21 ], anchor = [ -1, -1, -1 ], rounding = 5, - edges = LEFT + TOP); + cuboid( + [ 10, 1.5, z - 21 ], + anchor = [ -1, -1, -1 ], + rounding = 5, + edges = RIGHT + TOP + ); + + translate([ 7.5, 0.4, 2.5 ]) rotate([ 0, -90, 90 ]) linear_extrude(height = 0.6) text(name, size = 5, font = "Arial:style=Bold"); } + + translate([ x - 12, 0, 0 ]) cuboid( + [ 10, 1.5, z - 21 ], + anchor = [ -1, -1, -1 ], + rounding = 5, + edges = LEFT + TOP + ); } } - -cardHolder(b + 5, t + 3, h + 4, name); diff --git a/HeroesKeepOut/Box-Figure-Big.scad b/HeroesKeepOut/Box-Figure-Big.scad new file mode 100644 index 0000000..d68f239 --- /dev/null +++ b/HeroesKeepOut/Box-Figure-Big.scad @@ -0,0 +1,86 @@ +include + +boxHelper(45, 53, "Reaper", "Zyklop", "Megaslime"); +translate([ 88.5, 39, 0 ]) zrot(180, cp=[0, 0, 0]) boxHelper(45, 53, "Drache", "Medusa", "Träumer"); + +module boxHelper(x, z, frontName, middleName, backName) { + difference() { + cube([ x, 39, z ], false); + translate([ 1.5, 1.5, 1.5 ]) cube([ x - 3, 36, z - 1 ], false); + + // windows + window(x / 2, 39, z, "Schleim", "Reaper"); + + // floor + xInner = x - 10; + yInner = 39 - 10; + + if (xInner >= 6 && yInner >= 6) { + xSpace = 5 + (((xInner + 2) % 8) / 2); + xAmount = (((xInner + 2) - xSpace + 5) / 8); + ySpace = 5 + (((yInner + 2) % 8) / 2); + yAmount = (((yInner + 2) - ySpace + 5) / 8); + + for (i = [0:xAmount - 1], j = [0:yAmount - 1]) translate([ xSpace + i * 8, ySpace + j * 8, -1 ]) cube([ 6, 6, 3.5 ], false); + } + + translate([ 0.6, 19.5, z / 2 ]) rotate([ 0, -90, 0 ]) linear_extrude(height = 1.6) text( + middleName, + size = 4, + font = "Arial:style=Bold", + halign="center" + ); + } + + difference() { + union() { + translate([ 0, 12.5, 0 ]) cube([ x, 1.5, z ], false); + translate([ 0, 25, 0 ]) cube([ x, 1.5, z ], false); + } + + windowHelper(x / 2, 12.5, z, ""); + windowHelper(x / 2, 25, z, ""); + } +} + +module window(x, y, z, frontName, backName) { + windowHelper(x, 0, z, frontName); + zrot(180, cp=[x, y / 2, 0]) windowHelper(x, 0, z, backName); +} + +module windowHelper(x, y, z, name) { + translate([ 7, y - 1, 8 ]) cuboid( + [ 2 * (x - 7), 3.5, z - 8 ], + anchor = [-1, -1, -1], + rounding = 3, + edges = [ + BOTTOM + LEFT, + BOTTOM + RIGHT + ] + ); + + difference() { + translate([ 1.5, y - 1, z - 5 ]) cube([ 2 * (x - 1.5), 3.5, 6 ], false); + translate([ 1, y - 1, z - 6 ]) cuboid( + [ 6, 3.5 , 6 ], + anchor = [-1, -1, -1], + rounding = 5, + edges = TOP + RIGHT + ); + + translate([ 2 * x - 7, y - 1, z - 6 ]) cuboid( + [ 6, 3.5 , 6 ], + anchor = [-1, -1, -1], + rounding = 5, + edges = TOP + LEFT + ); + } + + translate([ x, y + 0.6, 4 ]) 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-Figure-Configs.txt b/HeroesKeepOut/Box-Figure-Configs.txt new file mode 100644 index 0000000..f352fcf --- /dev/null +++ b/HeroesKeepOut/Box-Figure-Configs.txt @@ -0,0 +1,13 @@ +32,83,28.5,Schleim +31,73,34.5,Unholde +28,63,29.5,Skelette +29,53,27.5,Echsenvolk +39,23,33.5,Hexen +38,33,31.5,Geister +31,43,34.5,Gnolle +29,83,26.5,Pilze +38,53,27,Spinne +30,93,25.5,Rattenvolk +27,43,26.5,Hellgrün +51,45,33.5,Werwolf +55,25,35.5,Vampir diff --git a/HeroesKeepOut/Box-Figures-Heroes.scad b/HeroesKeepOut/Box-Figure-Heroes.scad similarity index 71% rename from HeroesKeepOut/Box-Figures-Heroes.scad rename to HeroesKeepOut/Box-Figure-Heroes.scad index 56018e9..f8aba99 100644 --- a/HeroesKeepOut/Box-Figures-Heroes.scad +++ b/HeroesKeepOut/Box-Figure-Heroes.scad @@ -5,11 +5,11 @@ difference() { 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"); + window(16.875, 55, 37, "Neuling"); + window(49.5, 55, 37, "Krieger"); + window(83.25, 55, 37, "Schurkin"); + window(113.5, 55, 37, "Magier"); + window(149.25, 55, 37, "Bogenschützin"); } // deviders @@ -24,14 +24,14 @@ 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 window(x, y, z, name) { + windowHelper(x, 0, z, name); + windowHelper(x, y - 1, z, ""); } -module windowHelper(x, y, name) { +module windowHelper(x, y, z, name) { translate([ x - 10, y - 1, 12 ]) cuboid( - [ 23, 3.5, 26 ], + [ 23, 3.5, z - 12 ], anchor = [-1, -1, -1], rounding = 5, edges = [ @@ -41,15 +41,15 @@ module windowHelper(x, y, name) { ); difference() { - translate([ x - 15, y - 1, 32 ]) cube([ 33, 3.5, 6 ], false); - translate([ x - 16, y - 1, 31 ]) cuboid( + translate([ x - 15, y - 1, z - 5 ]) cube([ 33, 3.5, 6 ], false); + translate([ x - 16, y - 1, z - 6 ]) cuboid( [ 6, 3.5 , 6 ], anchor = [-1, -1, -1], rounding = 5, edges = TOP + RIGHT ); - translate([ x + 13, y - 1, 31 ]) cuboid( + translate([ x + 13, y - 1, z - 6 ]) cuboid( [ 6, 3.5 , 6 ], anchor = [-1, -1, -1], rounding = 5, diff --git a/HeroesKeepOut/Box-Figure-Monster-1.scad b/HeroesKeepOut/Box-Figure-Monster-1.scad new file mode 100644 index 0000000..4403e22 --- /dev/null +++ b/HeroesKeepOut/Box-Figure-Monster-1.scad @@ -0,0 +1,147 @@ +include + +// Parameter for console overwrite +x = 167; +y = 84; +z = 35.5; +name = "Vampir"; + +module figureHolder(x, y, z, name) { + difference() { + cube([ x, y, z ], false); + translate([ 1.5, 1.5, 1.5 ]) cube([ x - 3, y - 3, z - 1 ], false); + + // windows + window(32 / 2, y, z, "Schleim"); + + // floor + xInner = x - 10; + yInner = y - 10; + + if (xInner >= 6 && yInner >= 6) { + xSpace = 5 + (((xInner + 2) % 8) / 2); + xAmount = (((xInner + 2) - xSpace + 5) / 8); + ySpace = 5 + (((yInner + 2) % 8) / 2); + yAmount = (((yInner + 2) - ySpace + 5) / 8); + + for (i = [0:xAmount - 1], j = [0:yAmount - 1]) translate([ xSpace + i * 8, ySpace + j * 8, -1 ]) cube([ 6, 6, 3.5 ], false); + } + + translate([ 91 / 2 + 32, 0.6, 4 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( + "Rattenvolk", + size = 4, + font = "Arial:style=Bold", + halign="center", + valign="center" + ); + translate([ 41 / 2 + 124.5, 0.6, 4 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( + "Unholde", + size = 4, + font = "Arial:style=Bold", + halign="center", + valign="center" + ); + translate([ 71 / 2 + 32, 0.6, 12 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( + "Unholde", + size = 4, + font = "Arial:style=Bold", + halign="center", + valign="center" + ); + translate([ 61 / 2 + 104.5, 0.6, 12 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( + "Skelette", + size = 4, + font = "Arial:style=Bold", + halign="center", + valign="center" + ); + translate([ 51 / 2 + 32, 0.6, 20 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( + "Echsenvolk", + size = 4, + font = "Arial:style=Bold", + halign="center", + valign="center" + ); + translate([ 36 / 2 + 84.5, 0.6, 20 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( + "Hexen", + size = 4, + font = "Arial:style=Bold", + halign="center", + valign="center" + ); + translate([ 41 / 2 + 122, 0.6, 20 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( + "Feen", + size = 4, + font = "Arial:style=Bold", + halign="center", + valign="center" + ); + } + + // deviders + translate([ 30.5, 1.5, 0 ]) cube([ 1.5, y - 3, 6.5], false); // Schleim + translate([ 32, 5, 0 ]) cube([ 91, 1.5, 6.5], false); // Rattenvolk + translate([ 32, 19.5, 0 ]) cube([ 91, 1.5, 6.5], false); // Rattenvolk + translate([ 123, 5, 0 ]) cube([ 1.5, 21, 6.5], false); // Rattenvolk + translate([ 124.5, 6, 0 ]) cube([ 41, 1.5, 6.5], false); // Unholde + translate([ 124.5, 24.5, 0 ]) cube([ 41, 1.5, 6.5], false); // Unholde + translate([ 32, 24, 0 ]) cube([ 71, 1.5, 6.5], false); // Gnolle + translate([ 32, 50.5, 0 ]) cube([ 71, 1.5, 6.5], false); // Gnolle + translate([ 103, 24, 0 ]) cube([ 1.5, 31.5, 6.5], false); // Gnolle + translate([ 104.5, 28, 0 ]) cube([ 61, 1.5, 6.5], false); // Skelette + translate([ 104.5, 55.5, 0 ]) cube([ 61, 1.5, 6.5], false); // Skelette + translate([ 32, 76, 0 ]) cube([ 51, 1.5, 6.5], false); // Echsenvolk + translate([ 83, 52, 0 ]) cube([ 1.5, 27.5, 6.5], false); // Echsenvolk + translate([ 84.5, 55.5, 0 ]) cube([ 36, 1.5, 6.5], false); // Hexen + translate([ 84.5, 78, 0 ]) cube([ 36, 1.5, 6.5], false); // Hexen + translate([ 120.5, 57, 0 ]) cube([ 1.5, 27, 6.5], false); // Hexen + translate([ 122, 81, 0 ]) cube([ 41, 1.5, 6.5], false); // Feen + translate([ 163, 57, 0 ]) cube([ 1.5, 27, 6.5], false); // Feen + + /* + */ +} + +module window(x, y, z, name) { + windowHelper(x, 0, z, name); + windowHelper(x, y - 1, z, ""); +} + +module windowHelper(x, y, z, name) { + translate([ 7, y - 1, 8 ]) cuboid( + [ 2 * (x - 7), 3.5, z - 8 ], + anchor = [-1, -1, -1], + rounding = 3, + edges = [ + BOTTOM + LEFT, + BOTTOM + RIGHT + ] + ); + + difference() { + translate([ 1.5, y - 1, z - 5 ]) cube([ 2 * (x - 1.5), 3.5, 6 ], false); + translate([ 1, y - 1, z - 6 ]) cuboid( + [ 6, 3.5 , 6 ], + anchor = [-1, -1, -1], + rounding = 5, + edges = TOP + RIGHT + ); + + translate([ 2 * x - 7, y - 1, z - 6 ]) cuboid( + [ 6, 3.5 , 6 ], + anchor = [-1, -1, -1], + rounding = 5, + edges = TOP + LEFT + ); + } + + translate([ x, y + 0.6, 4 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text( + name, + size = 4, + font = "Arial:style=Bold", + halign="center", + valign="center" + ); +} + +figureHolder(x, y, z, name); diff --git a/HeroesKeepOut/Box-Heroes-Lid.scad b/HeroesKeepOut/Box-Heroes-Lid.scad deleted file mode 100644 index 5871168..0000000 --- a/HeroesKeepOut/Box-Heroes-Lid.scad +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index 64e71c8..0000000 --- a/HeroesKeepOut/Box-Heroes.scad +++ /dev/null @@ -1,40 +0,0 @@ -include -use <../Box.scad> - -difference() { - difference() { - // 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); -} diff --git a/HeroesKeepOut/Box-Tokens.scad b/HeroesKeepOut/Box-Tokens.scad new file mode 100644 index 0000000..1823444 --- /dev/null +++ b/HeroesKeepOut/Box-Tokens.scad @@ -0,0 +1,45 @@ +include +use <../Box.scad> + +difference() { + difference() { + // base + cuboid( + [ 178, 38, 29.5], + anchor = [ -1, -1, -1 ], + rounding = 1, + edges = [ + TOP, + FRONT + LEFT, + FRONT + RIGHT, + BACK + LEFT, + BACK + RIGHT + ] + ); + } + + sideCut(43); // left lower + translate([ 0, 0, 29.5 ]) mirror([ 0, 0, 1 ]) sideCut(43); // left upper + translate([ 178, 0, 0 ]) mirror([ 1, 0, 0 ]) sideCut(43); // right lower + translate([ 178, 0, 29.5 ]) mirror([ 1, 0, 0 ]) mirror([ 0, 0, 1 ]) sideCut(43); // right upper + + // inner + translate([ 6 , 19, 16.5 ]) rotate(90, [ 0, 1, 0 ]) cylinder(h = 51, r = 13, center = false); // Helden + translate([ 6 , 6, 16.5 ]) cube([ 51, 26, 15 ]); // Helden + translate([ 59.5 , 19, 14 ]) rotate(90, [ 0, 1, 0 ]) cylinder(h = 21, r = 13, center = false); // Portale + translate([ 59.5 , 6, 16.5 ]) cube([ 21, 26, 15 ]); // Portale + translate([ 84 , 19, 14 ]) rotate(90, [ 0, 1, 0 ]) cylinder(h = 11, r = 13, center = false); // Rest rund + translate([ 84 , 6, 16.5 ]) cube([ 11, 26, 15 ]); // Rest rund + translate([100, 15.5, 4.5]) cube([ 11, 19, 26 ], false); // Rest + translate([110, 14.5, 1.5]) cube([ 2, 21, 29 ], false); // Rest + translate([118, 14.5, 8.5]) cube([ 15, 21, 22 ], false); // Fässer + translate([138, 13.5, 1.5]) cube([ 33, 23, 29 ], false); // Truhe + + union() { + translate([4, 19, 29.5]) rotate(90, [ 0, 1, 0 ]) cylinder(h = 92.75, r = 7.5, center = false); + translate([95, 25, 29.5]) rotate(90, [ 0, 1, 0 ]) cylinder(h = 79, r = 7.5, center = false); + } + + // clean area for card pocket + translate([ 96.75, -1, -1 ]) cube([ 81.4, 13, 41 ], false); +} diff --git a/HeroesKeepOut/cardConfigs.txt b/HeroesKeepOut/Card-Configs.txt similarity index 100% rename from HeroesKeepOut/cardConfigs.txt rename to HeroesKeepOut/Card-Configs.txt