difference() { cage(); ptfe(); } edges(); mount(); module mount() { difference() { cylinder(h=4, d=116, $fn=500); translate([0, 0, -1]) cylinder(h=6, d=86, $fn=500); for (a = [0 : 30 : 330]) { rotate([0, 0, a]) { translate([47.5, -5, -1]) cube([5, 10, 6]); translate([47.5, -15, 5]) rotate([-11.31, 0, 0]) cube([5, 15, 2]); translate([47.5, 0, 2]) rotate([11.31, 0, 0]) cube([5, 15, 2]); } } } translate([0, 0, 2]) torus2(d_major=86, d_minor=4, $fn=500); translate([0, 0, 2]) torus2(d_major=116, d_minor=4, $fn=500); for (a = [0 : 45 : 315]) { rotate([0, 0, a]) { translate([57, -5, 0]) cube([46, 10, 4]); translate([57, -5, 2]) rotate([0, 90, 0]) cylinder(h=46, d=4, $fn=50); translate([57, 5, 2]) rotate([0, 90, 0]) cylinder(h=46, d=4, $fn=50); } } } module ptfe() { rotate([0, 0, 0.7]) translate([208.5 / 2, 0, 45]) rotate([90, 0, 30]) cylinder(h=50, d=4.2, center=true, $fn=100); rotate([0, 0, -0.7]) translate([208.5 / 2, 0, 57]) rotate([90, 0, -30]) cylinder(h=50, d=4.2, center=true, $fn=100); } module edges() { translate([0, 0, 100]) torus2(d_major=206, d_minor=4, $fn=500); translate([0, 0, 2]) torus2(d_major=206, d_minor=4, $fn=500); } module cage() { difference() { translate([0, 0, 2]) cylinder(h=98, d=210, $fn=500); translate([0, 0, -20]) cylinder(h=150, d=204, $fn=500); for (a = [14 : 6 : 351]) { for (h = [10.5 : 18 : 84]) { rotate([0, 0, a]) translate([100, 0, h]) rotate([0, 90, 0]) cylinder(h=50, d=9, $fn=50); } } for (a = [11 : 6 : 348]) { for (h = [19.5 : 18 : 93]) { rotate([0, 0, a]) translate([100, 0, h]) rotate([0, 90, 0]) cylinder(h=50, d=9, $fn=50); } } } } module torus(r_major, r_minor) { rotate_extrude() translate([r_major, 0, 0]) circle(r=r_minor); } module torus2(d_major, d_minor) { torus(r_major=d_major / 2, r_minor=d_minor / 2); }