From a16d88432d05bf695ed764f6d8b4e2c575a675d6 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sun, 12 Jul 2026 11:43:05 -0700 Subject: [PATCH] Initial import --- .gitattributes | 4 + Gravity Board/gravity board 1.stl | 3 + Gravity Board/gravity board 2.stl | 3 + Gravity Board/gravity board 3.stl | 3 + Gravity Board/gravity board.png | 3 + Gravity Board/gravity board.scad | 246 ++++++++++++++++++++++++++++++ 6 files changed, 262 insertions(+) create mode 100644 .gitattributes create mode 100644 Gravity Board/gravity board 1.stl create mode 100644 Gravity Board/gravity board 2.stl create mode 100644 Gravity Board/gravity board 3.stl create mode 100644 Gravity Board/gravity board.png create mode 100644 Gravity Board/gravity board.scad diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8504958 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +*.stl filter=lfs diff=lfs merge=lfs -text +*.STL filter=lfs diff=lfs merge=lfs -text +*.3mf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text diff --git a/Gravity Board/gravity board 1.stl b/Gravity Board/gravity board 1.stl new file mode 100644 index 0000000..10dbe43 --- /dev/null +++ b/Gravity Board/gravity board 1.stl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb58c249c57245d4fe2021dd1b63d659e2ef0bb37df6112edd6247c61639e088 +size 1034184 diff --git a/Gravity Board/gravity board 2.stl b/Gravity Board/gravity board 2.stl new file mode 100644 index 0000000..5e406f4 --- /dev/null +++ b/Gravity Board/gravity board 2.stl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64c6a66dd23608da74caef4bbc27971d7dc061f36e42f83c9b9fd79a299c279b +size 220284 diff --git a/Gravity Board/gravity board 3.stl b/Gravity Board/gravity board 3.stl new file mode 100644 index 0000000..989f02f --- /dev/null +++ b/Gravity Board/gravity board 3.stl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed7491a689748d4300d58c1e89e7532de4d41b4831600a3de47e82ef747bc4fa +size 539484 diff --git a/Gravity Board/gravity board.png b/Gravity Board/gravity board.png new file mode 100644 index 0000000..cad0b1d --- /dev/null +++ b/Gravity Board/gravity board.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca34956c00cbeb5da19774d936fd5a6864e006ec129953f6291316e635ac0ef9 +size 96512 diff --git a/Gravity Board/gravity board.scad b/Gravity Board/gravity board.scad new file mode 100644 index 0000000..47b15bf --- /dev/null +++ b/Gravity Board/gravity board.scad @@ -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); +} \ No newline at end of file