$fn=60; include include l_width=12; p_height=8; module bearing() { color("grey") tube(l=5, od=16, id=4); } module m4_screw() { rotate([0,180,90]) { DIN931("M4"); translate([0,0,-1.3]) DIN931("M4"); } } module arm() { difference() { union() { cuboid([150,20,7], rounding=2); translate([74,0,0]) zcyl(l=7, d=20, rounding=2); translate([-74,0,0]) zcyl(l=7, d=20, rounding=2); } translate([74,0,2]) zcyl(l=5, d=12.4, rounding=-1); translate([-74,0,0]) { zcyl(l=7, d=12.5, rounding=-1); translate([0,0,2]) bearing(); } translate([-10,0,0]) { zcyl(l=7, d=12.5, rounding=-1); translate([0,0,2]) bearing(); } translate([35,0,0]) { translate([0,10,0]) zcyl(l=2, d=10, rounding=1); translate([0,6,0]) zcyl(l=10, d=3.5, rounding=0); translate([0,-10,0]) zcyl(l=2, d=10, rounding=1); translate([0,-6,0]) zcyl(l=10, d=3.5, rounding=0); } } } module base() { difference() { union() { prismoid(size1=[70,l_width], size2=[22,l_width], xang=[51,62], h=61, rounding=2); translate([21,0,34]) cuboid([28,l_width,68], rounding=2); translate([9,0,55]) ycyl(l=l_width, d=26, rounding=2); rotate([0,-30,0]) translate([38,0,50]) zcyl(l=15, d=10, rounding=1); } rotate([0,-30,0]) translate([38,0,38]) { cuboid([9,l_width+10,28], rounding=4.5); translate([0,0,15.5]) zcyl(l=8.5, d=5, rounding=-1); } translate([8,0,22]) rotate([0,-40,0]) scale([.70,1,1]) ycyl(l=l_width, d=30, rounding=-2); } } /*[guide]*/ color("red") { rotate([0,-30,0]) { translate([36,0,42]) { difference() { ycyl(l=130, d=9, rounding=3); * cuboid([9,130,9], rounding=3); translate([0,50,-1.5]) rotate([0,180,90]) m4_screw(); translate([0,-50,-1.5]) rotate([0,180,90]) m4_screw(); } } } } /*[blade]*/ color("grey") { translate([28.5,0,60.5]) cuboid([14.25,100,.5]); } /*[machine]*/ color("cyan", alpha=1) { difference() { union() { // plate translate([-7.5,0,0]) difference() { cuboid([85,120,p_height], rounding=2); zcyl(l=p_height, d=60, rounding=-2); } // bases translate([0,-50,0]) base(); translate([0,50,0]) base(); translate([-15,-51,20]) ycyl(l=l_width+1, d=8.5, rounding=1); translate([-15,51,20]) ycyl(l=l_width+1, d=8.5, rounding=1); // blade support translate([22,0,56]) prismoid(size1=[7,102], size2=[16,102], xang=[20,80], h=4); // rotate([0,30,0]) { translate([-7,0,71]) { translate([0,-52.5,0]) zcyl(l=10, d=7, rounding=1); translate([0,52.5,0]) zcyl(l=10, d=7, rounding=1); } } } // spring screw holes rotate([0,30,0]) { translate([-7,0,72]) { translate([0,-52.5,0]) zcyl(l=15, d=3.5); translate([0,52.5,0]) zcyl(l=15, d=3.5); } } // blade & holes translate([30,0,60.5]) cuboid([14.25,102,1.5], rounding=.75); translate([22,0,57.5]) { translate([0,-35,0]) DIN931("M3") zcyl(l=10, d=3.75); DIN931("M3") zcyl(l=10, d=3.75); translate([0,35,0]) DIN931("M3") zcyl(l=10, d=3.75); } // plate holes translate([25,35,0]) { zcyl(l=p_height, d=4, rounding=-1); translate([0,0,p_height/2-1]) zcyl(l=1.5, d1=4, d2=9); } translate([-41,50,0]) { zcyl(l=p_height, d=4, rounding=-1); translate([0,0,p_height/2-1]) zcyl(l=1.5, d1=4, d2=9); } translate([25,-35,0]) { zcyl(l=p_height, d=4, rounding=-1); translate([0,0,p_height/2-1]) zcyl(l=1.5, d1=4, d2=9); } translate([-41,-50,0]) { zcyl(l=p_height, d=4, rounding=-1); translate([0,0,p_height/2-1]) zcyl(l=1.5, d1=4, d2=9); } // side screw holes translate([-15,0,20]) { translate([0,51,0]) ycyl(l=l_width+1, d=4.5, rounding=-1); translate([0,-51,0]) ycyl(l=l_width+1, d=4.5, rounding=-1); translate([0,43.5,0]) rotate([-90,0,0]) m4_screw(); translate([0,-43.5,0]) rotate([90,0,0]) m4_screw(); } } } /*[arms]*/ translate([59,-60,20]) rotate([-90,0,0]) arm(); translate([59,60,20]) rotate([90,0,0]) arm(); color("pink", alpha=0.5) { * translate([-74,-50,0]) ycyl(l=1, d=130); translate([49,-60,57]) rotate([-90,-30,0]) arm(); } /*[tubes]*/ color("grey", alpha=.75) { translate([49,0,20]) { difference() { union() { ycyl(l=110, d=16, rounding=1); ycyl(l=112, d=8.5, rounding=1); } translate([0,49,0]) ycyl(l=15, d=4.2, rounding=-1); translate([0,-49,0]) ycyl(l=15, d=4.2, rounding=-1); } } translate([42.5,0,54]) { difference() { union() { ycyl(l=110, d=16, rounding=1); ycyl(l=112, d=8.5, rounding=1); } translate([0,49,0]) ycyl(l=15, d=4.2, rounding=-1); translate([0,-49,0]) ycyl(l=15, d=4.2, rounding=-1); } } } * color("grey", alpha=0.5) { translate([74,0,0]) rotate([90,0,0]) tube(l=107, od=12, id=10); translate([-10,0,0]) rotate([90,0,0]) tube(l=90, od=20, id=16); }