* Hole: read the faces nearest its position, not every face of the design
`hole_direction_at` classified the surface of every face of every body
(`faces_through` with an infinite reach) and then used the nearest one,
nearly always the first. In an assembly of hundreds of imported parts that
was most of a hole's time, on every preview and apply, and the viewport's
hole manipulator calls it too.
- Faces are now sorted by their mesh distance first (cheap) and each surface
is classified only when the direction rules reach it, in the same order, so
the direction is the same.
- `hole_on_surface` skips meshes whose box the drilling line does not meet
(it only casts along that line), and `faces_through` skips meshes farther
than its reach.
A cost test counts the surfaces classified for one hole among forty parts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Hole: fix the new test for the references field
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* Rename the faces_through line in mesh-decisions to faces_near
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>