feat(ui): wire Plate→Sequence menu to PartSequencerFactory

Replace old SequenceByNearest with PartSequencerFactory using default
SequenceParameters (Advanced method with serpentine row grouping).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-16 00:50:03 -04:00
parent 545d031ee7
commit a1f32eda79
+17 -12
View File
@@ -6,8 +6,12 @@ using System.IO;
using System.Linq; using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using OpenNest.Actions; using OpenNest.Actions;
using OpenNest.CNC.CuttingStrategy;
using OpenNest.Collections; using OpenNest.Collections;
using OpenNest.Controls; using OpenNest.Controls;
using OpenNest.Engine;
using OpenNest.Engine.RapidPlanning;
using OpenNest.Engine.Sequencing;
using OpenNest.IO; using OpenNest.IO;
using OpenNest.Math; using OpenNest.Math;
using OpenNest.Properties; using OpenNest.Properties;
@@ -438,27 +442,28 @@ namespace OpenNest.Forms
public void AutoSequenceCurrentPlate() public void AutoSequenceCurrentPlate()
{ {
var seq = new SequenceByNearest(); SequencePlate(PlateView.Plate);
var parts = seq.SequenceParts(PlateView.Plate.Parts); PlateView.Invalidate();
PlateView.Plate.Parts.Clear();
PlateView.Plate.Parts.AddRange(parts);
} }
public void AutoSequenceAllPlates() public void AutoSequenceAllPlates()
{ {
var seq = new SequenceByNearest();
foreach (var plate in Nest.Plates) foreach (var plate in Nest.Plates)
{ SequencePlate(plate);
var parts = seq.SequenceParts(plate.Parts);
plate.Parts.Clear();
plate.Parts.AddRange(parts);
}
PlateView.Invalidate(); 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() public void CalculateCurrentPlateCutTime()
{ {
var cutParamsForm = new CutParametersForm(); var cutParamsForm = new CutParametersForm();