Files
spoolmount/unfuck the mmu/spool cage.scad
T

143 lines
2.9 KiB
OpenSCAD

inner_ring();
outer_ring();
spokes();
module inner_ring() {
difference() {
cylinder(h=4, d=70, $fn=500);
translate([0, 0, -1])
cylinder(h=6, d=55, $fn=500);
}
}
module outer_ring() {
difference() {
union() {
cylinder(h=4, d=210, $fn=500);
bend1();
bend2();
ring();
}
translate([0, 0, -1])
cylinder(h=6, d=195, $fn=500);
translate([-220, -150, -10])
cube([220, 300, 200]);
}
}
module spokes() {
for (a = [-55 : 27.5 : 55]) {
rotate([0, 0, a])
translate([30, -5, 0])
cube([70, 10, 4]);
}
translate([0, 30, 0])
cube([10, 70, 4]);
translate([0, -100, 0])
cube([10, 70, 4]);
}
module bend1() {
translate([0, 0, 10])
rotate_extrude($fn=500)
translate([105, 0, 0])
difference() {
circle(d=20, $fn=500);
circle(d=12, $fn=500);
translate([-10, 0, 0])
square(20);
translate([-20, -10, 0])
square(20);
}
}
module bend2() {
translate([0, 0, 75])
rotate_extrude($fn=500)
translate([100, 0, 0])
difference() {
circle(d=30, $fn=500);
circle(d=22, $fn=500);
translate([-20, -40, 0])
square(40);
translate([-30, 0, 0])
rotate([0, 0, -15])
square(60, center=true);
}
}
module ring() {
difference() {
union() {
translate([0, 0, 10])
cylinder(h=65, d=230, $fn=500);
difference() {
translate([-13, 0, 44])
// torus(i=57, o=147, xs=0.5, $fn=500);
torus2(r1=101, r2=45, xs=0.6, $fn=500);
cube([200, 200, 200]);
}
}
translate([0, 0, -20])
cylinder(h=150, d=221, $fn=500);
for (a = [-84 : 6 : 84]) {
for (h = [15 : 18 : 69]) {
p = (a + 84) / 168;
d = 10 * pow(p, 0.8);
rotate([0, 0, a])
translate([100, 0, h])
rotate([0, 90, 0])
cylinder(h=50, d=d, $fn=50);
}
}
for (a = [-87 : 6 : 87]) {
for (h = [24 : 18 : 63]) {
p = (a + 87) / 174;
d = 10 * pow(p, 0.8);
rotate([0, 0, a])
translate([100, 0, h])
rotate([0, 90, 0])
cylinder(h=50, d=d, $fn=50);
}
}
}
}
module torus(i, o, xs=1.0, ys=1.0) {
r = (o - i) / 2;
rotate_extrude()
translate([i + r, 0, 0])
scale([xs, ys, 1.0])
circle(r);
}
module torus2(r1, r2, xs=1.0, ys=1.0) {
rotate_extrude()
translate([r1, 0, 0])
scale([xs, ys, 1.0])
circle(r2);
}