Reorganize: kebab-case names, per-item subdirectories, regroup items

This commit is contained in:
Ian Gulliver
2026-07-12 22:26:47 -04:00
parent a16d88432d
commit 0208a67d95
5 changed files with 0 additions and 0 deletions
+246
View File
@@ -0,0 +1,246 @@
$fn = 100;
eps = 0.01;
board = true;
stripes = true;
fans = true;
only = "*";
if (board && (only == "*" || only == "b")) {
color("red")
difference() {
difference() {
union() {
board();
tail();
}
stripes();
}
antiboard();
}
}
if (stripes && (only == "*" || only == "s")) {
color("white")
difference() {
translate([0, 0, eps])
intersection() {
board();
stripes();
}
antiboard();
}
}
if (fans && (only == "*" || only == "f")) {
color("silver")
fans();
}
module board() {
cube([100, 20, 4]);
translate([100, 10, 0])
cylinder(h=4, d=20);
translate([0, 0, 2])
rotate([0, 90, 0])
cylinder(h=100, d=4);
translate([0, 20, 2])
rotate([0, 90, 0])
cylinder(h=100, d=4);
translate([100, 10, 2])
torus(or=12, ir=8);
translate([0, 0, 2])
rotate([-90, 0, 0])
cylinder(h=20, d=4);
translate([0, 0, 2])
sphere(d=4);
translate([0, 20, 2])
sphere(d=4);
}
module antiboard() {
translate([90, 10, -1])
cylinder(h=6, d=16);
translate([90, 10, 1])
cylinder(h=2, d=18);
translate([55, 10, -1])
cylinder(h=6, d=16);
translate([55, 10, 1])
cylinder(h=2, d=18);
translate([20, 10, -1])
cylinder(h=6, d=16);
translate([20, 10, 1])
cylinder(h=2, d=18);
}
module stripes() {
o = 6;
difference() {
union() {
translate([-5, 4, -1])
cube([120, 4, 6]);
translate([-5, 12, -1])
cube([120, 4, 6]);
difference() {
translate([o + 0, 4, 1])
cube([10, 12, 2]);
translate([-8, 0, 0])
cube([10, 14, 4]);
}
translate([o + 20, 4, 1])
cube([10, 12, 2]);
translate([o + 40, 4, 1])
cube([10, 12, 2]);
translate([o + 60, 4, 1])
cube([10, 12, 2]);
translate([o + 80, 4, 1])
cube([10, 12, 2]);
difference() {
translate([o + 100, 4, 1])
cube([10, 12, 2]);
translate([108, 0, 0])
cube([10, 14, 4]);
}
}
difference() {
translate([o - 10, 3, 1])
cube([10, 14, 2]);
translate([-8, 0, 0])
cube([10, 16, 4]);
}
translate([o + 10, 3, 1])
cube([10, 14, 2]);
translate([o + 30, 3, 1])
cube([10, 14, 2]);
translate([o + 50, 3, 1])
cube([10, 14, 2]);
translate([o + 70, 3, 1])
cube([10, 14, 2]);
translate([o + 90, 3, 1])
cube([10, 14, 2]);
}
}
module fans() {
translate([90, 10, 0])
fan();
translate([55, 10, 0])
fan();
translate([20, 10, 0])
fan();
}
module fan() {
difference() {
cylinder(h=4, d=16);
translate([0, 0, -1])
cylinder(h=6, d=15);
}
difference() {
cylinder(h=4, d=12);
translate([0, 0, -1])
cylinder(h=6, d=11);
}
difference() {
cylinder(h=4, d=8);
translate([0, 0, -1])
cylinder(h=6, d=7);
}
translate([0, 0, 1])
difference() {
cylinder(h=2, d=18);
translate([0, 0, -1])
cylinder(h=4, d=15);
}
translate([0, 0, 2])
rotate([0, 0, 0])
cube([16, 0.5, 4], center=true);
translate([0, 0, 2])
rotate([0, 0, 90])
cube([16, 0.5, 4], center=true);
translate([0, 0, 2])
rotate([0, 0, 45])
cube([16, 0.5, 4], center=true);
translate([0, 0, 2])
rotate([0, 0, -45])
cube([16, 0.5, 4], center=true);
}
module tail() {
intersection() {
union() {
translate([0, 8, 0])
cube([10, 4, 16]);
translate([0, 10, 2])
cylinder(h=10, d=4);
}
translate([0, 10, 2])
resize([20, 4, 20])
sphere(d=20);
}
translate([0, 12, 2])
rotate([90, 0, 0])
cylinder(h=4, d=4);
}
module torus(or, ir) {
r = (or - ir) / 2;
rotate_extrude()
translate([ir + r, 0, 0])
circle(r);
}