From 507dff95b848e9fc27476e57d0575028e7f2f25f Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Mon, 16 Mar 2026 00:54:35 -0400 Subject: [PATCH] fix(ui): use LeastCode sequencer and fix AddRange double-enumeration Advanced sequencer with default 0.25 MinDistanceBetweenRowsColumns puts every part in its own row, degenerating to a Y-sort. Switch to LeastCode (nearest-neighbor + 2-opt) for visible results. Also replace AddRange(linq) with foreach+Add to avoid ObservableList AddRange re-enumerating a deferred LINQ query for event firing. Co-Authored-By: Claude Opus 4.6 (1M context) --- OpenNest/Forms/EditNestForm.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OpenNest/Forms/EditNestForm.cs b/OpenNest/Forms/EditNestForm.cs index 34d180e..26223a5 100644 --- a/OpenNest/Forms/EditNestForm.cs +++ b/OpenNest/Forms/EditNestForm.cs @@ -456,12 +456,13 @@ namespace OpenNest.Forms private static void SequencePlate(Plate plate) { - var parameters = new SequenceParameters(); + var parameters = new SequenceParameters { Method = SequenceMethod.LeastCode }; var sequencer = PartSequencerFactory.Create(parameters); var ordered = sequencer.Sequence(plate.Parts.ToList(), plate); plate.Parts.Clear(); - plate.Parts.AddRange(ordered.Select(s => s.Part)); + foreach (var s in ordered) + plate.Parts.Add(s.Part); } public void CalculateCurrentPlateCutTime()