113 lines
6.7 KiB
Markdown
113 lines
6.7 KiB
Markdown
# Verify a nest before posting
|
|
|
|
The desktop's **Nest > Post > (post processor)** workflow checks every plate after
|
|
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.
|
|
- **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.
|
|
- **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.
|
|
|
|
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.
|
|
Uncheckable geometry is reported as incomplete, not passed. Multiple interrupted
|
|
cut fragments, or a lead-out after an open contour that might cut through a tab,
|
|
also require manual review rather than being assumed retained.
|
|
|
|
## Explicit override
|
|
|
|
With any warning, **Post Anyway** is disabled until the user selects:
|
|
|
|
> I understand the listed risks, including possible head crashes and machine or
|
|
> material damage. I choose to bypass these warnings and continue posting this nest.
|
|
|
|
Consent applies only to that posting attempt. Unchecking disables posting again;
|
|
opening another review always starts unchecked. Cancel, Escape, and the window's
|
|
close button do not write CNC files. Cancel is the default button. A clear report
|
|
still requires **Continue Posting**. An unexpected verification failure blocks
|
|
posting rather than allowing an override of an absent report.
|
|
|
|
The editor is modal during verification and posting dialogs. Posting is refused
|
|
while auto-nesting, interactive fill, or a busy plate action can still change the
|
|
nest. Cancellation keeps the modal dialog open until its worker has stopped.
|
|
No automatic repair, resequencing, lead-in insertion, or tab insertion is performed.
|
|
|
|
## Console
|
|
|
|
`--post` prints the same report. Warnings prevent CNC output (including overwriting
|
|
an existing file) and return exit code 1. After reviewing them, explicitly pass
|
|
`--acknowledge-post-risks` to accept the risks for that invocation. The switch does
|
|
not skip verification and is not persisted. When `--post` is requested, verification
|
|
must pass or be acknowledged before either nest saving or CNC writing. Nest-save
|
|
and CNC destinations must differ; collisions are refused even with acknowledgment.
|
|
Without `--post`, ordinary nest saving is unchanged; `--no-save` skips that save.
|
|
|
|
The raw `IPostProcessor` plugin interface remains a low-level writer. Third-party
|
|
callers must apply their own review/consent flow using `PostVerificationAnalyzer`;
|
|
the gate is installed at OpenNest's desktop and console posting entry points.
|
|
|
|
## Selected post and cut order
|
|
|
|
Cincinnati CI Fiber preserves the placed part/contour order and pierce positions
|
|
used by this check. The older Cincinnati CL post sorts parts and moves cutoffs;
|
|
Gravograph builds and optimizes separate tool passes. Those two posts, and unknown
|
|
plugins, therefore show an additional **incomplete final rapid sequence** warning
|
|
requiring acknowledgment even if the nest-level checks have no findings. This
|
|
change does not silently alter their existing CNC output order.
|
|
|
|
## Limits and maintainer contract
|
|
|
|
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.
|
|
|
|
`OpenNest.Core/Diagnostics/PostVerificationAnalyzer` owns the cross-platform logic;
|
|
its report exposes findings, display text, and `CanPost(risksAcknowledged)`. Use
|
|
`AnalyzeForPost` at posting entry points so unknown post ordering is not silently
|
|
certified. `IPostVerificationSupport.PreservesPlacedProgramOrder` is an opt-in
|
|
contract, not a machine-safety claim; only declare it after verifying the writer's
|
|
part order, contour order, and pierce positions. The WinForms dialog renders the
|
|
report and enforces per-attempt consent. New callers
|
|
must keep inputs stable until analysis completes, honor cancellation, and never
|
|
treat incomplete analysis as a clear result. Keep analysis out of paint handlers.
|
|
The overlap diagnostic's documented numeric/tessellation limits also apply.
|
|
|
|
Future hardening should inspect a shared post-specific emitted motion stream,
|
|
including controller retracts and final parking, rather than pretending direct XY
|
|
geometry proves physical head clearance.
|
|
|
|
## Verification on Windows
|
|
|
|
The core/console tests run cross-platform. Dialog tests and actual desktop behavior
|
|
require Windows; Linux cross-compilation is not runtime verification.
|
|
|
|
1. Run `dotnet test OpenNest.WinForms.Tests/OpenNest.WinForms.Tests.csproj`.
|
|
2. Post a nest containing two overlapping parts and a part without lead-ins.
|
|
Verify the report lists the plates/parts, shows all check categories, and disables
|
|
**Post Anyway** until consent is checked. Uncheck it to verify disabling again.
|
|
3. Cancel with the button, Escape, and X on separate attempts; none should open the
|
|
output save dialog. Reopen the review and confirm consent is reset.
|
|
4. Use a sequence that cuts a closed untabbed part, moves to its far side, then
|
|
rapids back across it. Verify a crossing warning. Change the sequence so the
|
|
perimeter has not yet been cut, then assign a real tab gap and recheck the
|
|
appropriate control cases. Include a hole crossed later in the same part.
|
|
5. Acknowledge the warnings and post through both a single-file and multi-file post.
|
|
Confirm output and normal overwrite prompts. Post a clear, leaded nest with Cincinnati CI Fiber and
|
|
verify the report still appears without requiring a risk override.
|
|
6. During a large verification, cancel; the editor must stay disabled until the
|
|
worker exits, with no output. A fill still finishing after its progress dialog
|
|
closes must prevent posting until it has completed.
|
|
|
|
For failures, record the menu action, nest fixture, selected post, visible report,
|
|
and exact exception text.
|