infty = 100; eps = 0.01; /* // FT Mini Scout - 5 cm, light wheel_d = 50; wheel_h = 3; wheel_thick_outer = 0.5; wheel_thick_inner = 1.5; wheel_rim = 4.5; min_wall = 0.5; spokes = 5; spoke_w = 3.5; spoke_h = 2; spoke_xoff = 10; spoke_r = 11.5; spoke_center_h = 5; center_d = 12; center_d2 = 6; center_hole = 1.2 + 1.3; center_h = 8; */ // Sky Surfer 1400 - 6.5 cm, heavier wheel_d = 65; wheel_h = 5; wheel_thick_outer = 1.0; wheel_thick_inner = 2.0; wheel_rim = 6; min_wall = 1; spokes = 5; spoke_w = 5; spoke_h = 3.5; spoke_xoff = 12; spoke_r = 15.3; spoke_center_h = 8; center_d = 16; center_d2 = 9; center_hole = 2.5 + 1.0; center_h = 12; wheel_d1 = wheel_d + wheel_h/2; // center of the rim module spoke() { intersection() { translate([-spoke_r, spoke_xoff, 0]) rotate_extrude($fn = 128) { translate([spoke_r, 0, 0]) polygon(points = [ [-spoke_w/2, 0], [spoke_w/2, 0], [spoke_w/2, min_wall], [min_wall/2, spoke_h], [-min_wall/2, spoke_h], [-spoke_w/2, min_wall]] ); } cylinder(r = wheel_d/2, h = infty); translate([-infty/2, spoke_xoff, 0]) cube(infty); } hull() { // front bottom translate([-spoke_w/2, spoke_xoff, 0]) cube([spoke_w, eps, min_wall]); // front top translate([-min_wall/2, spoke_xoff, 0]) cube([min_wall, eps, spoke_h]); // center bottom translate([-spoke_w, 0, 0]) cube([2*spoke_w, eps, min_wall]); // center top translate([-min_wall/2, 0, spoke_center_h]) cube([min_wall, eps, eps]); } } module body() { // rim difference() { hull() { cylinder(r = wheel_d/2, h = wheel_h, $fn = 128); translate([0, 0, wheel_h/2-eps]) cylinder(r = wheel_d1/2, h = 2*eps, $fn = 128); } translate([0,0,min_wall-eps]) cylinder(r1 = wheel_d/2 - wheel_thick_inner, r2 = wheel_d/2 - wheel_thick_outer, h = wheel_h - min_wall+ 2*eps); translate([0,0,-eps]) cylinder(r = wheel_d/2 - wheel_rim, h = min_wall+2*eps); } // spokes for (a = [0:360/spokes:360-eps]) { rotate([0, 0, a]) spoke(); } // center cylinders cylinder(r1 = center_d/2, r2 = center_d2/2, h = center_h/2+eps, $fn = 4*spokes); translate([0, 0, center_h/2]) cylinder(r1 = center_d2/2, r2 = center_hole/2 + 2*min_wall, h = center_h/2, $fn = 4*spokes); } module wheel() { difference() { body(); // center hole translate([0, 0, -eps]) cylinder(r = center_hole/2, h = center_h + 2*eps); } } stopper_d = 6; stopper_h = 3; stopper_hole = 1.2 + 0.5; module stopper() { difference() { cylinder(r1 = stopper_d/2, r2 = stopper_hole/2 + 2*min_wall, h = stopper_h); translate([0, 0, -eps]) cylinder(r = stopper_hole/2, h = stopper_h + 2*eps); } } for (y = [-1, 1]) scale([1, y, 1]) translate([0, wheel_d/2 + 3, 0]) { wheel(); /* translate([wheel_d/2 + stopper_d, 0, 0]) stopper(); */ }