Creating a screw with thread size M8 should offer options to create a full or partial hole (custom depth) with appropriate diameter based on the need:
6,8 mm for threaded holes used for M8 size;
8 mm hole used for M8 size (the actual diameter of the thread is between 7,6 and 7,9 mm);
8,2 mm hole used for technical fasteners with partial thread whose smooth body is exactly 8 mm (0,2 mm extra diameter);
8,5 mm hole for loose assembly (0,5 mm extra diameter);
9 mm hole for assembly of powder coated metal plates whose paint is quite thick (1 mm extra diameter);
Or any custom diameter.
Another option can be added to choose between round and square hole.
A third option may let the user choose between a regular hole or a slot with custom length and angle. Example: 30 mm from the center of the screw on the left side and 56 mm from the center of the screw on the right side. The total length of the slot is 86 mm in this case.
Thatās another good idea!
Maybe could it be simpler to specify an extra size from the nominal diameter.
EG: M8 Bolt, 8mm Diam -1.2 for Threads or +1 for powder coating etc.
Yes, this is why I added in the brackets the extra increase of the diameter for each scenario depending on the usage. Being able to specify the hole diameter is very important for manufacturing purposes.
Iāve tried your script and itās neat! Iām writing this, because I attempted something quite similar about a year ago, but more specifically for generating 3d-printable threads.
Unfortunately, Rhino wasnāt really able to create a clean thread geometry from a revolution of a āmathematicallyā generated thread profile around a specifically pitched helix to get a solid. Even an existing, third-party Grasshopper script couldnāt create a solid geometry back then, and the consensus was pretty much, at least for me, that this is not possible in Rhino.
I was relieved when I saw that you hadnāt even attempted the threads.
I did not make threads because it makes little sense to me to add so much unnecessary geometry to the Rhino doc. Iāve always liked SWās cosmetic threads so thatās what I opted for.
That being said Iāve created many solid threaded bolts and nuts before for printing in Rhino. If you want sharp threads it can be a bit more challenging but still possible.
Danās script (and the plugin BoltGen) both show that itās perfectly possible.
Iām NOT saying that itās generally impossible in Rhino, just that my method and the one from a Grasshopper script back then failed to produce a watertight solid thread geometry.
By the way, I see a huge benefit of adding 3 points and axis line through each screw, nut and washer, which helps with snapping to holes and other geometry. About 10 years ago I made a small library of the most commonly used fasteners in my workflow mostly made with BoltGen or downloaded from McMastercarr and modified by me to add the aforementioned points and axis line. However, these include a true thread and are quite heavy, this is why recently I decided to create a lightweight version that lacks the threaded geometry and instead uses a smooth cylinder body (example: M8 screws are typically 7,85 mm in diameter, but in Rhino I make them exactly 8 mm) plus a smaller circle that represents the tap drill hole diameter (example: objects where M8 screws will be attached need a 6,8 mm round hole before tapping the thread). The thread on partially threaded screws is marked by a round curve wrapped around the cylindrical body where the thread starts.
To further reduce the geometry, which becomes too heavy while using hundreds of fasteners, I set a custom render mesh to each one of them.
Here is an example with a partially threaded screw M14 with 80 mm length, 35 mm long thread, and 2 mm coarse pitch: M14x2 (Length 80, thread 35 mm).3dm (203.8 KB)