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"; }