+ ring(weight_holder_radius, weight_radius); } } } }
+
+module spin(weight_radius,
+ weight_thickness,
+ weight_lip_thickness,
+ arms,
+ wall_thickness,
+ bearing_radius,
+ bearing_thickness,
+ spinner_height) {
+ /* TODO: make window size parameter */
+ /* TODO: rethink how lips are done */
+ /* TODO: right now, weight is assumed to be thicker than bearing*/
+ bearing_lip_thickness = (spinner_height - bearing_thickness) / 2;
+ linear_extrude(height = weight_lip_thickness) {
+ spin_2d(weight_radius - 1,
+ arms,
+ wall_thickness + 1,
+ bearing_radius - 1); }
+ linear_extrude(height = bearing_lip_thickness) {
+ ring(bearing_radius, bearing_radius - 1); }
+ linear_extrude(height = spinner_height) {
+ spin_2d(weight_radius, arms, wall_thickness, bearing_radius); }
+ translate([0, 0, spinner_height - bearing_lip_thickness]) {
+ linear_extrude(height = bearing_lip_thickness) {
+ ring(bearing_radius, bearing_radius - 1); } }
+ translate([0, 0, spinner_height - weight_lip_thickness]) {
+ linear_extrude(height = weight_lip_thickness) {
+ spin_2d(weight_radius - 1,
+ arms,
+ wall_thickness + 1,
+ bearing_radius - 1); } } }