Small Worlds - Races

This commit is contained in:
2026-05-20 11:22:54 +02:00
parent 17f110f2bd
commit 7ed36ef273
22 changed files with 611 additions and 3 deletions

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
*.3mf *.3mf
*.csg
/Generated /Generated

47
.helperSmallWorld.sh Executable file
View File

@@ -0,0 +1,47 @@
COLORSCAD="../colorscad/colorscad.sh"
FOLDER=Generated/SmallWorld
echo "Rendering Small World"boardgame insert
mkdir -p Generated
mkdir -p $FOLDER
# ── Races ─────────────────────────────────────────────────────────────
mkdir -p $FOLDER/Race
echo "Rendering Race-Box-Amazonen..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Amazonen.3mf" -i "./SmallWorld/Race-Box-Amazonen.scad"
echo "Rendering Race-Box-Elben..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Elben.3mf" -i "./SmallWorld/Race-Box-Elben.scad"
echo "Rendering Race-Box-Ghule..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Ghule.3mf" -i "./SmallWorld/Race-Box-Ghule.scad"
echo "Rendering Race-Box-Halblinge..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Halblinge.3mf" -i "./SmallWorld/Race-Box-Halblinge.scad"
echo "Rendering Race-Box-Hexenmeister..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Hexenmeister.3mf" -i "./SmallWorld/Race-Box-Hexenmeister.scad"
echo "Rendering Race-Box-Mensch..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Mensch.3mf" -i "./SmallWorld/Race-Box-Mensch.scad"
echo "Rendering Race-Box-Orks..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Orks.3mf" -i "./SmallWorld/Race-Box-Orks.scad"
echo "Rendering Race-Box-Skelette..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Skelette.3mf" -i "./SmallWorld/Race-Box-Skelette.scad"
echo "Rendering Race-Box-Rattenmenschen..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Rattenmenschen.3mf" -i "./SmallWorld/Race-Box-Rattenmenschen.scad"
echo "Rendering Race-Box-Riesen..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Riesen.3mf" -i "./SmallWorld/Race-Box-Riesen.scad"
echo "Rendering Race-Box-Trolle..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Trolle.3mf" -i "./SmallWorld/Race-Box-Trolle.scad"
echo "Rendering Race-Box-Untergegangene-Staemme..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Untergegangene-Staemme.3mf" -i "./SmallWorld/Race-Box-Untergegangene-Staemme.scad"
echo "Rendering Race-Box-Wassermaenner..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Wassermaenner.3mf" -i "./SmallWorld/Race-Box-Wassermaenner.scad"
echo "Rendering Race-Box-Zauberer..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Zauberer.3mf" -i "./SmallWorld/Race-Box-Zauberer.scad"
echo "Rendering Race-Box-Zwerge..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Box-Zwerge.3mf" -i "./SmallWorld/Race-Box-Zwerge.scad"
echo "Rendering Race-Lid-Lower..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Lid-Lower.3mf" -i "./SmallWorld/Race-Lid-Lower.scad"
echo "Rendering Race-Lid-Upper..."
"$COLORSCAD" -o "$FOLDER/Race/Race-Lid-Upper.3mf" -i "./SmallWorld/Race-Lid-Upper.scad"

43
Polygon.scad Normal file
View File

@@ -0,0 +1,43 @@
function vsub(a, b) = [a[0]-b[0], a[1]-b[1]];
function vadd(a, b) = [a[0]+b[0], a[1]+b[1]];
function vlen(v) = sqrt(v[0]*v[0] + v[1]*v[1]);
function vang(v) = atan2(v[1], v[0]);
function norm_angle(a) = a < 0 ? a + 360 : a;
function arc_points(c, p1, p2, steps=24, ccw=true) =
let(
a1 = norm_angle(vang(vsub(p1, c))),
a2 = norm_angle(vang(vsub(p2, c))),
r = vlen(vsub(p1, c)),
delta =
ccw
? (a2 >= a1 ? a2 - a1 : a2 + 360 - a1)
: (a1 >= a2 ? a1 - a2 : a1 + 360 - a2),
dir = ccw ? 1 : -1
)
[ for (i = [0:steps])
let(a = a1 + dir * delta * i / steps)
[ c[0] + r * cos(a), c[1] + r * sin(a) ]
];
module loft_between(polya, polyb, z0=0, z1=20) {
n = len(polya);
assert(n == len(polyb), "Polygons must have same number of vertices");
pts = concat(
[ for (p = polya) [p[0], p[1], z0] ],
[ for (p = polyb) [p[0], p[1], z1] ]
);
side_faces = [ for (i = [0:n-1]) [i, (i+1)%n, n+(i+1)%n, n+i] ];
bottom_cap = [for (i = [n-1:-1:0]) i];
top_cap = [for (i = [0:n-1]) n + i];
polyhedron(
points = pts,
faces = concat(side_faces, [bottom_cap], [top_cap]),
convexity = 10
);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(10, "Amazonen", 6);
translate([ 5.5, 12.25, 2 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(8, "Elben", 5);
translate([ 5.5, 12.25, 2 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(8, "Ghule", 5);
translate([ 5.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(10, "Halblinge", 6);
translate([ 5.5, 15, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 15, 4 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 15, 4 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 15, 4 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 29, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 29, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 29, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 29, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(12, "Hexenmeister", 8);
translate([ 5.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(8, "Mensch", 5);
translate([ 5.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(8, "Orks", 5);
translate([ 5.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(12, "Rattenmenschen", 8);
translate([ 5.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(8, "Riesen", 5);
translate([ 5.5, 12.25, 2 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(12, "Skelette", 8);
translate([ 5.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,21 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(16, "Trolle", 10);
translate([ 5.5, 12.25, 4 ]) cuboid([ 28, 28, 15 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 15 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 15 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 4 ]) cuboid([ 28, 28, 15 ], anchor = [ -1, -1, -1 ]);
translate([ 5.5, 7.25, 8 ]) cuboid([ 38, 38, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 50, 7.25, 8 ]) cuboid([ 38, 38, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 94.5, 7.25, 10 ]) cuboid([ 38, 38, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 16, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 16, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 16, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 16, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(12, "Untergegangene Stämme", 6);
translate([ 5.5, 12.25, 4 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 4 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(8, "Wassermänner", 5);
translate([ 5.5, 12.25, 2 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(8, "Zauberer", 5);
translate([ 5.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 4 ]) cuboid([ 28, 28, 9 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

View File

@@ -0,0 +1,17 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <Race-Box.scad>
difference () {
raceBox(6, "Zwerge", 3);
translate([ 5.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 38.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 71.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 104.5, 12.25, 2 ]) cuboid([ 28, 28, 11 ], anchor = [ -1, -1, -1 ]);
translate([ 19.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 52.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 85.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
translate([ 118.5, 26.25, -1 ]) cylinder(h = 14, r = 10, center = false);
}

48
SmallWorld/Race-Box.scad Normal file
View File

@@ -0,0 +1,48 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <../Box.scad>
raceBox(12, "Test", 8);
module raceBox(z, name, fontSize) {
raceBoxHelper(138, 53.5, z, name, fontSize);
nameHelper(138, z, name, fontSize);
}
module raceBoxHelper(x, y, z, name, fontSize) {
makeColor("yellow") difference() {
cuboid(
[ x, y, z],
anchor = [ -1, -1, -1 ],
rounding = 1,
edges = [
BOTTOM,
FRONT+LEFT,
FRONT+RIGHT,
BACK+LEFT,
BACK+RIGHT
]
);
translate([0, 0, z]) mirror([0, 0, 1]) sideCut(y); // left upper
translate([x, 0, z]) mirror([1, 0, 0]) mirror([0, 0, 1]) sideCut(y); // right upper
translate([ x / 2, 1, z / 2 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 1.1) text(
name,
size = fontSize,
font = "Arial:style=Bold",
halign="center",
valign="center"
);
}
}
module nameHelper(x, z, name, fontSize) {
makeColor("white") translate([ x / 2, 1, z / 2 ]) rotate([ 90, 0, 0 ]) linear_extrude(height = 0.2) text(
name,
size = fontSize,
font = "Arial:style=Bold",
halign="center",
valign="center"
);
}

View File

@@ -0,0 +1,99 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <../Polygon.scad>
raceLidLower(131, 53.5, 3);
module raceLidLower(x, y, z) {
makeColor("yellow") difference() {
cube([ x, y, z ], false);
translate([ 24, 26.75, -1 ]) cylinder(h = 4, r = 10, center = false);
translate([ 0, 0, 1 ]) linear_extrude(height=3) polygon(points=leftLower);
//translate([ 0, 0, 2 ]) hull() {
// linear_extrude(height=0.1) polygon(points=leftLower);
// translate([0,0,1.0]) linear_extrude(height=0.1) polygon(points=leftUpper);
//}
translate([ 0, 0, 2 ]) loft_between(leftLower, leftUpper, 0, 1.01);
translate([ 0, 0, -1 ]) linear_extrude(height=5) polygon(points=rightLower);
translate([ 0, 0, 1 ]) linear_extrude(height=3) polygon(points=rightUpper);
translate([3.9, 0.9, -1]) rotate([ 0, 0, 45 ]) cuboid(
[ 3.2, 4.7, 5 ],
anchor = [ -1, -1, -1 ],
rounding = 1,
edges = [
FRONT+LEFT,
FRONT+RIGHT,
BACK+LEFT,
BACK+RIGHT
]
);
translate([0.4, 50.1, -1]) rotate([ 0, 0, -45 ]) cuboid(
[ 3.2, 4.7, 5 ],
anchor = [ -1, -1, -1 ],
rounding = 1,
edges = [
FRONT+LEFT,
FRONT+RIGHT,
BACK+LEFT,
BACK+RIGHT
]
);
translate([124.9, 2.9, -1]) rotate([ 0, 0, -45 ]) cuboid(
[ 3.2, 4.7, 5 ],
anchor = [ -1, -1, -1 ],
rounding = 1,
edges = [
FRONT+LEFT,
FRONT+RIGHT,
BACK+LEFT,
BACK+RIGHT
]
);
translate([127.9, 46.9, -1]) rotate([ 0, 0, 45 ]) cuboid(
[ 3.2, 4.7, 5 ],
anchor = [ -1, -1, -1 ],
rounding = 1,
edges = [
FRONT+LEFT,
FRONT+RIGHT,
BACK+LEFT,
BACK+RIGHT
]
);
}
}
leftLower = concat(
arc_points([ 11.82, 11.82 ], [ 11.75, 3.8 ], [ 3.6, 11.75 ], steps=30, ccw=false),
arc_points([ 9.24, 44.26 ], [ 3.6, 44.25 ], [ 9.25, 49.5 ], steps=30, ccw=false),
[[ 39.46, 49.5 ]],
arc_points([ 25.7, 26.6 ], [ 40.15, 45.45 ], [ 43.75, 11.15 ], steps=30, ccw=false),
[[ 44.5, 3.8 ]]
);
leftUpper = concat(
[[ 45.65, 2.8 ]],
arc_points([ 11.82, 11.82 ], [ 11.75, 2.8 ], [ 2.6, 11.75 ], steps=30, ccw=false),
arc_points([ 9.24, 44.26 ], [ 2.6, 44.25 ], [ 9.25, 50.5 ], steps=30, ccw=false),
[[ 40.3, 50.5 ]],
arc_points([ 25.7, 26.6 ], [ 41.09, 46 ], [ 44.78, 10.81 ], steps=30, ccw=false)
);
rightLower = concat(
[[ 43.88, 47.5 ]],
arc_points([ 104.21, 26.67 ], [ 104.5, 47.5 ], [ 125.44, 26.75 ], steps=30, ccw=false),
arc_points([ 119.25, 11.75 ], [ 125.44, 11.75 ], [ 119.3, 5.8 ], steps=30, ccw=false),
[[ 48.36, 5.8 ]],
arc_points([ 28.22, 26.60 ], [ 47.84, 10.66 ], [ 44.09, 46.27 ], steps=30, ccw=true)
);
rightUpper = concat(
[[ 41.7, 49.6 ]],
arc_points([ 104.21, 26.67 ], [ 104.5, 49.6 ], [ 127.44, 26.75 ], steps=30, ccw=false),
arc_points([ 119.25, 11.75 ], [ 127.44, 11.75 ], [ 119.3, 3.9 ], steps=30, ccw=false),
[[ 46.36, 3.9 ]],
arc_points([ 28.22, 26.60 ], [ 45.84, 10.66 ], [ 42.60, 45.30 ], steps=30, ccw=true)
);

View File

@@ -0,0 +1,108 @@
include <BOSL2/std.scad>
use <../Color.scad>
use <../Polygon.scad>
use <../Box-Lid.scad>
raceLidUpper(138, 53.5, 3);
module raceLidUpper(x, y, z) {
makeColor("yellow") {
translate([ 0, y, z ]) rotate([ 180, 0, 0 ]) {
difference() {
cube([ x, y, z], false);
translate([ 3.5, 0, -1 ]) linear_extrude(height=5) polygon(points=leftLower);
translate([ 3.5, 0, 2 ]) loft_between(leftLower, leftUpper, 0, 1.01);
translate([ 3.5, 0, -1 ]) linear_extrude(height=5) polygon(points=rightLower);
translate([ 3.5, 0, 2 ]) loft_between(rightLower, rightUpper, 0, 1.01);
}
translate([ 7.5, 1, -3 ]) rotate([ 0, 0, 45 ]) cuboid(
[ 3, 4.5, 3 ],
anchor = [ -1, -1, -1 ],
rounding = 1,
edges = [
BOTTOM,
FRONT+LEFT,
FRONT+RIGHT,
BACK+LEFT,
BACK+RIGHT
]
);
translate([4, 50, -3]) rotate([ 0, 0, -45 ]) cuboid(
[ 3, 4.5, 3 ],
anchor = [ -1, -1, -1 ],
rounding = 1,
edges = [
BOTTOM,
FRONT+LEFT,
FRONT+RIGHT,
BACK+LEFT,
BACK+RIGHT
]
);
translate([128.5, 3, -3]) rotate([ 0, 0, -45 ]) cuboid(
[ 3, 4.5, 3 ],
anchor = [ -1, -1, -1 ],
rounding = 1,
edges = [
BOTTOM,
FRONT+LEFT,
FRONT+RIGHT,
BACK+LEFT,
BACK+RIGHT
]
);
translate([131.5, 47, -3]) rotate([ 0, 0, 45 ]) cuboid(
[ 3, 4.5, 3 ],
anchor = [ -1, -1, -1 ],
rounding = 1,
edges = [
BOTTOM,
FRONT+LEFT,
FRONT+RIGHT,
BACK+LEFT,
BACK+RIGHT
]
);
}
translate([ 0, 0 ,3 ]) cube([3, y, 3], false);
translate([ x - 3, 0 ,3 ]) cube([3, y, 3], false);
translate([ 0, 0 ,3 ]) sideCut(y);
translate([ x, 0, 3 ]) mirror([ 1, 0, 0 ]) sideCut(y);
}
}
leftLower = concat(
[[ 45.65, 2.8 ]],
arc_points([ 11.82, 11.82 ], [ 11.75, 2.8 ], [ 2.6, 11.75 ], steps=30, ccw=false),
arc_points([ 9.24, 44.26 ], [ 2.6, 44.25 ], [ 9.25, 50.5 ], steps=30, ccw=false),
[[ 40.3, 50.5 ]],
arc_points([ 25.7, 26.6 ], [ 41.09, 46 ], [ 44.78, 10.81 ], steps=30, ccw=false)
);
leftUpper = concat(
[[ 45.65, 1.8 ]],
arc_points([ 11.82, 11.82 ], [ 11.75, 1.8 ], [ 1.6, 11.75 ], steps=30, ccw=false),
arc_points([ 9.24, 44.26 ], [ 1.6, 44.25 ], [ 9.25, 51.5 ], steps=30, ccw=false),
[[ 40.3, 51.5 ]],
arc_points([ 25.7, 26.6 ], [ 41.09, 46 ], [ 44.78, 10.81 ], steps=30, ccw=false)
);
rightLower = concat(
[[ 43.88, 47.5 ]],
arc_points([ 104.21, 26.67 ], [ 104.5, 47.5 ], [ 125.44, 26.75 ], steps=30, ccw=false),
arc_points([ 119.25, 11.75 ], [ 125.44, 11.75 ], [ 119.3, 5.8 ], steps=30, ccw=false),
[[ 48.36, 5.8 ]],
arc_points([ 28.22, 26.60 ], [ 47.84, 10.66 ], [ 44.09, 46.27 ], steps=30, ccw=true)
);
rightUpper = concat(
[[ 41.7, 49.6 ]],
arc_points([ 104.21, 26.67 ], [ 104.5, 49.6 ], [ 127.44, 26.75 ], steps=30, ccw=false),
arc_points([ 119.25, 11.75 ], [ 127.44, 11.75 ], [ 119.3, 3.9 ], steps=30, ccw=false),
[[ 46.36, 3.9 ]],
arc_points([ 28.22, 26.60 ], [ 45.84, 10.66 ], [ 42.60, 45.30 ], steps=30, ccw=true)
);

View File

@@ -1,7 +1,10 @@
# all all: Small_World Heros_Keep_Out
HerosKeepOut: ./CardHolder.scad Heros_Keep_Out: ./Box-Lid.scad ./Box.scad ./CardHolder.scad
./.helperHerosKeepOut.sh ./.helperHerosKeepOut.sh
Small_World:
./.helperSmallWorld.sh
clean: clean:
rm -r ./STL rm -r ./Generated