footprint_radius_safety = 0.2;
cap_height = 3;
bearing_thickness_safety = 0.6;
- finger_spot_height = cap_height / 10;
+ finger_spot_height = cap_height * 2 / 3;
+ stripes = 3;
difference() {
union() {
+ footprint_height
+ bearing_thickness / 2
- bearing_thickness_safety) {
- circle(bearing_inner_radius); }
- }
+ circle(bearing_inner_radius + 0.1); } }
translate([0, 0, -0.01]) {
cylinder(r1 = bearing_inner_radius,
r2 = bearing_inner_radius - tan(30) * finger_spot_height,
- h = finger_spot_height); } } }
+ h = finger_spot_height);
+ for(stripe = [0 : stripes - 1]) {
+ rotate((stripe / stripes) * 360) {
+ linear_extrude(height = finger_spot_height) {
+ polygon([[0, 0],
+ [bearing_cover_radius * 2, 0],
+ [cos(3 + 360 / (stripes * 2))
+ * bearing_cover_radius * 2,
+ sin(3 + 360 / (stripes * 2))
+ * bearing_cover_radius * 2]]); } } } } } }
module donut(height, footprint_radius) {
bread_radius = height / 2;
round_extra,
wall,
arms); } } } }
- cylinder(h = actual_height + 0.1,
+ // bearing window hole
+ /*cylinder(h = actual_height + 0.1,
r = bearing_radius - bearing_lip_overhang,
- center = true);
+ center = true);*/
+ linear_extrude(height = actual_height + 0.1, center = true) {
+ intersection() {
+ polygon([[bearing_radius + 3 * wall, 0],
+ [cos(120) * (bearing_radius + 3 * wall),
+ sin(120) * (bearing_radius + 3 * wall)],
+ [cos(240) * (bearing_radius + 3 * wall),
+ sin(240) * (bearing_radius + 3 * wall)]]);
+ circle(bearing_radius + 0.1); } }
+ // bearing cavity
cylinder(h = bearing_thickness + 0.05,
r = bearing_radius + 0.15,
center = true);
+ // arm holes
for(arm = [0 : arms - 1]) {
rotate(arm * (360 / arms)) {
translate([bearing_radius + wall + weight_radius, 0]) {
- cylinder(h = actual_height + 0.1,
- r = weight_radius - weight_lip_overhang,
- center = true);
+ // weight window hole
+ mirrored([0, 0, 1]) {
+ translate([0, 0, (weight_thickness + 0.05) / 2]) {
+ linear_extrude(height = wall + 0.1) {
+ intersection(){
+ polygon([[cos(0) * (weight_radius + 2.5 * wall),
+ sin(0) * (weight_radius + 2.5 * wall)],
+ [cos(120) * (weight_radius + 2.5 * wall),
+ sin(120) * (weight_radius + 2.5 * wall)],
+ [cos(240) * (weight_radius + 2.5 * wall),
+ sin(240) * (weight_radius + 2.5 * wall)]]);
+ circle(weight_radius + 0.2); } } } }
+ // weight cavity
cylinder(h = weight_thickness + 0.05,
- r = weight_radius + 0.15,
+ r = weight_radius + 0.20,
center = true); } } } } }
module spin_donut(weight_radius,