fix(opus55): cut clearance margin to 0.003 and drop etch marks from geometry
The 0.022 margin assumed validators flatten arcs at 0.01; NestValidator uses 0.001, so a pair can read at most 0.002 closer than true. 0.003 covers that plus the 1e-4 Clipper grid, returning ~0.019 per gap. Arc, disc, obround and zero-spacing tests still pass. Part geometry filtered only rapids, so scribe/etch moves counted as material - the bug OpenNest fixed in 1b5e1b1. Use SpecialLayers.IsMaterial. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -15,9 +15,9 @@ Every placement decision (which part, which rotation, where, on which sheet) com
|
||||
angles plus the two orientations that axis-align the minimum-area bounding rectangle
|
||||
(`RotatingCalipers`); for sweeps, up to 8 evenly spaced legal steps. Point-symmetric duplicates are dropped.
|
||||
- Each orientation gets a **footprint**: outline inflated (miter joins, so it contains the exact
|
||||
round offset) by `(spacing + 0.022) / 2 + chordTolerance`. Two parts respect the spacing
|
||||
when their footprints don't overlap. The 0.022 covers validators that polygonize arcs
|
||||
circumscribed at 0.01 per side, plus Clipper's 1e-4 grid.
|
||||
round offset) by `(spacing + 0.003) / 2 + chordTolerance`. Two parts respect the spacing
|
||||
when their footprints don't overlap. The 0.003 covers `NestValidator` flattening each arc
|
||||
within 0.001 of true (0.002 for a pair), plus Clipper's 1e-4 grid on both sides.
|
||||
- **No-fit polygons** between footprints come from Clipper2 Minkowski sums: an O(n+m)
|
||||
edge merge for convex pairs, and for concave pairs the boundary sweep ∪ (A + p₀) ∪ (−B + a₀).
|
||||
The last two terms cover "B inside A" and "B swallows A". NFPs are cached per orientation pair.
|
||||
@@ -83,9 +83,10 @@ The engine reports as `Opus55NestingEngine`.
|
||||
## Known limitations
|
||||
|
||||
- **No part-in-part:** holes are treated as solid, so small parts never nest inside cutouts.
|
||||
- **Clearance padding:** gaps are ~0.022 (plus up to the chord tolerance) wider than the
|
||||
required spacing, to stay valid under circumscribed-polygon validators. That's negligible in mm
|
||||
and about 0.02" in inches. The constants are absolute and assume job units near inch/mm scale.
|
||||
- **Clearance padding:** gaps are ~0.003 (plus up to the chord tolerance) wider than the
|
||||
required spacing, to stay valid under `NestValidator`'s 0.001 arc flattening. The margin was
|
||||
0.022 while it assumed a 0.01 validator tolerance. The constants are absolute and assume job
|
||||
units near inch/mm scale.
|
||||
- **Rotation coverage:** `Automatic` parts try at most 8 orientations (fewer when a job has many
|
||||
distinct parts: `48 / partCount`, minimum 2). Free-angle rotations aren't explored beyond the MBR alignment.
|
||||
- **Greedy core:** there is no order/permutation search. The variants and tail re-plan are the only
|
||||
|
||||
Reference in New Issue
Block a user