$fn=60; include include tube_dia=16; delta=0.5; module frontScrew() { cylinder(h=20, d=5.4, center=true); rotate([0,0,0]) { translate ([0,0,-8]) DIN931("M5"); translate ([0,0,-10]) DIN931("M5"); } * cylinder(h=25, d=5, center=true); translate([0,0,8]) cylinder(h=6, d=9); } module backScrew() { cylinder(h=5,d=3); DIN931("M3"); translate ([0,0,2]) DIN931("M3"); } // Assembled version // [tubes] * color("grey") { translate([-20,0,-80]) tube(od=tube_dia,wall=2,h=200); translate([0,0,-140]) tube(od=tube_dia,wall=2,h=200); translate([20,0,-80]) tube(od=tube_dia,wall=2,h=200); } // [top] * translate([0,0,20]) { difference() { cuboid([65,25,20], rounding=5); translate([-20,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1); translate([20,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1); } translate([0,-16,0]) difference() { ycyl(l=40, d=20, rounding=10); translate([0,-9,0]) xcyl(l=20, d=6); translate([10.5,-12,0]) xcyl(l=6, d=30); translate([-10.5,-12,0]) xcyl(l=6, d=30); } } // [middle] * translate([0,0,-30]) difference() { cuboid([65,25,20], rounding=5); translate([-20,0,0]) zcyl(l=30, d=tube_dia+1); translate([0,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1); translate([20,0,0]) zcyl(l=30, d=tube_dia+1); } * // [bottom] translate([0,0,-175]) difference() { union() { cuboid([65,25,20], rounding=5); translate([0,-3,0]) rotate([90,0,0]) prismoid(size1=[25,12], size2=[20,12], h=24, rounding=1); translate([0,-27,0]) scale([1,.7,1]) zcyl(l=12, d=20, rounding=1); } translate([-20,0,5]) zcyl(l=25, d=tube_dia+delta, rounding=1); zcyl(l=30, d=tube_dia+1); translate([20,0,5]) zcyl(l=25, d=tube_dia+delta, rounding=1); rotate([90,0,180]) translate([0,0,8]) backScrew(); zcyl(l=12, d=16, rounding=-1); translate([0,-23,0]) cuboid([11,22,12], rounding=-1); translate ([0,-23,0]) rotate([0,-90,0]) frontScrew(); } // Printable version //[top] // V1 rotate([90,0,0]) { difference() { cuboid([65,25,20], rounding=5); translate([-20,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1); translate([20,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1); } translate([0,0,16]) difference() { zcyl(l=40, d=25, rounding=12.5); translate([0,0,9]) xcyl(l=20, d=6); translate([10.5,0,10]) xcyl(l=6, d=30); translate([-10.5,0,10]) xcyl(l=6, d=30); } } // V2 * rotate([00,0,0]) { difference() { cuboid([65,25,20], rounding=5); translate([-20,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1); translate([20,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1); } translate([0,-16,0]) difference() { ycyl(l=40, d=20, rounding=10); translate([0,-9,0]) xcyl(l=20, d=6); translate([10.5,-12,0]) xcyl(l=6, d=30); translate([-10.5,-12,0]) xcyl(l=6, d=30); } } //[middle] translate([0,30,0]) rotate([90,0,0]) difference() { cuboid([65,25,20], rounding=5); translate([-20,0,0]) zcyl(l=30, d=tube_dia+1); translate([0,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1); translate([20,0,0]) zcyl(l=30, d=tube_dia+1); } //[bottom] translate([0,60,0]) rotate([-90,0,0]) difference() { union() { cuboid([65,25,20], rounding=5); translate([0,-3,0]) rotate([90,0,0]) prismoid(size1=[35,20], size2=[22,20], h=24, rounding=1); translate([0,-26.5,0]) scale([1,.55,1]) zcyl(l=20, d=22, rounding=1); } translate([-20,0,5]) zcyl(l=25, d=tube_dia+delta, rounding=1); zcyl(l=30, d=tube_dia+1); translate([20,0,5]) zcyl(l=25, d=tube_dia+delta, rounding=1); rotate([90,0,180]) translate([0,0,8.7]) backScrew(); zcyl(l=12, d=16, rounding=-1); translate([0,-24,0]) cuboid([11,23,20], rounding=-1); translate ([0,-23,0]) rotate([0,-90,0]) frontScrew(); }