+module cap(bearing_inner_radius,
+ bearing_cap_footprint_radius,
+ bearing_cover_radius,
+ bearing_thickness) {
+ footprint_height = 1.6;
+ footprint_radius_safety = 0.25;
+ cap_height = 3;
+ bearing_cover_radius_safety = 0.75;
+ bearing_thickness_safety = 0.2;
+
+ difference() {
+ union() {
+ cylinder(r1 = bearing_cover_radius - tan(30) * cap_height,
+ r2 = bearing_cover_radius,
+ h = cap_height);
+ linear_extrude(height = cap_height + footprint_height) {
+ circle(bearing_cap_footprint_radius - footprint_radius_safety); }
+ linear_extrude(height = cap_height
+ + footprint_height
+ + bearing_thickness / 2
+ - bearing_thickness_safety) {
+ circle(bearing_inner_radius); } }
+ translate([0, 0, -0.01]) {
+ cylinder(r1 = bearing_inner_radius + tan(30) * (cap_height - 1),
+ r2 = bearing_inner_radius,
+ h = cap_height - 1); } } }
+