infty = 100;
eps = 0.01;
-wheel_d = 60;
-wheel_h = 4;
-wheel_thick = 1;
+wheel_d = 50;
+wheel_h = 3;
+wheel_d1 = wheel_d + wheel_h/2;
+wheel_thick_outer = 0.5;
+wheel_thick_inner = 1.5;
+wheel_rim = 3.5;
+
+min_wall = 0.5;
spokes = 5;
-spoke_w = 5;
-spoke_h = 3;
+spoke_w = 3.5;
+spoke_h = 1.5;
-center_d = 8;
-center_hole = 3;
+center_d = 5;
+center_hole = 1;
+center_h = 8;
module body() {
// rim
difference() {
- cylinder(r = wheel_d/2, h = wheel_h, $fn = 128);
+ 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_thick, h = wheel_h + 2*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])
- translate([2, 0, 0])
hull() {
translate([-spoke_w/2, 0, 0])
- cube([spoke_w, wheel_d/2 - wheel_thick/2, eps]);
- translate([-eps/2, 0, spoke_h-eps])
- cube([eps, wheel_d/2 - wheel_thick/2, eps]);
+ cube([spoke_w, wheel_d/2 - min_wall/2, min_wall]);
+ translate([-min_wall/2, 0, spoke_h-eps])
+ cube([min_wall, wheel_d/2 - min_wall/2, eps]);
}
}
- cylinder(r = center_d/2, h = wheel_h);
+ cylinder(r1 = center_d/2, r2 = center_hole/2 + 2*min_wall, h = center_h);
}
difference() {
body();
// center hole
translate([0, 0, -eps])
- cylinder(r = center_hole/2, h = wheel_h + 2*eps);
+ cylinder(r = center_hole/2, h = center_h + 2*eps);
}