use ; use ; /* Use with other parts from Dewalt_Lithium_20VMax_to_RYOBI_One+_18_volt_Adapter_ but this part replaces the RYOBI end with a lampholder */ $fn=50; union() { translate([14.8,10,10]) render() difference() { // Chop the top off import("18V_Top_V3.stl"); Tz(30) cube(80, center=true); } // Slanting Neck Ty(1.0) Tz(-9) Rx(30) scale([0.76,1,1]) union() { difference() { cylinder(d=35.6, h=60, $fn=150); cylinder(d=25, h=200, center=true); //cable hole Tz(35) Rx(60) scale([1/0.76,1,1]) // Invert the X scaling so it ends up round cylinder(d=7, h=100); // switch hole //color("red") Tz(30) Ty(15) cube([8,30,13], center=true); // Switch Recess Tz(30) Ty(25) cube([13,20,18], center=true); // Switch lip Tz(30) Ty(8.5) cube([8,10,18], center=true); } Tz(60) difference() { // Ball end sphere(d=35.6, $fn=150); Tz(-25-8) // chop off bottom cube(50, center=true); Tz(25+5) // Slot for light cube([50,12,50], center=true); // Screw hole (use 4mm OD wood screw with washer) scale([1/0.76,1,1]) // Invert the X scaling so it ends up round cylinder(d=3.5, h=100, center=true); // strengthening slots around screw color("red") for (i = [0:4]) { Rz(i*180/5) cube([0.05,12,30], center=true); } } } // fill the RYOBI clip holes copy_mirror([1,0,0]) Tz(-17.65) Ty(-17) Tx(24.7) cube([12,30,6], center=true); }