cleanup & figures big & Tokens

This commit is contained in:
2026-05-07 10:29:33 +02:00
parent bd6ea68d9a
commit b83e268a56
10 changed files with 410 additions and 139 deletions

View File

@@ -0,0 +1,86 @@
include <BOSL2/std.scad>
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"
);
}

View File

@@ -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

View File

@@ -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,

View File

@@ -0,0 +1,147 @@
include <BOSL2/std.scad>
// 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);

View File

@@ -1,11 +0,0 @@
include <BOSL2/std.scad>
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
}

View File

@@ -1,40 +0,0 @@
include <BOSL2/std.scad>
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);
}

View File

@@ -0,0 +1,45 @@
include <BOSL2/std.scad>
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);
}