$fn=60; include include ; tube_length=400; tube_diam=16; module screw_back() { *nutcatch_parallel("M5", clh=0.1); translate([0,0,27]) hole_through(name="M5", l=45, cld=0.1, h=10, hcld=0.4); rotate([0,0,90]) translate([0,0,-10]) nutcatch_sidecut("M5", l=20, clk=0.1, clh=0.1, clsl=0.1); } module screw_front() { *nutcatch_parallel("M5", clh=0.1); translate([0,0,26]) hole_through(name="M5", l=24, cld=0.1, h=3, hcld=0.4); rotate([0,0,-90]) translate([0,0,10]) nutcatch_sidecut("M5", l=20, clk=0.2, clh=0.5, clsl=0.5); } module end() { difference() { cuboid([100,20,50], rounding=2); translate([-30,0,0]) ycyl(d=16.5, l=10, rounding2=-1, anchor=FRONT); translate([30,0,0]) ycyl(d=16.5, l=10, rounding2=-1, anchor=FRONT); rotate([0,0,180]) screw_front(); } } module mid() { difference() { union() { cuboid([100,30,25], rounding=2, anchor=TOP); cuboid([100,30,25], rounding=2, anchor=BOTTOM); } translate([-30,0,0]) ycyl(d=16.5, l=30, rounding=-2); translate([30,0,0]) ycyl(d=16.5, l=30, rounding=-2); cuboid([110,40,2]); translate([0,5,0]) screw_back(); translate([0,-7,0]) screw_front(); } } color("grey") rotate([90,0,0,]) { *tube(od=tube_diam, id=tube_diam-3, l=tube_length); translate([-30,0,0]) tube(od=16, id=14, l=400); translate([30,0,0]) tube(od=16, id=14, l=400); } translate([0,tube_length/2,0]) mirror([0,1,0]) end(); translate([0,-tube_length/2,0]) end(); color("red") { mid(); }