From ad58332a5d662a8e13b83d320a0bd14eed6cb15a Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Sun, 22 Mar 2026 20:01:03 -0400 Subject: [PATCH] feat: regenerate cut-offs after part drag and fill operations Co-Authored-By: Claude Opus 4.6 (1M context) --- OpenNest/Actions/ActionClone.cs | 3 +++ OpenNest/Actions/ActionSelect.cs | 6 ++++++ OpenNest/Controls/PlateView.cs | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/OpenNest/Actions/ActionClone.cs b/OpenNest/Actions/ActionClone.cs index 7c3ab96..89b4ee8 100644 --- a/OpenNest/Actions/ActionClone.cs +++ b/OpenNest/Actions/ActionClone.cs @@ -167,6 +167,9 @@ namespace OpenNest.Actions } parts.ForEach(p => plateView.Plate.Parts.Add(p.BasePart.Clone() as Part)); + + if (plateView.Plate.CutOffs.Count > 0) + plateView.Plate.RegenerateCutOffs(plateView.CutOffSettings); } private void Fill() diff --git a/OpenNest/Actions/ActionSelect.cs b/OpenNest/Actions/ActionSelect.cs index 410e3de..a0a268d 100644 --- a/OpenNest/Actions/ActionSelect.cs +++ b/OpenNest/Actions/ActionSelect.cs @@ -133,6 +133,12 @@ namespace OpenNest.Actions plateView.Invalidate(); status = Status.SetFirstPoint; } + else if (plateView.SelectedParts.Count > 0) + { + // Part drag completed — regenerate cut-off programs + if (plateView.Plate.CutOffs.Count > 0) + plateView.Plate.RegenerateCutOffs(plateView.CutOffSettings); + } } private void plateView_Paint(object sender, PaintEventArgs e) diff --git a/OpenNest/Controls/PlateView.cs b/OpenNest/Controls/PlateView.cs index 6efe5f2..41daa8c 100644 --- a/OpenNest/Controls/PlateView.cs +++ b/OpenNest/Controls/PlateView.cs @@ -1089,6 +1089,10 @@ namespace OpenNest.Controls if (parts.Count > 0 && (!cts.IsCancellationRequested || progressForm.Accepted)) { AcceptPreviewParts(parts); + + if (Plate.CutOffs.Count > 0) + Plate.RegenerateCutOffs(cutOffSettings); + sw.Stop(); Status = $"Fill: {parts.Count} parts in {sw.ElapsedMilliseconds} ms"; }