// challenge-bot // GNU AGPLv3 (or later at your option) // project available at these locations: // https://gitorious.org/ozzloy/challenge-bot // https://github.com/waynegramlich/challenge-bot $fn = 100; module ball_screws(){ between = 14.732; // 0.580 inches screw_radius = 2.286/2; // 0.090 inches screw_length = 8; // i eyeballed this translate([between/2, 0, 0]) cylinder(h = screw_length, r = screw_radius); translate([-between/2, 0, 0]) cylinder(h = screw_length, r = screw_radius);} module caster_flange(){ // i eyeballed this too, it's (0.580/5) inches, times 2 to be stronger height = 2.9464 * 2; width = 20.32; // 0.800 inches between = 14.732; //0.580 inches side_radius = (width - between)/2; hull(){ cylinder(h = height, r = between/2); translate([between/2, 0, 0]) cylinder(h = height, r = side_radius); translate([-between/2, 0, 0]) cylinder(h = height, r = side_radius);}} module hexagon(size, height){ boxWidth = size/1.75; for (r = [-60, 0, 60]) rotate([0,0,r]) cube([boxWidth, size, height], true);} module nuts(){ height = 1.6; // from calipers overall_width = 20.32; // 0.800 inches between = 14.732; // 0.580 inches short_side_nut = 4.7; // from calipers translate([between/2, 0, height/2]) hexagon(4.7, height); translate([-between/2, 0, height/2]) hexagon(4.7, height);} module ziptie(){ ziptie_width = 4.7625; // 3/16 inch ziptie_height = 3; // i'm guessing standoff_radius = 14.732; // 0.580 inches translate([-standoff_radius/2, -ziptie_width/2, 0]) cube([standoff_radius, ziptie_width, ziptie_height]);} module caster_standoff(){ height = 43; caster_radius = 14.732/2; caster_flange_height = 2.9464 * 2; difference(){ union(){ cylinder(h = height, r = caster_radius); caster_flange();} translate([0, 0, -.1]) scale([1, 1, 1.1]) ball_screws(); translate([0, 0, caster_flange_height]) nuts(); translate([0, 0, height * 3 / 4]) scale([1.1, 1, 1]) ziptie(); rotate([0, 0, 90]) translate([0, 0, height * 1 / 2]) scale([1.1, 1, 1]) ziptie();}} caster_standoff();