2021-01-08
Did you know that it’s possible to make machine screws that simultaneously accept both right-handed and left-handed threads? Well, it is. At least in some cases.
All you need to do is mirror the screw and then perform a boolean intersection between the original and the mirror. It’s that easy.
I set out to try this idea using a popular CAD program, but quickly ran into problems. The model was too complicated to perform a volumetric boolean, so I exported it as a surface mesh. The mesh was non-manifold, so the boolean would have failed anyways, and I was stuck.
DICOMautomaton
to the rescue! My solution was to instead take the mesh, slice it into 2D contours, mirror the contours, perform a much easier (and much faster) series of per-slice boolean intersections, and then stitch the resulting contours back into a surface mesh. It worked well.
I successfully 3D printed a double-threaded, but otherwise standard, M6x20 machine screw on a stock Creality Ender 3
printer without supports. It indeed accepts nuts with both right-handed and left-handed threads. Even the thread pitch is standard. I was worried that I would have to increase the pitch to avoid binding, but everything worked out neatly. Wild!
Besides being a curiosity, this technique could be practical. For example, pairing adjacent left- and right-handed nuts along a long screw would make a decent floating slack adjuster. Finally, it would be interesting to mix the thread pitch so that left- and right-handed nuts of different pitch would be accepted. Maybe for separate coarse and fine slack adjustments?
A script to do this is available here. It relies on my DICOMautomaton
project. Pull requests and feedback are welcome!