make triangle window for bearing and weight
[ozzloy@gmail.com/3d-printables] / spin-data.scad
index 62eefbcef303d67105aea7c9aa10a1ce4903ef3c..99ce243388d96f6d6cef9603a7f0b22d0a4b28b8 100644 (file)
@@ -68,7 +68,8 @@ module cap(bearing_inner_radius,
   footprint_radius_safety = 0.2;
   cap_height = 3;
   bearing_thickness_safety = 0.6;
-  finger_spot_height = cap_height / 10;
+  finger_spot_height = cap_height * 2 / 3;
+  stripes = 3;
 
   difference() {
     union() {
@@ -85,12 +86,20 @@ module cap(bearing_inner_radius,
                               + footprint_height
                               + bearing_thickness / 2
                               - bearing_thickness_safety) {
-        circle(bearing_inner_radius); }
-    }
+        circle(bearing_inner_radius + 0.1); } }
     translate([0, 0, -0.01]) {
       cylinder(r1 = bearing_inner_radius,
                r2 = bearing_inner_radius - tan(30) * finger_spot_height,
-               h = finger_spot_height); } } }
+               h = finger_spot_height);
+      for(stripe = [0 : stripes - 1]) {
+        rotate((stripe / stripes) * 360) {
+          linear_extrude(height = finger_spot_height) {
+            polygon([[0, 0],
+                     [bearing_cover_radius * 2, 0],
+                     [cos(3 + 360 / (stripes * 2))
+                      * bearing_cover_radius * 2,
+                      sin(3 + 360 / (stripes * 2))
+                      * bearing_cover_radius * 2]]); } } } } } }
 
 module donut(height, footprint_radius) {
   bread_radius = height / 2;
@@ -335,20 +344,41 @@ module spin_cosine(weight_radius,
                               round_extra,
                               wall,
                               arms); } } } }
-    cylinder(h = actual_height + 0.1,
+    // bearing window hole
+    /*cylinder(h = actual_height + 0.1,
              r = bearing_radius - bearing_lip_overhang,
-             center = true);
+             center = true);*/
+    linear_extrude(height = actual_height + 0.1, center = true) {
+      intersection() {
+        polygon([[bearing_radius + 3 * wall, 0],
+                 [cos(120) * (bearing_radius + 3 * wall),
+                  sin(120) * (bearing_radius + 3 * wall)],
+                 [cos(240) * (bearing_radius + 3 * wall),
+                  sin(240) * (bearing_radius + 3 * wall)]]);
+        circle(bearing_radius + 0.1); } }
+    // bearing cavity
     cylinder(h = bearing_thickness + 0.05,
              r = bearing_radius + 0.15,
              center = true);
+    // arm holes
     for(arm = [0 : arms - 1]) {
       rotate(arm * (360 / arms)) {
         translate([bearing_radius + wall + weight_radius, 0]) {
-          cylinder(h = actual_height + 0.1,
-                   r = weight_radius - weight_lip_overhang,
-                   center = true);
+          // weight window hole
+          mirrored([0, 0, 1]) {
+            translate([0, 0, (weight_thickness + 0.05) / 2]) {
+              linear_extrude(height = wall + 0.1) {
+                intersection(){
+                  polygon([[cos(0) * (weight_radius + 2.5 * wall),
+                            sin(0) * (weight_radius + 2.5 * wall)],
+                           [cos(120) * (weight_radius + 2.5 * wall),
+                            sin(120) * (weight_radius + 2.5 * wall)],
+                           [cos(240) * (weight_radius + 2.5 * wall),
+                            sin(240) * (weight_radius + 2.5 * wall)]]);
+                  circle(weight_radius + 0.2); } } } }
+          // weight cavity
           cylinder(h = weight_thickness + 0.05,
-                   r = weight_radius + 0.15,
+                   r = weight_radius + 0.20,
                    center = true); } } } } }
 
 module spin_donut(weight_radius,