From f9b2e1282a4b119b6da08f35b88d4724569397db Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Sun, 11 Oct 2026 21:55:59 -0400 Subject: [PATCH] feat(cutting-ui): inspect live nest validation in docked panel --- .../Forms/CuttingValidationPanelTests.cs | 263 +++++++++++++++++ OpenNest/Forms/CuttingInspectionPanel.cs | 270 ++++++++++++++++-- OpenNest/Forms/EditNestForm.cs | 24 +- OpenNest/Forms/MainForm.cs | 19 +- docs/cutting-planner.md | 5 +- docs/post-verification.md | 32 ++- 6 files changed, 559 insertions(+), 54 deletions(-) create mode 100644 OpenNest.WinForms.Tests/Forms/CuttingValidationPanelTests.cs diff --git a/OpenNest.WinForms.Tests/Forms/CuttingValidationPanelTests.cs b/OpenNest.WinForms.Tests/Forms/CuttingValidationPanelTests.cs new file mode 100644 index 0000000..e04c323 --- /dev/null +++ b/OpenNest.WinForms.Tests/Forms/CuttingValidationPanelTests.cs @@ -0,0 +1,263 @@ +using System.Drawing; +using System.Reflection; +using System.Windows.Forms; +using OpenNest.CNC; +using OpenNest.Diagnostics; +using OpenNest.Forms; +using OpenNest.Geometry; + +namespace OpenNest.WinForms.Tests.Forms; + +[Collection("Fill operation lifetime")] +public class CuttingValidationPanelTests +{ + [Fact] + public void ValidateMenuUsesSharedPanelAndRealAllPlateFindingsRestoreOriginalView() => RunSta(() => + { + using var host = new MenuHost(); + using var editor = RapidEditor(); + host.Show(); + editor.MdiParent = host; + editor.Show(); + editor.Activate(); + editor.PlateManager.LoadAt(0); + var view = editor.PlateView; + view.OverlapDisplay = OverlapDisplayMode.Centroids; + view.ZoomToArea(-10, -10, 50, 50); + var viewport = view.CaptureViewport(); + var original = view.Plate; + var programs = editor.Nest.Plates.SelectMany(p => p.Parts).Select(p => p.Program).ToArray(); + Invoke(host, "ValidateNest_Click", host, EventArgs.Empty); + var panel = Assert.IsType(editor.CuttingInspection); + Pump(() => panel.ValidationReport != null && !panel.IsPlanning); + Assert.Equal(CuttingInspectionMode.Validate, panel.Mode); + Assert.False(Field