update puzzle to latest version to match solution instructions
[ozzloy@gmail.com/3d-printables] / spin-data.scad
index f8d671d41fbead627ed6ac7310ad8c8d769e7117..e5df4e2aa718930ecff0a5909ca9d037a351f7f2 100644 (file)
@@ -9,7 +9,8 @@ layer_height = 0.35;
 weight = "penny";
 // weight = "608zz";
 
-bearing = "608zz";
+//bearing = "608zz";
+bearing = "sr188";
 // bearing = "625rs";
 
 weight_lip_overhang = 0.3;
@@ -18,6 +19,12 @@ wall = 3;
 penny_thickness = 1.52;
 penny_radius = 19.05 / 2;
 
+sr188_radius = 12.74 / 2; // 0.5 / 2
+sr188_inner_radius = 6.3 / 2; // 0.2470 / 2
+sr188_thickness = 4.8; // 0.1895 inch
+sr188_cover_radius = sr188_radius;
+sr188_cap_footprint_radius = 12 / 2;
+
 _608zz_radius = 22 / 2;
 _608zz_inner_radius = 8.1 / 2;
 _608zz_cover_radius = _608zz_radius;
@@ -37,23 +44,28 @@ weight_thickness = (weight == "penny") ?
 bearing_radius =
   (bearing == "608zz") ? _608zz_radius
   : (bearing == "625rs") ? _625rs_radius
+  : (bearing == "sr188") ? sr188_radius
   : 1/0;
 bearing_window_radius = bearing_radius - bearing_lip_overhang - 1;
 bearing_inner_radius =
   (bearing == "608zz") ? _608zz_inner_radius
   : (bearing == "625rs") ? _625rs_inner_radius
+  : (bearing == "sr188") ? sr188_inner_radius
   : 1/0;
 bearing_cover_radius =
   (bearing == "608zz") ? _608zz_cover_radius
   : (bearing == "625rs") ? _625rs_cover_radius
+  : (bearing == "sr188") ? sr188_cover_radius
   : 1/0;
 bearing_cap_footprint_radius =
   (bearing == "608zz") ? _608zz_cap_footprint_radius
   : (bearing == "625rs" ) ? _625rs_cap_footprint_radius
+  : (bearing == "sr188" ) ? sr188_cap_footprint_radius
   : 1/0;
 bearing_thickness =
   (bearing == "608zz") ? _608zz_thickness
   : (bearing == "625rs") ? _625rs_thickness
+  : (bearing == "sr188") ? sr188_thickness
   : 1/0;
 
 spinner_height = penny_thickness * 5 + 2;
@@ -289,6 +301,13 @@ module spin_slices(weight_radius,
                    r = weight_radius + 0.15,
                    center = true); } } } } }
 
+module equilateral_triangle(radius){
+  polygon([[cos(0) * radius, sin(0) * radius],
+           [cos(120) * radius,
+            sin(120) * radius],
+           [cos(240) * radius,
+            sin(240) * radius]]); }
+
 module spin_cosine(weight_radius,
                    weight_thickness,
                    bearing_radius,
@@ -344,20 +363,32 @@ 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() {
+        equilateral_triangle(1.8 * bearing_radius);
+        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(){
+                  equilateral_triangle(1.8 * weight_radius);
+                  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,