10. squeeze ball even tighter
[challenge-bot] / 3d-printables / caster-standoff.scad
index 0447239bde09817a3033c380f3d4996b9142a097..cf7be337620a2fa9eb88859cfcac1ce961c0398f 100644 (file)
@@ -7,11 +7,18 @@
 // use 10 ish for development, 60 or so for printing
 $fn = 60;
 
-standoff_radius = 14.732 / 2; // 0.580 / 2 inches from spec sheet
-standoff_height = 55; // eyeballed
+/* measured with calipers */
+ball_diameter = 12.7 + 1;
+ball_radius = ball_diameter / 2;
 
-nut_short_side = 4.7; // from calipers
-nut_height = 1.6; // from calipers
+wall_thickness = 1;
+holder_height = (25 / 32) * ball_diameter + wall_thickness;
+
+holder_radius = ball_radius + wall_thickness;
+holder_diameter = holder_radius * 2;
+
+standoff_radius = holder_radius; // 0.580 / 2 inches from spec sheet
+standoff_height = 48; // eyeballed
 
 // eyeballed caster flange height, (0.580/5) inches, times 2 to be stronger
 caster_flange_height = 5;
@@ -47,88 +54,25 @@ module deck_flange_reinforcement(){
                 deck_flange_height * 1.1, // 1.1 is bigger than 1
                 deck_flange_radius]);}}}}}
 
-module caster_flange_screws(){
-  translate([standoff_radius, 0, 0])
-    cylinder(h = caster_flange_screw_length,
-             r = caster_flange_screw_radius);
-  translate([-standoff_radius, 0, 0])
-    cylinder(h = caster_flange_screw_length,
-             r = caster_flange_screw_radius);}
-
-module caster_flange(){
-  side_radius = caster_flange_width / 2 - standoff_radius;
-  hull(){
-    cylinder(h = caster_flange_height, r = standoff_radius);
-    translate([standoff_radius, 0, 0])
-      cylinder(h = caster_flange_height, r = side_radius);
-    translate([-standoff_radius, 0, 0])
-      cylinder(h = caster_flange_height, r = side_radius);}}
-
-module nut(size, height){
-    width = size/1.75;
-    for (r = [-60, 0, 60]) rotate([0,0,r]) cube([width, size, height], true);}
-
-module nuts(){
-  translate([standoff_radius, 0, nut_height/2])
-    nut(nut_short_side, nut_height + .1);
-  translate([-standoff_radius, 0, nut_height/2])
-    nut(nut_short_side, nut_height + .1);}
-
-module _2_screw(){
-  //measured with calipers
-  screw_length = 8;
-  thread_radius = 2.17 / 2 - 0.1; // subtract 0.1 to make squeeze fit
-  head_height = 1.8;
-  head_radius = 4.1 / 2 + 0.2; // add 0.2 to allow head to fit
-  cylinder(r = thread_radius, h = screw_length);
-  cylinder(r = head_radius, h = head_height);}
-
-module caster_deck_interlock_solid(){
-  translate([-1, standoff_radius - 2.1, 0]){
-    cube([2, 2, standoff_height]);}
-  translate([-1, -standoff_radius + 0.1, 0]){
-    cube([2, 2, standoff_height]);}}
-
-module caster_deck_interlock_hole(){
-  translate([0, standoff_radius - 1, -0.1]){
-    cube([2.5, 2.5, standoff_height], center = true);}
-  translate([0, -standoff_radius + 1, -0.1]){
-    cube([2.5, 2.5, standoff_height], center = true);}}
-
-module caster_standoff_deck_side(){
-  difference(){
-    cylinder(h = standoff_height - caster_flange_height,
-             r = standoff_radius);
-    translate([0, 0, standoff_height - caster_flange_screw_length * 1.1 + 0.1])
-      scale([1, 1, 1.1])
-        caster_flange_screws();
-    translate([0, 0, standoff_height - (caster_flange_height + nut_height)])
-      nuts();
-    translate([0, 0, standoff_height]){
-      // make hole to get to screw head depth
-      cylinder(r = 4.1 / 2 + 0.2, h = 3, center = true);
-      translate([0, 0, -0.7])
-        rotate([180, 0, 0])
-          _2_screw(r = 0.5, h = 5);}}
+module ball_holder(){
+  gap = wall_thickness * 4;
+  difference (){
+    cylinder(r = holder_radius, h = holder_height);
+    translate([0, 0, ball_radius + wall_thickness]){
+      sphere(r = ball_radius);}
+    translate([0, 0, holder_height / 2 + wall_thickness]){
+      cube([holder_diameter + 0.1, gap, holder_height],
+           center = true);}}}
+
+module caster_standoff(){
+  cylinder(h = standoff_height,
+           r = standoff_radius);
   deck_flange();
   for(ii = [0:3]){
     rotate([0, 0, 45 + 90 * ii])
       deck_flange_reinforcement();}
-  caster_deck_interlock_solid();}
-
-module caster_standoff_caster_side(){
-  difference(){
-    caster_flange();
-    translate([0, 0, caster_flange_height - 0.7]){
-      rotate([180, 0, 0]){
-        _2_screw();}}
-    // make hole to get to screw head
-    translate([0, 0, caster_flange_height - 0.8]){
-      cylinder(r = 4.1 / 2 + 0.2, h = 10);}
-    translate([0, 0, -.1]){
-      caster_flange_screws();}
-    caster_deck_interlock_hole();}}
+  translate([0, 0, standoff_height]){
+    ball_holder();}}
 
-caster_standoff_deck_side();
-translate([caster_flange_width / 2 + deck_flange_radius + 1, 0, 0]){
-  caster_standoff_caster_side();}
+//caster_standoff();
+ball_holder();