Pointy Thing

This 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:

pointy.scad

// 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.

Page last modified Fri Sep 12 12:51:57 2014