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.
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 width dowelOD = 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.