Pointy ThingThis is a quick and dirty pointy thing I whipped out to impale some styrofoam half globes in front of some LED lights to disperse the light some: // A little clip to slide on the aluminum blocks holding the LED lights and // provide a pointy bit that can impale half a styrofoam sphere to diffuse // the light. blockthick=6.31; // thickness of aluminum block blockwide=25.45; // width of aluminum block clipwidth=4; // how wide an area to clip clipextra=3; // how much extra space over clip clipthick=1.5; // how thick are clip walls cliptab=2.5; // how much of block to grab with tabs pointlen=6; // how long is the pointy bit pointbase=1.8; // point base radius pointtip=0.5; // point tip radius fudge=0.01; // A half cone that will serve as the pointy bit to impale the styrofoam // module pointy_bit() { difference() { rotate([0,90,0]) cylinder(r1=pointbase, r2=pointtip, h=pointlen, $fn=16); translate([-1,-pointlen, -pointlen*2]) cube([pointlen*2, pointlen*2, pointlen*2]); } } // The top part of the clip with the pointy bit sticking out of it // module topwall() { union() { translate([0,-(blockwide+2*clipthick)/2,0]) cube([clipthick,blockwide+2*clipthick,clipwidth]); translate([clipthick-fudge,0,0]) pointy_bit(); } } // The top part with the extra spacers added to clear the screw heads // module topspace() { union() { translate([clipextra-fudge,0,0]) topwall(); translate([0,-(blockwide+2*clipthick)/2,0]) cube([clipextra,clipthick,clipwidth]); translate([0,blockwide/2,0]) cube([clipextra,clipthick,clipwidth]); } } // All the above stuff with the top tabs to grab the block added // module toptab() { union() { translate([clipthick-fudge,0,0]) topspace(); translate([0,-(blockwide+2*clipthick)/2,0]) cube([clipthick,clipthick+cliptab,clipwidth]); translate([0,blockwide/2 - cliptab,0]) cube([clipthick,clipthick+cliptab,clipwidth]); } } // Now add the spacers for the thickness of the block // module blockspace() { union() { translate([blockthick-fudge,0,0]) toptab(); translate([0,-(blockwide+2*clipthick)/2,0]) cube([blockthick,clipthick,clipwidth]); translate([0,blockwide/2,0]) cube([blockthick,clipthick,clipwidth]); } } // Finally stick on the bottom tabs // module bottomtab() { union() { translate([clipthick-fudge,0,0]) blockspace(); translate([0,-(blockwide+2*clipthick)/2,0]) cube([clipthick,clipthick+cliptab,clipwidth]); translate([0,blockwide/2 - cliptab,0]) cube([clipthick,clipthick+cliptab,clipwidth]); } } bottomtab(); Printed one to test the fit, then printed 3 more: Here's how it clips on to the aluminum blocks I'm using as heat sinks for the LEDs: Here's how the styrofoam gets impaled: And here are the lights illuminating my 3D scanner turntable: Go back to my main Solidoodle page. |