2022-06-06 13:11:46 +08:00
|
|
|
use <shape_circle.scad>
|
|
|
|
use <ring_extrude.scad>
|
2019-09-06 18:03:15 +08:00
|
|
|
|
|
|
|
ball_radius = 10;
|
|
|
|
mobius_radius = 30;
|
|
|
|
ring_radius = 60;
|
|
|
|
spacing = 0.5;
|
|
|
|
with_ball = "YES";
|
|
|
|
fn = 96;
|
|
|
|
|
|
|
|
module bearing_captured_in_mobius_cut(ball_radius, mobius_radius, ring_radius, spacing, with_ball, fn) {
|
|
|
|
$fn = fn;
|
|
|
|
|
|
|
|
ball_track_radius = ball_radius + spacing;
|
|
|
|
trans_pt = [mobius_radius - ball_track_radius + ball_track_radius / 3, 0, 0];
|
|
|
|
|
2020-03-17 14:29:27 +08:00
|
|
|
circle_points = [for(p = shape_circle(ball_track_radius)) p + trans_pt];
|
2019-09-06 18:03:15 +08:00
|
|
|
|
|
|
|
difference() {
|
2019-09-26 08:53:47 +08:00
|
|
|
rotate_extrude()
|
|
|
|
translate([ring_radius, 0, 0])
|
|
|
|
circle(mobius_radius);
|
|
|
|
|
2019-09-06 18:03:15 +08:00
|
|
|
ring_extrude(circle_points, radius = ring_radius, twist = 180);
|
2019-09-26 08:53:47 +08:00
|
|
|
|
2019-09-06 18:03:15 +08:00
|
|
|
rotate([180, 0, 0])
|
2019-09-26 08:53:47 +08:00
|
|
|
ring_extrude(circle_points, radius = ring_radius, twist = 180);
|
2019-09-06 18:03:15 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
if(with_ball == "YES") {
|
|
|
|
translate([ring_radius, 0, 0] + trans_pt) sphere(ball_radius);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bearing_captured_in_mobius_cut(ball_radius, mobius_radius, ring_radius, spacing, with_ball, fn);
|