Sometimes I think I got into this 3D printing thing just so I would have the opportunity to say things like "customizable sock bones". Here they are:
These dogbone-like objects are for holding pairs of socks together, so you don't have to roll or tie up your socks. My sock drawer used to be an unholy mess of partnerless socks, but now it looks like this:
Let's be honest, though. If my sock drawer was really going to look like this then I wouldn't need any clips. After rummaging around it actually looks like this:
That's at least a thousand times better than its previous state, which I am not going to show you. The sock bones shown in these pictures work for standard men's socks, folded in half and then clipped in the middle. At the link below you'll also find a Customizer model that you can adjust to your size of socks.
Thingiverse link: http://www.thingiverse.com/thing:352805
Settings: Printed on a MakerBot Replicator 2 at .3mm/low. Printing six at a time takes about an hour, and it's a good way to use up scraps of filament you have lying around.
Technical notes, OpenSCAD flavor: This model is really simple; just a 2D shape made of circles and rectangles, extruded into 3D using linear_extrude.
// mathgrrl customizable sock bone
/////////////////////////////////////////////////////////////
// parameters ///////////////////////////////////////////////
// Length from one side of the sock to the other
length = 86;
// Width/thickness of the folded sock
width = 13;
// parameters that the user does not get to specify
$fn = 24*1;
radius = width*(8/13);
thickness = 2*1;
height = 10*1;
/////////////////////////////////////////////////////////////
// renders //////////////////////////////////////////////////
sockbone();
/////////////////////////////////////////////////////////////
// module for clip //////////////////////////////////////////
module sockbone(){
linear_extrude(height)
// 2D shape of bone holder
union(){
difference(){
// outer bone
union(){
translate([radius,0,0])
circle(radius);
translate([radius,-width/2,0])
square([length-2*radius,width]);
translate([length-radius,0,0])
circle(radius);
};
// take away inner bone
union(){
translate([radius,0,0])
circle(radius-thickness);
translate([radius,-(width-2*thickness)/2,0])
square([length-2*radius,width-2*thickness]);
translate([length-radius,0,0])
circle(radius-thickness);
}
// take away opening
translate([.25*length,0,0])
square(.5*length);
}
// rounded end caps
translate([.25*length,width/2-thickness/2,0])
circle(.7*thickness);
translate([.75*length,width/2-thickness/2,0])
circle(.7*thickness);
}
}