//Disable $fn and $fa, do not change these $fn=0; $fa=0.01; $fs=0.5; basex=25; basey=25; basez=3.7; holed=5.8; hx=8; hy=8; postx=10; posty=10; postz=36; postholeoffset1=5; postholeoffset2=20; m3=3.1; module base() { difference() { union() { cube([basex,basey,basez],center=true); translate([-postx/2,-posty/2,0])cube([postx,posty,postz]); } translate([-hx,-hy,-basez/2])cylinder(h=basez,d=holed); translate([-hx,hy,-basez/2])cylinder(h=basez,d=holed); translate([hx,0,-basez/2])cylinder(h=basez,d=holed); translate([0,posty/2,postz-postholeoffset1])rotate([90,0,0]) cylinder(h=postx,d=m3); translate([0,posty/2,postz-postholeoffset2])rotate([90,0,0]) cylinder(h=postx,d=m3); translate([-m3/2,-posty/2,postz-postholeoffset2])cube([m3,posty,postholeoffset2-postholeoffset1]); } } laserd=5.8; stubz=12; stubholeoffset=3; laseroffset=8; module stub() { intersection() { difference() { translate([-postx/2,-posty/2,0])cube([postx,posty,stubz]); translate([0,posty/2,stubholeoffset])rotate([90,0,0]) cylinder(h=postx,d=m3); translate([-postx/2,0,laseroffset])rotate([0,90,0]) cylinder(h=postx,d=laserd); } translate([-postx/2,0,0])cube([postx,posty,stubz]); } } pdd=3.0; pdd2=3.9; pddh=1.5; module stub2() { intersection() { difference() { translate([-postx/2,-posty/2,0])cube([postx,posty,stubz]); translate([0,posty/2,stubholeoffset])rotate([90,0,0]) cylinder(h=postx,d=m3); translate([-postx/2,0,laseroffset])rotate([0,90,0]) cylinder(h=postx,d=pdd); translate([-postx/2+postx/2-pddh/2,0,laseroffset])rotate([0,90,0]) cylinder(h=pddh,d=pdd2); } translate([-postx/2,0,0])cube([postx,posty,stubz]); } } adia=4.9; aheight=5.0; ahole=0.5; ax=10; ay=10; az=1; module aperture() { difference() { union() { cylinder(d=adia,h=aheight); cube([ax,ay,az],center=true); } translate([0,0,-az])cylinder(d=ahole,h=aheight+az); } } stemd=1.5; stemoffset=10; stemangle=45.0; module stub3() { intersection() { difference() { translate([-postx/2,-posty/2,0])cube([postx,posty,stubz]); translate([0,posty/2,stubholeoffset])rotate([90,0,0]) cylinder(h=postx,d=m3); translate([-postx/2,0,stemoffset])rotate([0,0,stemangle])rotate([0,90,0]) cylinder(h=2*postx,d=stemd); } // translate([-postx/2,0,0])cube([postx,posty,stubz]); } } mirrord=2.3; module stub4() { intersection() { difference() { translate([-postx/2,-posty/2,0])cube([postx,posty,stubz]); translate([0,posty/2,stubholeoffset])rotate([90,0,0]) cylinder(h=postx,d=m3); translate([-postx/2,0,laseroffset])rotate([0,90,0]) cylinder(h=postx,d=mirrord); } translate([-postx/2,0,0])cube([postx,posty,stubz]); } } laserd2=11.0; stubz2=17; laseroffset2=11; posty2=12; module stub5() { intersection() { difference() { translate([-postx/2,-posty/2,0])cube([postx,posty2,stubz2]); translate([0,posty2,stubholeoffset])rotate([90,0,0]) cylinder(h=2*posty2,d=m3); translate([-postx/2,0,laseroffset2])rotate([0,90,0]) cylinder(h=postx,d=laserd2); } translate([-postx/2,0,0])cube([postx,posty,stubz2]); } } base();