Laser Cut Adaptable Wire Dispenser in OpenSCAD

December 2, 2014

I wanted a wire dispenser that wasn’t fixed in place so I could move it to where I was working. To my surprise, such a thing doesn’t exist (I couldn’t seem to find fixed ones either, other than using a kitchen towel rail). Keen to put my new found love for OpenSCAD to use, I set about making such a thing.

The projection()` command in *OpenSCAD* allows one to easily create 3d objects that can be exported as 2d .dxf for printing
The projection() command in OpenSCAD allows one to easily create 3d objects that can be exported as 2d .dxf for printing

OpenSCAD really suits this type of design requirement; something that is going to need to scale user defined variables (the wire reel in this case). I didn’t want to create a design for 6 wire reels from a specific manufacturer, then find they change their spindle, or I decide I need more reels. It’s particularly hard scaling a laser cut box because of all the teeth/dents that slot it together. With a GUI based CAD program, you’d send hours fiddling around with the spacings/length or trying to create patterns – then still ending up with bits that don’t fit together! This is actually my second project in OpenSCAD that I’d bashed together quickly. I’ve got another more complex project to document too.

Well designed OpenSCAD code allows distances to be created exactly the right size by defining the laser kerf – vital for creating slotted designs with glueless tolerances – and for the whole thing to scale gracefully to the new conditions.  I’m not saying mine is necessarily that well designed (i’m still learning!) but it does the job. The header of my wire dispenser code looks like this:

/* ==================================*/

// --- OBJECT DIA AND SETTINGS ---

// Reel Info
reelOD = 70; // reel outer diameter
reelID = 25; // reel inner diameter
reelW = 31; // reel = 18; // supporting dowel outer dia
buffer = 10; // buffer around the edges of reels
trim = 3/4; // trim to height by this fraction since the reels don't need to be fully enclosed

// Reel Settings
noReels = 6; // number of wire reels to hold
reelSpacing = 1; // buffer between reels
wireDia = 2; // dia of wire

spacing = 2; // spacing between dxf export for print

// Slot
// Tweak these till it looks right
baseSlots = 24; // number of slots in base
sideSlots = 8; // number of slots on sides

// Laser cutter beam kerf
LaserBeamDiameter = 0.23;
// Material characteristic
materialThickness = 3.20;

// --- COMPILE SETTING ----
// make export true if you want to create DXF print sheet, otherwise 3D render is created to visualise
export = false;

A wire dispenser to these requirements is then created. I’ve created one for the lab and will also created one for my own wire requirements. I’ve listed the code on github if you want to make one/have a look. The real party trick of OpenSCAD is projection(), which creates 2d silhouettes of 3d objects, allowing the code to have a mode which creates an assembly to visually check, and one that creates the .dxf for printing.

For further reading, Matt Venn documents making a CNC cut box with OpenSCAD, which orginally inspired me to look at it.