/** tube socket socket, Tyler Montbriand, 2018. Freeware. */ /** * A six-sided shape of d diameter across the flats, * i.e. hex(6) will fit a 6mm hex key */ module hex(d,l=1) { r=d/2; rotate_extrude($fn=6) polygon([ [0,0], [0,l], [r/cos(30),l], [r/cos(30),0] ]); } b=40; // Dimension of box shape c=14; // Minor diamater of socket hole c2=15.5; // Major diameter of socket hole corner=15; // Distance of screws from center h=5.25; // Size of hex socket, across flats. This fits little #4-40 hex sockets. screw=3.75; // Diameter of screw holes module base() { difference() { offset(5) offset(-5) square(b*[1,1],center=true); for(A=[0:90:360-1]) rotate([0,0,A]) translate(15*[1,1]) circle(d=screw); circle(r=c); } } module box() difference() { linear_extrude(4+2, convexity=2) difference() { offset(5) offset(-5) square(b*[1,1],center=true); for(A=[0:90:360-1]) rotate([0,0,A]) translate(corner*[1,1]) circle(d=screw); circle(r=c); } } // Part which fits socket module case() difference() { box(); translate([0,0,-4]) linear_extrude(4+4, convexity=2) difference() { circle(r=c2); // Larger hole to fit wider part of socket // Divots to prevent socket from rotating for(A=[0:90:360-1]) rotate([0,0,A]) translate([c2,0]) circle(r=2); } for(A=[0:90:360-1]) rotate([0,0,A]) translate(corner*[1,1,0]+[0,0,1]) difference() { hex(h,6); // hex(5.25-1.5,7); //echo(5.25-3.75); } } // Just a flat shape to hold the socket in module lid() { linear_extrude(2) base(); linear_extrude(3) intersection() { base(); circle(d=32); } } case(); translate(b*1.25*[1,0]) lid();