* fix: a modelled thread that would cut nothing is refused (#995)
An M5 modelled thread in a 5 mm hole cut nothing into the nut: the
internal groove runs from the minor diameter out to the major one, so
with the hole as wide as the thread it lay entirely in the hole, and the
faceted cut only left the wall faceted with slivers ("the thread goes the
wrong way"). The fit check takes a 5 mm hole as an M5 hole.
- thread_groove measures how deep the groove cuts into the material
(hole wall out to the major radius, or shaft surface in to the root);
under a quarter of the basic depth 5H/8 the modelled thread is refused
with the measured depth, the tap drill (as solid.hole drills it) or
shaft size to use, and the size that fits the face, e.g. "this 5.00 mm
hole is too wide for a modelled M5 thread: it would cut 0.00 mm of the
thread's 0.43 mm depth; drill 4.2 mm for M5, or thread this hole M6".
- Cosmetic threads and their fit check are unchanged.
* test: pin the cut-nothing limit for coarse and fine pitch; show the hole size with show_mm
---------
Co-authored-by: MateuszSychXpl <151755914+MateuszSychXpl@users.noreply.github.com>
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
Fixes#602. Collinear-edge merging, piece naming and the dialog preview each work in one pass instead of quadratic loops; the issue's example goes from 86 s to 5.1 s.