+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]);
+ }
+
+}
+