use inch=25.4; mil=inch/1000; block=1.25*inch; blockr=block/2; rod = 5/16*inch; rodr = rod/2; nut = 0.5*inch; nutt = 0.25*inch; // Barbell is a hole for allthread with a captive nut on one side. module barbell(){ cylinder(h=block+2*mil, r=rodr); //translate([0,0,0]) hexagon(0.5*inch, 0.25*inch); // Add this if you want captive nuts on both sides translate([0,0,block]) hexagon(0.5*inch, 0.25*inch); } module allthreadblock(){ difference(){ // Draw the body of the block cube([block, block, block]); // Body of the Block // Cut out core to avoid ugly extrusion translate([rod, rod, rod]) cube([2*rod, 2*rod, 2*rod]); // Barbell on X axis translate([blockr+rodr, -mil, blockr-rodr]) rotate([-90,0,0]) barbell(); // Barbell on Y axis translate([block+mil , blockr-rodr, blockr+rodr]) rotate([0,-90,0]) barbell(); // Barbell on Z axis translate([blockr-rodr, blockr+rodr ,-mil]) rotate([0,0,-90]) barbell(); } } // Instance our object, and Bob's your uncle. allthreadblock();