$fn=60; // starting places for modfication // will likely need adjustment for 3D printer calibration and your particular parts, machine and preferences // units in mm $thick=8; // overall thickness $extra=8; // addotional stability for pointer tube $base=5; // mating plate thickness (width) $wall=2.5; // pointer holder wall thickness $stretch=1.25; // thicken the setscrew wall area $radius_l=6.75; // laser pointer $radius_m=1.7; // mounting holes $radius_s=1.4; // setscrews $length=40; // length of arms, mounting to center of laser holder $mount_x=36; // edge of bracket with screws $mount_y=27; // other edge of bracket $mount_d=26; // distance between mounting holes %difference() // mock up the laser nozzle and mounting bracket { union() { translate([0,0,$thick/2]) color("blue") cube([$mount_x,$mount_y,$thick],true); translate([$mount_d/2,-$mount_y,$thick/2]) rotate([90,0,180]) cylinder($mount_y*2+$base*2,$radius_m,$radius_m); translate([-$mount_d/2,-$mount_y,$thick/2]) rotate([90,0,180]) cylinder($mount_y*2+$base*2,$radius_m,$radius_m); color("black") cylinder($thick,10,10); } } difference() { union() {// mounting plate translate([-$mount_x/2,$mount_y/2,0]) cube([$mount_x,$base,$thick]); hull() {// arm #1 translate([$mount_x/2-$base,$mount_y/2,0]) cube([$base,.01,$thick]); // tether the hull to a face of the mount translate([$length,$length,0]) rotate([0,0,315]) scale([1,$stretch,1]) cylinder($thick,$radius_l+$wall,$radius_l+$wall); } translate([$length,$length,0]) //extra cylinder($thick+$extra,$radius_l+$wall,$radius_l+$wall); hull() {// arm #2 translate([-$mount_x/2,$mount_y/2,0]) cube([$base,.01,$thick]); translate([-$length,$length,0]) rotate([0,0,45]) scale([1,$stretch,1]) cylinder($thick,$radius_l+$wall,$radius_l+$wall); } translate([-$length,$length,0]) //extra cylinder($thick+$extra,$radius_l+$wall,$radius_l+$wall); } translate([$length,$length,0]) cylinder($thick+$extra,$radius_l,$radius_l); // laser holder #1 translate([-$length,$length,0]) cylinder($thick+$extra,$radius_l,$radius_l); // laser holder #2 // mounting holes translate([$mount_d/2,$mount_y/2,$thick/2]) rotate([90,0,180]) cylinder($base,$radius_m,$radius_m); translate([-$mount_d/2,$mount_y/2,$thick/2]) rotate([90,0,180]) cylinder($base,$radius_m,$radius_m); // setscrew holes translate([$length,$length,$thick/2]) rotate([270,0,315]) cylinder(($radius_l+$wall)*$stretch,$radius_s,$radius_s); translate([-$length,$length,$thick/2]) rotate([270,0,45]) cylinder(($radius_l+$wall)*$stretch,$radius_s,$radius_s); }