Compare commits
9 Commits
9db0473369
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
7ee5c48e98
|
|||
|
bcbcc87ed8
|
|||
|
a91812def9
|
|||
|
fc86c842d8
|
|||
|
961793c975
|
|||
|
2074bd832e
|
|||
|
b83e268a56
|
|||
|
bd6ea68d9a
|
|||
|
6c4deab335
|
@@ -1,24 +1,56 @@
|
|||||||
OPENSCAD="openscad"
|
OPENSCAD="openscad"
|
||||||
SCAD_FILE="./CardHolder.scad"
|
|
||||||
FOLDER=STL/HeroesKeepOut
|
FOLDER=STL/HeroesKeepOut
|
||||||
|
|
||||||
mkdir -p STL
|
mkdir -p STL
|
||||||
mkdir -p $FOLDER
|
mkdir -p $FOLDER
|
||||||
|
|
||||||
# ── Cards ─────────────────────────────────────────────────────────────
|
# ── Boxes ─────────────────────────────────────────────────────────────
|
||||||
while IFS=',' read -r b t h name; do
|
mkdir -p $FOLDER/Box
|
||||||
|
echo "Rendering Box-Items..."
|
||||||
|
"$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-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/Box-Figure-Heroes.stl" "./HeroesKeepOut/Box-Figure-Heroes.scad"
|
||||||
|
|
||||||
|
echo "Rendering Box-Figures-Big..."
|
||||||
|
"$OPENSCAD" -o "$FOLDER/Box/Box-Figure-Big.stl" "./HeroesKeepOut/Box-Figure-Big.scad"
|
||||||
|
|
||||||
|
echo "Rendering Box-Figures-Monsters..."
|
||||||
|
"$OPENSCAD" -o "$FOLDER/Box/Box-Figure-Monsters.stl" "./HeroesKeepOut/Box-Figure-Monsters.scad"
|
||||||
|
|
||||||
|
SCAD_FILE="./HeroesKeepOut/Box-Figure.scad"
|
||||||
|
while IFS=',' read -r x y z name; do
|
||||||
# Remove quotes around name, replace spaces with -
|
# Remove quotes around name, replace spaces with -
|
||||||
label=$(printf '%s' "$name" | sed 's/"//g; s/ /-/g')
|
label=$(printf '%s' "$name" | sed 's/"//g; s/ /-/g')
|
||||||
output="$FOLDER/Cards-$label.stl"
|
output="$FOLDER/Box/Box-Figure-$label.stl"
|
||||||
|
|
||||||
echo "Rendering $output..."
|
echo "Rendering $output..."
|
||||||
"$OPENSCAD" \
|
"$OPENSCAD" \
|
||||||
-D "b=$b" \
|
-D "x=$x" \
|
||||||
-D "t=$t" \
|
-D "y=$y" \
|
||||||
-D "h=$h" \
|
-D "z=$z" \
|
||||||
-D "name=\"$name\"" \
|
-D "name=\"$name\"" \
|
||||||
-o "$output" "$SCAD_FILE"
|
-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..."
|
echo "Rendering $output..."
|
||||||
"$OPENSCAD" -o "$output" "$SCAD_FILE"
|
"$OPENSCAD" \
|
||||||
|
-D "x=$b" \
|
||||||
|
-D "y=$t" \
|
||||||
|
-D "z=$h" \
|
||||||
|
-D "name=\"$name\"" \
|
||||||
|
-o "$output" "$SCAD_FILE"
|
||||||
|
done <./HeroesKeepOut/Card-Configs.txt
|
||||||
|
|||||||
44
Box-Lid.scad
Normal file
44
Box-Lid.scad
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
include <BOSL2/std.scad>
|
||||||
|
|
||||||
|
// Parameter for console overwrite
|
||||||
|
x = 30.0;
|
||||||
|
y = 30.0;
|
||||||
|
|
||||||
|
boxLid(x, y);
|
||||||
|
|
||||||
|
module boxLid(x, y) {
|
||||||
|
xInner = x - 10;
|
||||||
|
yInner = y - 10;
|
||||||
|
|
||||||
|
if (xInner >= 6 && yInner >= 6) {
|
||||||
|
difference() {
|
||||||
|
cube([ x, y, 2 ], 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([ x, y, 2 ], false);
|
||||||
|
|
||||||
|
sideCut(y);
|
||||||
|
|
||||||
|
translate([ x, 0, 0 ]) mirror([ 1, 0, 0 ]) sideCut(y);
|
||||||
|
}
|
||||||
|
|
||||||
|
module sideCut(y) {
|
||||||
|
difference() {
|
||||||
|
translate([0,0,2]) cube([3, 0.75 * y - 2.5,6.6], false);
|
||||||
|
|
||||||
|
translate([2.3,y/4+2,0.5]) rotate([-90,-90,0]) linear_extrude(0.5 * y) polygon(points=[
|
||||||
|
[-1,-1],
|
||||||
|
[-1,1],
|
||||||
|
[7, 1],
|
||||||
|
[5.1,-1]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([0,0,2]) cube([1.4, y, 3.4], false);
|
||||||
|
}
|
||||||
115
Box.scad
115
Box.scad
@@ -1,70 +1,73 @@
|
|||||||
include <BOSL2/std.scad>
|
include <BOSL2/std.scad>
|
||||||
|
|
||||||
// Parameter for console overwrite
|
// Parameter for console overwrite
|
||||||
b = 79.8;
|
x = 30.0;
|
||||||
t = 68.5;
|
y = 30.0;
|
||||||
h = 22.5;
|
z = 20.0;
|
||||||
|
|
||||||
module box(b, t, h) {
|
box(x, y, z);
|
||||||
|
|
||||||
|
module box(x, y, z) {
|
||||||
difference() {
|
difference() {
|
||||||
// base
|
// base
|
||||||
cuboid([ b, t, h], anchor = [ -1, -1, -1 ],rounding = 1,edges = [ TOP, FRONT + LEFT, FRONT + RIGHT, BACK + LEFT, BACK + RIGHT ]);
|
cuboid(
|
||||||
|
[ x, y, z - 2],
|
||||||
|
anchor = [ -1, -1, -1 ],
|
||||||
|
rounding = 1,
|
||||||
|
edges = [
|
||||||
|
TOP,
|
||||||
|
FRONT + LEFT,
|
||||||
|
FRONT + RIGHT,
|
||||||
|
BACK + LEFT,
|
||||||
|
BACK + RIGHT
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
// inner
|
// inner
|
||||||
translate([ 5, 1.5, 1.5 ]) {
|
translate([ 5, 1.5, 1.5 ]) cuboid(
|
||||||
cuboid([ b - 10, t - 3, h - 0.5 ], anchor = [ -1, -1, -1 ],
|
[ x - 10, y - 3, z - 0.5 ],
|
||||||
rounding = 8, edges = [ BOTTOM + FRONT, BOTTOM + LEFT, BOTTOM + BACK, BOTTOM + RIGHT, FRONT + LEFT, FRONT + RIGHT, BACK + LEFT, BACK + RIGHT ]);
|
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(y); // left lower
|
||||||
sideCut(b,t);
|
translate([0, 0, z - 2]) mirror([0, 0, 1]) sideCut(y); // left upper
|
||||||
// left upper
|
translate([x, 0, 0]) mirror([1, 0, 0]) sideCut(y); // right lower
|
||||||
translate([0, 0, h]) {
|
translate([x, 0, z - 2]) mirror([1, 0, 0]) mirror([0, 0, 1]) sideCut(y); // right upper
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module sideCut(b,t) {
|
module sideCut(y) {
|
||||||
translate([0,-1,0]) {
|
translate([0,-1,0]) rotate([-90,-90,0]) linear_extrude(y/4+4) polygon(points=[
|
||||||
rotate([-90,-90,0]) {
|
[-1,-1],
|
||||||
linear_extrude(t/4+4) {
|
[-1,2.1],
|
||||||
polygon(points=[[-1,-1], [-1,1.6], [3.1, 1.6], [6.1,-1]]);
|
[3.05, 2.1],
|
||||||
}
|
[6.35,-1]
|
||||||
}
|
]);
|
||||||
}
|
|
||||||
difference() {
|
difference() {
|
||||||
translate([0,t/4+2,0]) {
|
translate([0,y/4+2,0]) rotate([-90,-90,0]) linear_extrude(0.75 * y) polygon(points=[
|
||||||
rotate([-90,-90,0]) {
|
[-1,-1],
|
||||||
linear_extrude(0.75 * t) {
|
[-1,3.45],
|
||||||
polygon(points=[[-1,-1], [-1,3.2], [6.9, 3.2], [11.2,-1]]);
|
[7.15, 3.45],
|
||||||
}
|
[11.45,-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 + 5, t + 3, h + 4);
|
translate([2.45,0.75 * y - 2.4, 0]) rotate([90,-90,0]) linear_extrude(0.4 * y + 5) polygon(points=[
|
||||||
|
[-1,-1],
|
||||||
|
[-1,0.35],
|
||||||
|
[3.05, 0.35],
|
||||||
|
[4.65,-1]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
52
BoxLid.scad
52
BoxLid.scad
@@ -1,52 +0,0 @@
|
|||||||
include <BOSL2/std.scad>
|
|
||||||
|
|
||||||
// Parameter for console overwrite
|
|
||||||
b = 79.8;
|
|
||||||
t = 68.5;
|
|
||||||
|
|
||||||
module box(b, t) {
|
|
||||||
bInner = b - 10;
|
|
||||||
tInner = t - 10;
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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 + 5, t + 3);
|
|
||||||
132
CardHolder.scad
132
CardHolder.scad
@@ -1,85 +1,93 @@
|
|||||||
include <BOSL2/std.scad>
|
include <BOSL2/std.scad>
|
||||||
|
|
||||||
// Parameter for console overwrite
|
// Parameter for console overwrite
|
||||||
b = 58;
|
x = 58;
|
||||||
t = 3;
|
y = 5;
|
||||||
h = 88;
|
z = 88;
|
||||||
name = "Cards";
|
name = "Cards";
|
||||||
|
|
||||||
module cardHolder(b, t, h, name) {
|
cardHolder(x + 5, y + 3, z + 4, name);
|
||||||
|
|
||||||
|
module cardHolder(x, y, z, name) {
|
||||||
|
|
||||||
// floor
|
// floor
|
||||||
bInner = b - 10;
|
xInner = x - 10;
|
||||||
tInner = t - 10;
|
yInner = y - 10;
|
||||||
if (bInner >= 6 && tInner >= 6) {
|
if (xInner >= 6 && yInner >= 6) {
|
||||||
difference() {
|
difference() {
|
||||||
cube([ b, t, 1.5 ], false);
|
cube([ x, y, 1.5 ], false);
|
||||||
bSpace = 5 + (((bInner + 2) % 8) / 2);
|
|
||||||
bAmount = (((bInner + 2) - bSpace + 5) / 8);
|
xSpace = 5 + (((xInner + 2) % 8) / 2);
|
||||||
tSpace = 5 + (((tInner + 2) % 8) / 2);
|
xAmount = (((xInner + 2) - xSpace + 5) / 8);
|
||||||
tAmount = (((tInner + 2) - tSpace + 5) / 8);
|
ySpace = 5 + (((yInner + 2) % 8) / 2);
|
||||||
for (i = [0:bAmount - 1], j = [0:tAmount - 1]) {
|
yAmount = (((yInner + 2) - ySpace + 5) / 8);
|
||||||
translate([ bSpace + i * 8, tSpace + j * 8, -1 ]) {
|
for (i = [0:xAmount - 1], j = [0:yAmount - 1]) translate([ xSpace + i * 8, ySpace + j * 8, -1 ]) cube([ 6, 6, 3.5 ], false);
|
||||||
cube([ 6, 6, 3.5 ], false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
cube([ b, t, 1.5 ], false);
|
|
||||||
}
|
}
|
||||||
|
} else cube([ x, y, 1.5 ], false);
|
||||||
|
|
||||||
// left
|
// left
|
||||||
translate([ 0, 0, 1.5 ]) {
|
translate([ 0, 0, 1.5 ]) cuboid(
|
||||||
cuboid([ 1.5, t, h - 1.5 ], anchor = [ -1, -1, -1 ],
|
[ 1.5, y, z - 1.5 ],
|
||||||
rounding = min(10, t - 1.5), edges = FRONT + TOP);
|
anchor = [ -1, -1, -1 ],
|
||||||
}
|
rounding = min(10, y - 1.5),
|
||||||
|
edges = FRONT + TOP
|
||||||
|
);
|
||||||
|
|
||||||
// right
|
// right
|
||||||
translate([ b - 1.5, 0, 1.5 ]) {
|
translate([ x - 1.5, 0, 1.5 ]) cuboid(
|
||||||
cuboid([ 1.5, t, h - 1.5 ], anchor = [ -1, -1, -1 ],
|
[ 1.5, y, z - 1.5 ],
|
||||||
rounding = min(10, t - 1.5), edges = FRONT + TOP);
|
anchor = [ -1, -1, -1 ],
|
||||||
}
|
rounding = min(10, y - 1.5),
|
||||||
|
edges = FRONT + TOP
|
||||||
|
);
|
||||||
|
|
||||||
// back
|
// back
|
||||||
translate([ 1.5, t - 1.5, 1.5 ]) {
|
translate([ 1.5, y - 1.5, 1.5 ]) {
|
||||||
cuboid([ 10, 1.5, h -1.5], anchor = [ -1, -1, -1 ], rounding = 5,
|
cuboid(
|
||||||
edges = RIGHT + TOP);
|
[ 10, 1.5, z -1.5],
|
||||||
translate([ b - 13, 0, 0 ]) {
|
anchor = [ -1, -1, -1 ],
|
||||||
cuboid([ 10, 1.5, h - 1.5 ], anchor = [ -1, -1, -1 ], rounding = 5,
|
rounding = 5,
|
||||||
edges = LEFT + TOP);
|
edges = RIGHT + TOP
|
||||||
}
|
);
|
||||||
translate([ 10, 0, 0 ]) {
|
|
||||||
difference() {
|
translate([ x - 13, 0, 0 ]) cuboid(
|
||||||
difference() {
|
[ 10, 1.5, z - 1.5 ],
|
||||||
cube([ b - 23, 1.5, h - 1 ], false);
|
anchor = [ -1, -1, -1 ],
|
||||||
translate([ 0, -1, 15 ]) {
|
rounding = 5,
|
||||||
cuboid([ b - 23, 3, h - 12 ], anchor = [ -1, -1, -1 ],
|
edges = LEFT + TOP
|
||||||
rounding = 10, edges = [ LEFT + BOTTOM, RIGHT + BOTTOM ]);
|
);
|
||||||
}
|
|
||||||
}
|
translate([ 10, 0, 0 ]) difference() {
|
||||||
translate([ -1, -1, 35 ]) { cube([ b - 21, 3, h - 20 ], false); }
|
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
|
// front
|
||||||
translate([ 1, 0, 1 ]) {
|
translate([ 1, 0, 1 ]) {
|
||||||
difference() {
|
difference() {
|
||||||
cuboid([ 10, 1.5, h - 21 ], anchor = [ -1, -1, -1 ], rounding = 5,
|
cuboid(
|
||||||
edges = RIGHT + TOP);
|
[ 10, 1.5, z - 21 ],
|
||||||
translate([ 7.5, 0.4, 2.5 ]) {
|
anchor = [ -1, -1, -1 ],
|
||||||
rotate([ 0, -90, 90 ]) {
|
rounding = 5,
|
||||||
linear_extrude(height = 0.6) {
|
edges = RIGHT + TOP
|
||||||
text(name, size = 5, font = "Arial:style=Bold");
|
);
|
||||||
}
|
|
||||||
}
|
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cardHolder(b + 5, t + 3, h + 4, name);
|
translate([ x - 12, 0, 0 ]) cuboid(
|
||||||
|
[ 10, 1.5, z - 21 ],
|
||||||
|
anchor = [ -1, -1, -1 ],
|
||||||
|
rounding = 5,
|
||||||
|
edges = LEFT + TOP
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
76
HeroesKeepOut/Box-Figure-Big.scad
Normal file
76
HeroesKeepOut/Box-Figure-Big.scad
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
include <BOSL2/std.scad>
|
||||||
|
|
||||||
|
boxHelper(45, 39, 53, "Sensenmann", "Steintroll", "König Schleim");
|
||||||
|
translate([ 88.5, 39, 0 ]) zrot(180, cp=[0, 0, 0]) boxHelper(45, 39, 53, "Drache", "Gorgone", "Träumer");
|
||||||
|
|
||||||
|
module boxHelper(x, y, z, frontName, middleName, backName) {
|
||||||
|
difference() {
|
||||||
|
cube([ x, y, z ], false);
|
||||||
|
translate([ 1.5, 1.5, 1.5 ]) cube([ x - 3, y - 3, z - 1 ], false);
|
||||||
|
|
||||||
|
// windows
|
||||||
|
window(x / 2, y, z, frontName, backName);
|
||||||
|
|
||||||
|
// 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([ 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"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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"
|
||||||
|
);
|
||||||
|
}
|
||||||
5
HeroesKeepOut/Box-Figure-Configs.txt
Normal file
5
HeroesKeepOut/Box-Figure-Configs.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
33,31,29,Geister
|
||||||
|
26,82,25,Pilzknilche
|
||||||
|
36,51,27,Spinnen
|
||||||
|
33,45,34,Werwolf
|
||||||
|
21,53,35,Vampir
|
||||||
67
HeroesKeepOut/Box-Figure-Heroes.scad
Normal file
67
HeroesKeepOut/Box-Figure-Heroes.scad
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
include <BOSL2/std.scad>
|
||||||
|
|
||||||
|
difference() {
|
||||||
|
cube([ 175, 55, 37 ], false);
|
||||||
|
translate([ 1.5, 1.5, 1.5 ]) cube([ 172, 52, 36 ], false);
|
||||||
|
|
||||||
|
// windows
|
||||||
|
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
|
||||||
|
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, z, name) {
|
||||||
|
windowHelper(x, 0, z, name);
|
||||||
|
windowHelper(x, y - 1, z, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
module windowHelper(x, y, z, name) {
|
||||||
|
translate([ x - 10, y - 1, 12 ]) cuboid(
|
||||||
|
[ 23, 3.5, z - 12 ],
|
||||||
|
anchor = [-1, -1, -1],
|
||||||
|
rounding = 5,
|
||||||
|
edges = [
|
||||||
|
BOTTOM + LEFT,
|
||||||
|
BOTTOM + RIGHT
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
difference() {
|
||||||
|
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, z - 6 ]) 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"
|
||||||
|
);
|
||||||
|
}
|
||||||
146
HeroesKeepOut/Box-Figure-Monsters.scad
Normal file
146
HeroesKeepOut/Box-Figure-Monsters.scad
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
include <BOSL2/std.scad>
|
||||||
|
|
||||||
|
// Parameter for console overwrite
|
||||||
|
x = 172;
|
||||||
|
y = 84;
|
||||||
|
z = 35.5;
|
||||||
|
|
||||||
|
figureHolder(x, y, z);
|
||||||
|
|
||||||
|
module figureHolder(x, y, z) {
|
||||||
|
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([ 94 / 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([ 43 / 2 + 127.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([ 74 / 2 + 32, 0.6, 12 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.6) text(
|
||||||
|
"Gnoll",
|
||||||
|
size = 4,
|
||||||
|
font = "Arial:style=Bold",
|
||||||
|
halign="center",
|
||||||
|
valign="center"
|
||||||
|
);
|
||||||
|
translate([ 63 / 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([ 54 / 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([ 42 / 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([ 94, 1.5, 6.5], false); // Rattenvolk
|
||||||
|
translate([ 32, 19.5, 0 ]) cube([ 94, 1.5, 6.5], false); // Rattenvolk
|
||||||
|
translate([ 126, 5, 0 ]) cube([ 1.5, 21, 6.5], false); // Rattenvolk
|
||||||
|
translate([ 127.5, 6, 0 ]) cube([ 43, 1.5, 6.5], false); // Unholde
|
||||||
|
translate([ 127.5, 24.5, 0 ]) cube([ 43, 1.5, 6.5], false); // Unholde
|
||||||
|
translate([ 32, 24, 0 ]) cube([ 74, 1.5, 6.5], false); // Gnolle
|
||||||
|
translate([ 32, 50.5, 0 ]) cube([ 74, 1.5, 6.5], false); // Gnolle
|
||||||
|
translate([ 106, 24, 0 ]) cube([ 1.5, 31.5, 6.5], false); // Gnolle
|
||||||
|
translate([ 107.5, 28, 0 ]) cube([ 63, 1.5, 6.5], false); // Skelette
|
||||||
|
translate([ 107.5, 55.5, 0 ]) cube([ 63, 1.5, 6.5], false); // Skelette
|
||||||
|
translate([ 32, 76, 0 ]) cube([ 54, 1.5, 6.5], false); // Echsenvolk
|
||||||
|
translate([ 86, 52, 0 ]) cube([ 1.5, 27.5, 6.5], false); // Echsenvolk
|
||||||
|
translate([ 87.5, 55.5, 0 ]) cube([ 28, 1.5, 6.5], false); // Hexen
|
||||||
|
translate([ 87.5, 78, 0 ]) cube([ 28, 1.5, 6.5], false); // Hexen
|
||||||
|
translate([ 115.5, 57, 0 ]) cube([ 1.5, 22.5, 6.5], false); // Hexen
|
||||||
|
translate([ 127, 57, 0 ]) cube([ 1.5, 27, 6.5], false); // Feen
|
||||||
|
translate([ 128.5, 81.5, 0 ]) cube([ 42, 1.5, 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"
|
||||||
|
);
|
||||||
|
}
|
||||||
73
HeroesKeepOut/Box-Figure.scad
Normal file
73
HeroesKeepOut/Box-Figure.scad
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
include <BOSL2/std.scad>
|
||||||
|
|
||||||
|
x = 28;
|
||||||
|
y = 29;
|
||||||
|
z = 28;
|
||||||
|
name = "Figure";
|
||||||
|
|
||||||
|
figureBox(x + 3, y + 3, z + 1.5, name);
|
||||||
|
|
||||||
|
module figureBox(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(x / 2, y, z, name, "");
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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"
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
include <BOSL2/std.scad>
|
|
||||||
|
|
||||||
// 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);
|
|
||||||
|
|
||||||
@@ -1,66 +1,11 @@
|
|||||||
include <BOSL2/std.scad>
|
include <BOSL2/std.scad>
|
||||||
|
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() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
if (bInner >= 6 && tInner >= 6) {
|
boxLid(178, 38);
|
||||||
difference() {
|
translate([ 92.95, 21.2, 0 ]) cube([ 85.1, 16.8, 2 ], false); // frame area around card pocket
|
||||||
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([ 96.75, 26, -1 ]) cube([ 81.4, 13, 41 ], 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);
|
|
||||||
|
|||||||
@@ -1,118 +1,54 @@
|
|||||||
include <BOSL2/std.scad>
|
include <BOSL2/std.scad>
|
||||||
|
use <../Box.scad>
|
||||||
|
|
||||||
// Parameter for console overwrite
|
|
||||||
b = 178;
|
|
||||||
t = 38;
|
|
||||||
h = 20;
|
|
||||||
|
|
||||||
module box(b, t, h) {
|
|
||||||
difference() {
|
difference() {
|
||||||
difference() {
|
box(178, 38, 20);
|
||||||
// base
|
translate([96.75, -1, -1]) cube([79.4, 13, 41], false); // clean area for card pocket
|
||||||
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
|
// deviders
|
||||||
translate([150, 12, 1.5]) {
|
translate([154, 12, 1.5]) cube([1, 24.5, 16.5], false);
|
||||||
cube([1, 24.5, 18.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([127, 12, 1.5]) {
|
translate([79, 1.5, 1.5]) cube([1, 35, 16.5], false);
|
||||||
cube([1, 24.5, 18.5], false);
|
translate([54, 1.5, 1.5]) cube([1, 35, 16.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
|
// card pocket
|
||||||
translate([b- 80, 0, ]) {
|
|
||||||
difference() {
|
difference() {
|
||||||
cube([78.4, 12, 40], false);
|
translate([96.75, 0, 0]) {
|
||||||
translate([1.5, -1, 1.5]) {
|
difference() {
|
||||||
cube([75.4, 11.5, 41], false);
|
cube([79.4, 12, 40], false);
|
||||||
}
|
translate([1.5, -1, 1.5]) cube([76.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([1.5, 0, 1.5]) cuboid(
|
||||||
|
[6, 1.5, 38.5],
|
||||||
|
anchor = [-1, -1, -1],
|
||||||
|
rounding = 5,
|
||||||
|
edges = TOP + RIGHT
|
||||||
|
);
|
||||||
|
|
||||||
|
translate([71.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]) {
|
translate([7.5, 0, 1.5]) {
|
||||||
difference() {
|
difference() {
|
||||||
cube([63.4, 1.5, 11], false);
|
cube([64.4, 1.5, 11], false);
|
||||||
translate([0, -1, 6]) {
|
translate([0, -1, 6]) cuboid(
|
||||||
cuboid([63.4, 4.5, 6], anchor = [-1, -1, -1], rounding = 5, edges = [ BOTTOM + LEFT, BOTTOM + RIGHT]);
|
[64.4, 4.5, 6],
|
||||||
}
|
anchor = [-1, -1, -1],
|
||||||
}
|
rounding = 5,
|
||||||
|
edges = [
|
||||||
|
BOTTOM + LEFT,
|
||||||
|
BOTTOM + RIGHT
|
||||||
|
]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module sideCut(b,t) {
|
translate([178, 0, 0]) mirror([1, 0, 0]) sideCut(43);
|
||||||
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);
|
|
||||||
|
|||||||
45
HeroesKeepOut/Box-Tokens.scad
Normal file
45
HeroesKeepOut/Box-Tokens.scad
Normal 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([ 83 , 18.5, 14 ]) rotate(90, [ 0, 1, 0 ]) cylinder(h = 12, r = 13.5, center = false); // Rest rund
|
||||||
|
translate([ 84 , 5.5, 16.5 ]) cube([ 11, 27, 15 ]); // Rest rund
|
||||||
|
translate([ 100, 15.5, 4.5 ]) cube([ 11, 19, 26 ], false); // Rest
|
||||||
|
translate([ 110, 14, 1.5 ]) cube([ 3, 22, 29 ], false); // Rest
|
||||||
|
translate([ 118, 14.5, 8.5 ]) cube([ 15, 21, 22 ], false); // Fässer
|
||||||
|
translate([ 137, 13, 1.5 ]) cube([ 34, 24, 29 ], false); // Truhe
|
||||||
|
|
||||||
|
union() {
|
||||||
|
translate([ 4, 19, 29.5 ]) rotate(90, [ 0, 1, 0 ]) cylinder(h = 92.75, r = 7.5, center = false);
|
||||||
|
translate([ 94.9, 25, 29.5 ]) rotate(90, [ 0, 1, 0 ]) cylinder(h = 79.1, r = 7.5, center = false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// clean area for card pocket
|
||||||
|
translate([ 96.75, -1, -1 ]) cube([ 81.4, 13, 41 ], false);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user