summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Huwald <jh@sotun.de>2015-01-21 13:37:21 (GMT)
committerJan Huwald <jh@sotun.de>2015-01-21 13:37:21 (GMT)
commit85868b1ca679a16561f0b3ea5710972e15d3b9d7 (patch)
tree6d63fe377547a61a051dddc1b56f25b75ac8f290
Initial commit
-rw-r--r--ball.scad3
-rw-r--r--gimbal.scad59
-rw-r--r--shell.scad3
3 files changed, 65 insertions, 0 deletions
diff --git a/ball.scad b/ball.scad
new file mode 100644
index 0000000..08cf8ac
--- /dev/null
+++ b/ball.scad
@@ -0,0 +1,3 @@
+use <gimbal.scad>
+
+ball();
diff --git a/gimbal.scad b/gimbal.scad
new file mode 100644
index 0000000..03a524a
--- /dev/null
+++ b/gimbal.scad
@@ -0,0 +1,59 @@
+// sphere diameter
+d = 30;
+cutoff = 3;
+c = 3;
+base = 10;
+
+screw_len = 0.8 * (d - 2*cutoff);
+screw_dia = 25.4/4;
+
+mount_screw_dia = 3;
+mount_screw_head_dia = 8;
+
+e = 0.01;
+$fn = 500;
+
+module screw() {
+ cylinder(r=screw_dia/2, h=screw_len);
+}
+
+module ball()
+ difference() {
+ sphere(d/2);
+ # translate([0, 0, d/2 - cutoff - screw_len + e]) screw();
+ for (i = [-1,1])
+ translate([0, 0, i * (d - cutoff)]) cube(d, center=true);
+ }
+
+module shell() {
+ difference() {
+ // sphere with cylinder to bottom
+ mirror([0, 0, 1])
+ assign(r2=d/2+c)
+ union() {
+ sphere(r=r2);
+ cylinder(r=r2, h=r2 + base);
+ }
+
+ // hollow out the sphere
+ sphere(d/2);
+
+ // add intro region
+ translate([0, 0, d])
+ cube([d-2*cutoff, d*2, 2*d], center=true);
+
+ // mounting screw hole
+ assign(rs=mount_screw_dia)
+ assign(rh=mount_screw_head_dia)
+ union() {
+ cylinder(r=rs/2, h=3*(d+base), center=true);
+ # translate([0, 0, -d/2-rh]) cylinder(r1=0, r2=rh/2, h=rh);
+ translate([0, 0, -d/2 ]) cylinder(r=rh/2, h=d);
+ }
+ }
+}
+
+union() {
+shell();
+translate([0,0,20]) rotate([90, 0, 90]) ball();
+}
diff --git a/shell.scad b/shell.scad
new file mode 100644
index 0000000..d30489f
--- /dev/null
+++ b/shell.scad
@@ -0,0 +1,3 @@
+use <gimbal.scad>
+
+shell();
contact: Jan Huwald // Impressum