From a1f32eda79e677df3d4d45bc7ba560f9b151b59c Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Mon, 16 Mar 2026 00:50:03 -0400 Subject: [PATCH] =?UTF-8?q?feat(ui):=20wire=20Plate=E2=86=92Sequence=20men?= =?UTF-8?q?u=20to=20PartSequencerFactory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace old SequenceByNearest with PartSequencerFactory using default SequenceParameters (Advanced method with serpentine row grouping). Co-Authored-By: Claude Opus 4.6 (1M context) --- OpenNest/Forms/EditNestForm.cs | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/OpenNest/Forms/EditNestForm.cs b/OpenNest/Forms/EditNestForm.cs index e838871..34d180e 100644 --- a/OpenNest/Forms/EditNestForm.cs +++ b/OpenNest/Forms/EditNestForm.cs @@ -6,8 +6,12 @@ using System.IO; using System.Linq; using System.Windows.Forms; using OpenNest.Actions; +using OpenNest.CNC.CuttingStrategy; using OpenNest.Collections; using OpenNest.Controls; +using OpenNest.Engine; +using OpenNest.Engine.RapidPlanning; +using OpenNest.Engine.Sequencing; using OpenNest.IO; using OpenNest.Math; using OpenNest.Properties; @@ -438,27 +442,28 @@ namespace OpenNest.Forms public void AutoSequenceCurrentPlate() { - var seq = new SequenceByNearest(); - var parts = seq.SequenceParts(PlateView.Plate.Parts); - - PlateView.Plate.Parts.Clear(); - PlateView.Plate.Parts.AddRange(parts); + SequencePlate(PlateView.Plate); + PlateView.Invalidate(); } public void AutoSequenceAllPlates() { - var seq = new SequenceByNearest(); - foreach (var plate in Nest.Plates) - { - var parts = seq.SequenceParts(plate.Parts); - plate.Parts.Clear(); - plate.Parts.AddRange(parts); - } + SequencePlate(plate); PlateView.Invalidate(); } + private static void SequencePlate(Plate plate) + { + var parameters = new SequenceParameters(); + var sequencer = PartSequencerFactory.Create(parameters); + var ordered = sequencer.Sequence(plate.Parts.ToList(), plate); + + plate.Parts.Clear(); + plate.Parts.AddRange(ordered.Select(s => s.Part)); + } + public void CalculateCurrentPlateCutTime() { var cutParamsForm = new CutParametersForm();