etc: scads of random scad
[clinton/3d-models.git] / etc / cork.scad
diff --git a/etc/cork.scad b/etc/cork.scad
new file mode 100644 (file)
index 0000000..0a02514
--- /dev/null
@@ -0,0 +1,57 @@
+// cork for my weep of willow potion bottle
+
+// designed to fit a small submersible led tea light into the cap and
+// illuminate the smoke rising from the smoker. LED sits in
+// led_cork(), and led_cap() is placed over it to diffuse. Printed @
+// 100% infill, slow, and with the largest possible layer heights.
+
+$fa = 1;
+$fs = 1;
+
+led_cork ();
+//led_cap ();
+
+/* actual cork dimensions
+bottom_d = 29.5;
+top_d = 35.25;
+height = 37.77;
+*/
+
+module cork (bottom_d, top_d, height) {
+     hull () {
+         cylinder (d=bottom_d, h=0.1);
+         translate ([0, 0, height]) cylinder (d=top_d, h=0.1);
+     }
+}
+
+
+// logically, should be arguments, but are shared between led_cork and
+// led_cap...
+
+bottom_inner_d = 30;
+top_inner_d    = 35.25;
+height         = 37.77;
+wall           = 1.0;
+
+module led_cork () {
+     difference () {
+         cork (bottom_inner_d + wall*2, top_inner_d + wall*2, height);
+         translate ([0, 0, wall*2]) cork (bottom_inner_d, top_inner_d, height);
+     }
+
+}
+
+// dome of the led, to be cut from cap
+module led_dome (height = 8.5, diameter = 8.8) {
+     cylinder (d=diameter, h=height/2);
+     translate ([0, 0, height/2]) sphere (d=diameter);
+     
+}
+
+module led_cap (cap_depth = 12, cap_tolerance = 0.5) {
+     difference () {
+         // doesn't have to be exact, just need to fit in
+         cork (bottom_inner_d, top_inner_d - cap_tolerance, cap_depth);
+         translate ([0, 0, -0.01]) led_dome ();
+     }
+}