feat(diagnostics): warn on cutoffs and rapids crossing clamps

This commit is contained in:
aj committed 2026-10-13 18:15:49 -04:00
1 parent 3014ab3480
commit d7187f65c7
14 files changed
+376 -21

No files matched your search

+10 -2
View File
@@ -98,8 +98,8 @@ vertices cannot mutate the snapshot, report, or live geometry.
## Capture once, analyze off-thread
```csharp
// UI thread, while parts/drawings are stable:
var snapshot = PlateOverlapAnalyzer.Capture(parts, plate.ClampZones.ToArray(), cancellationToken);
// UI thread, while the plate and drawings are stable:
var snapshot = PlateOverlapAnalyzer.CapturePlate(plate, cancellationToken: cancellationToken);
// Worker thread, no access to live Part/Drawing/Program objects:
var report = await Task.Run(
@@ -159,6 +159,14 @@ triangulation, or `Collision.Check` call is not internally interruptible.
A report with any issue has `IsComplete == false`, even if `Pairs` is empty.
- No part, drawing, quantity, pose, cutting state, or selection is modified.
For a full plate, `PlateOverlapAnalyzer.CapturePlate(plate)` also captures active
clamps and nominal manual cut-off definitions. `CutOffClampFindings` is a separate
list of zero-area line/rectangle contacts, not `Pairs` or material overlap. The
view marks these with an X and a cut-off number/clamp ID, including contacts whose
current regenerated program has been trimmed. Removed clamps produce no contact.
Editing definitions, sheet size/quadrant or zones stales the result; posting runs
its own fresh check with per-attempt consent.
## Interpretation and limits
Regions are the kernel's convex, hole-subtracted fragments, not merged connected
+14 -9
View File
@@ -52,18 +52,23 @@ The desktop's **Nest > Post > (post processor)** workflow checks every plate aft
post settings are accepted and before asking where to save CNC output. The review
shows all three check categories, even when there are no findings:
- **Overlapping parts:** shared material between placed parts, including containment.
Holes are subtracted; placing a part inside a sufficiently large cutout is not
itself an overlap. This uses clean drawing geometry, not added lead-in/out paths.
- **Overlapping parts and clamps:** shared material between placed parts, including containment,
and physical material overlapping an active clamp. Holes are subtracted; placing a part inside
a sufficiently large cutout is not itself an overlap. The same review also warns if a nominal
manual cut-off line crosses an active clamp, even when its regenerated cut is currently trimmed;
a line contact has no material-overlap area. Removed clamps on that sheet are not checked.
This uses clean drawing geometry, not added lead-in/out paths.
- **Missing lead-ins:** cutting contours without an actual, nonzero lead-in in the
placed program. Applying a lead-in to only one contour does not clear the other
contours. Scribe-only work and scrap cutoff lines do not require lead-ins here.
The cutting planner supports direct contour piercing without lead-ins; that does
not suppress this pre-post review warning or grant posting consent.
- **Rapid crossings:** direct XY moves crossing closed, already-cut, untabbed
contours in cutting order. This includes earlier holes within the same part and
previously cut parts. A future cut is not an obstacle yet. Actual uncut gaps are
respected; enabling tabs in settings alone is not evidence that a gap exists.
contours in cutting order, or an active clamp's physical footprint. This includes
earlier holes within the same part and previously cut parts. A future cut is not
an obstacle yet. Actual uncut gaps are respected; enabling tabs in settings alone
is not evidence that a gap exists. Clamp-rapid warnings are conservative: head
height/retracts are not modeled, so inspect the emitted route and machine setup.
Findings identify the plate and part's position in the cutting sequence. Read the
scrollable report, cancel to fix the nest, then post again to rerun verification.
@@ -120,9 +125,9 @@ change does not silently alter their existing CNC output order.
These checks are warnings, not a machine safety certification. They inspect the
nest's placed programs and direct XY travel, not a simulation of final NC output.
A post processor or controller may change routing, cutting order, lead-ins,
retract height, or parking moves. The checks do not model tipping, slats, clamps,
actual tab strength, kerf, or safe Z height. Review the generated CNC program and
machine setup before cutting, even when this report has no warnings.
retract height, or parking moves. They check planar clamp footprints but not clamp
height, actual head clearance, tipping, slats or tab strength. Review the generated
CNC program and machine setup before cutting, even when this report has no warnings.
`OpenNest.Core/Diagnostics/PostVerificationAnalyzer` owns the cross-platform logic;
its report exposes findings, display text, and `CanPost(risksAcknowledged)`. Use