r2 = bearing_inner_radius,
h = cap_height - 1); } } }
-module ring(outer_radius, inner_radius) {
- difference() {
- circle(outer_radius);
- circle(inner_radius); } }
-
module fillet(r) {
offset(r = -r) { offset(delta = r) { children(); } } }
arms) {
thinner_radius = (bearing_radius < weight_radius)?
bearing_radius : weight_radius;
- fillet(thinner_radius) {
+ fillet(thinner_radius / 2) {
for(arm = [0 : arms - 1]) {
hull() {
circle(bearing_radius + round_extra);
weight_lip_overhang = 0.3,
bearing_lip_overhang = 0.3,
wall = 3,
- arms = 3) {
+ arms = 3,
+ layer_height = 0.15) {
layer_height = 0.15;
thicker_thickness = (bearing_thickness > weight_thickness) ?
bearing_thickness : weight_thickness;
actual_height = layers * layer_height;
round_radius = actual_height / 2;
+ old_start = 0;
+ old_end = (layers / 2) - 1;
+
+ new_start = old_end / 16;
+ new_end = old_end;
+
+ old_range = old_end - old_start;
+ new_range = new_end - new_start;
+
+ factor = new_range / old_range;
+
+ initial_adjacent = round_radius - (new_start * layer_height);
+ initial_angle = acos(initial_adjacent / round_radius);
+ initial_round_extra = initial_adjacent * tan(initial_angle);
+
mirrored([0, 0, 1]) {
for(layer = [0 : (layers / 2) - 1]) {
translate([0, 0, layer * layer_height - actual_height / 2]) {
linear_extrude(height = layer_height) {
- adjacent = round_radius - (layer * layer_height);
+ new_layer = (layer - old_start) * factor + new_start;
+ adjacent = round_radius - (new_layer * layer_height);
angle = acos(adjacent / round_radius);
- round_extra = adjacent * tan(angle);
+ round_extra = adjacent * tan(angle) - initial_round_extra;
+ echo(round_extra);
spin_footprint(weight_radius,
bearing_radius,
round_extra,