make cap with finger divot
authordaniel watson <ozzloy@gmail.com>
Mon, 9 Jan 2017 22:07:36 +0000 (14:07 -0800)
committerdaniel watson <ozzloy@gmail.com>
Mon, 9 Jan 2017 22:07:36 +0000 (14:07 -0800)
spin-data.scad
spin.scad

index e9a80b7f63e4d0312d731331c0cec86d44a19518..0758c78b58f82f52d0c63155ac4f5b16e826723f 100644 (file)
@@ -10,17 +10,57 @@ bearing = "608zz";
 weight_lip_thickness = 1;
 wall_thickness = 2;
 penny_thickness = 1.52;
-spinner_height = penny_thickness * 5 + 2;
-_608zz_radius = 22;
-_608zz_thickness = 7;
 penny_radius = 19.05 / 2;
+
+_608zz_radius = 22 / 2;
+_608zz_inner_radius = 8.1 / 2;
+_608zz_cover_radius = 19.4 / 2;
+_608zz_cap_footprint_radius = 12 / 2;
+_608zz_thickness = 7;
+
 weight_radius = (weight == "penny") ? penny_radius : _608zz_radius;
 weight_thickness = (weight == "penny") ?
      penny_thickness * 5 : _608zz_thickness;
+
 bearing_radius = (bearing == "608zz") ? _608zz_radius : 1/0;
+bearing_inner_radius = (bearing == "608zz") ? _608zz_inner_radius : 1/0;
+bearing_cover_radius = (bearing == "608zz")
+                       ? _608zz_cover_radius + wall_thickness
+                       : 1/0;
+bearing_cap_footprint_radius =
+     (bearing == "608zz") ? _608zz_cap_footprint_radius : 1/0;
 bearing_thickness = (bearing == "608zz") ? _608zz_thickness : 1/0;
+
+spinner_height = penny_thickness * 5 + 2;
 arms = 3;
 
+module cap(bearing_inner_radius,
+           bearing_cap_footprint_radius,
+           bearing_cover_radius,
+           bearing_thickness) {
+  footprint_height = 1.6;
+  footprint_radius_safety = 0.25;
+  cap_height = 3;
+  bearing_cover_radius_safety = 0.75;
+  bearing_thickness_safety = 0.2;
+
+  difference() {
+    union() {
+      cylinder(r1 = bearing_cover_radius - tan(30) * cap_height,
+               r2 = bearing_cover_radius,
+               h = cap_height);
+      linear_extrude(height = cap_height + footprint_height) {
+        circle(bearing_cap_footprint_radius - footprint_radius_safety); }
+      linear_extrude(height = cap_height
+                              + footprint_height
+                              + bearing_thickness / 2
+                              - bearing_thickness_safety) {
+        circle(bearing_inner_radius); } }
+    translate([0, 0, -0.01]) {
+      cylinder(r1 = bearing_inner_radius + tan(30) * (cap_height - 1),
+               r2 = bearing_inner_radius,
+               h = cap_height - 1); } } }
+
 module ring(outer_radius, inner_radius) {
   difference() {
     circle(outer_radius);
@@ -101,11 +141,11 @@ module spin(weight_radius,
             arms,
             wall_thickness,
             bearing_radius,
-            bearing_thickness,
-            spinner_height) {
+            bearing_thickness) {
   /* TODO: make window size parameter */
   /* TODO: rethink how lips are done */
   /* TODO: right now, weight is assumed to be thicker than bearing*/
+  spinner_height = weight_thickness + 2 * weight_lip_thickness;
   bearing_lip_thickness = (spinner_height - bearing_thickness) / 2;
   linear_extrude(height = weight_lip_thickness) {
     spin_2d(weight_radius - 1,
index 995bf34f532c1db63ed5b94f336019ef49ffe0ab..c1bc8394393901c4dd68dc4d418bc4fbf8412e5b 100644 (file)
--- a/spin.scad
+++ b/spin.scad
@@ -10,8 +10,12 @@ spin(weight_radius,
      arms,
      wall_thickness,
      bearing_radius,
-     bearing_thickness,
-     spinner_height);
+     bearing_thickness);
+
+!cap(bearing_inner_radius,
+    bearing_cap_footprint_radius,
+    bearing_cover_radius,
+    bearing_thickness);
 
 /*
   This file is part of 3d-printables.