// Backdrop Holder inches = 25.4; eps = 0.01; $fn = 100; id = 0.709 * inches + 0.3; idh = 0.709 * inches + 0.5; // horizontals are tighter ir = id /2; irh = idh/2; th = 2; le = 1 * inches; module Tube(le, di) { difference() { cylinder(h = le, d = di + 2*th); translate([0, 0, -eps]) cylinder(h = le + 2*eps, d = di); } // cylinder(h = 2000, d = 2); // to verify that tubes align } module BackTubes() { rotate([0, 90, 0]) Tube(2*le, idh); rotate([90 - 56.3, 0, 0]) Tube(2*le, id); rotate([90, 0, 0]) Tube(2*le, idh); } module Back() { BackTubes(); translate([0, 0, -ir - th]) linear_extrude(th) projection(cut = false) BackTubes(); } *Back(); module BottomTubes() rotate([0, 0, -90]) { rotate([0, 90, 0]) Tube(2*le, idh); rotate([0, -90, 0]) Tube(2*le, idh); rotate([-90, 0, 0]) Tube(3*le, idh); rotate([36.9, 0, 0]) rotate([-90, 0, 0]) Tube(3*le, id); Tube(2*le, id); } module Bottom() { BottomTubes(); translate([0, 0, -ir - th]) linear_extrude(th) projection(cut = false) BottomTubes(); } *Bottom(); module TopTubes() rotate([0, 0, -90]) { rotate([0, -90-56.3, 0]) Tube(2*le, id); rotate([-90, 0, 0]) Tube(3*le, idh); rotate([-36.9, 0, 0]) rotate([-90, 0, 0]) Tube(3*le, id); rotate([180, 0, 0]) Tube(2*le, id); } module Top() { TopTubes(); translate([0, 0, ir]) linear_extrude(th) projection(cut = false) TopTubes(); } *Top(); module Everything() { Bottom(); translate([48*inches, 0, 0]) rotate([0, 0, 180]) Bottom(); translate([0, 0, 36*inches]) Top(); translate([48*inches, 0, 36*inches]) rotate([0, 0, 180]) mirror([0, 1, 0]) Top(); translate([0, 24*inches, 0]) Back(); translate([48*inches, 24*inches, 0]) rotate([0, 0, 180]) mirror([0, 1, 0]) Back(); } *Everything(); module BuildPlate() { Bottom(); translate([175, 0, 0]) rotate([0, 0, 180]) Bottom(); % translate([0, 100, 0]) rotate([180, 0, 0]) Top(); % translate([175, 100, 0]) rotate([0, 0, 180]) rotate([180, 0, 0]) mirror([0, 1, 0]) Top(); % translate([0, 175, 0]) Back(); % translate([110, 175, 0]) rotate([0, 0, 180]) mirror([0, 1, 0]) Back(); } !BuildPlate();