From bb671cb17662bc752c94f89d7faf41fdb2f4a1a3 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Mon, 21 Sep 2026 15:52:45 -0400 Subject: [PATCH] refactor(engine): retarget ML runner to plate filler --- OpenNest.Engine/ML/BruteForceRunner.cs | 17 +++++++++-------- .../Engine/EngineRefactorSmokeTests.cs | 2 ++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/OpenNest.Engine/ML/BruteForceRunner.cs b/OpenNest.Engine/ML/BruteForceRunner.cs index 7db8a08..37aa906 100644 --- a/OpenNest.Engine/ML/BruteForceRunner.cs +++ b/OpenNest.Engine/ML/BruteForceRunner.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using OpenNest.Engine.Jobs.Placement.Fillers; namespace OpenNest.Engine.ML { @@ -30,12 +31,12 @@ namespace OpenNest.Engine.ML bool forceFullAngleSweep = false ) { - var engine = new DefaultNestEngine(plate); - engine.ForceFullAngleSweep = forceFullAngleSweep; + var filler = new DefaultPlateFiller(plate); + filler.ForceFullAngleSweep = forceFullAngleSweep; var item = new NestItem { Drawing = drawing }; var sw = Stopwatch.StartNew(); - var parts = engine.Fill( + var parts = filler.Fill( item, plate.WorkArea(), null, @@ -47,9 +48,9 @@ namespace OpenNest.Engine.ML return null; // Rank phase results — winner is explicit, runners-up sorted by count. - var winner = engine.PhaseResults.FirstOrDefault(r => r.Phase == engine.WinnerPhase); - var runnerUps = engine - .PhaseResults.Where(r => r.PartCount > 0 && r.Phase != engine.WinnerPhase) + var winner = filler.PhaseResults.FirstOrDefault(r => r.Phase == filler.WinnerPhase); + var runnerUps = filler + .PhaseResults.Where(r => r.PartCount > 0 && r.Phase != filler.WinnerPhase) .OrderByDescending(r => r.PartCount) .ToList(); @@ -60,7 +61,7 @@ namespace OpenNest.Engine.ML TimeMs = sw.ElapsedMilliseconds, LayoutData = SerializeLayout(parts), PlacedParts = parts, - WinnerEngine = engine.WinnerPhase.ToString(), + WinnerEngine = filler.WinnerPhase.ToString(), WinnerTimeMs = winner?.TimeMs ?? 0, RunnerUpEngine = runnerUps.Count > 0 ? runnerUps[0].Phase.ToString() : "", RunnerUpPartCount = runnerUps.Count > 0 ? runnerUps[0].PartCount : 0, @@ -68,7 +69,7 @@ namespace OpenNest.Engine.ML ThirdPlaceEngine = runnerUps.Count > 1 ? runnerUps[1].Phase.ToString() : "", ThirdPlacePartCount = runnerUps.Count > 1 ? runnerUps[1].PartCount : 0, ThirdPlaceTimeMs = runnerUps.Count > 1 ? runnerUps[1].TimeMs : 0, - AngleResults = engine.AngleResults.ToList(), + AngleResults = filler.AngleResults.ToList(), }; } diff --git a/OpenNest.Tests/Engine/EngineRefactorSmokeTests.cs b/OpenNest.Tests/Engine/EngineRefactorSmokeTests.cs index ac49035..92bdbbe 100644 --- a/OpenNest.Tests/Engine/EngineRefactorSmokeTests.cs +++ b/OpenNest.Tests/Engine/EngineRefactorSmokeTests.cs @@ -115,5 +115,7 @@ public class EngineRefactorSmokeTests Assert.NotNull(result); Assert.True(result.PartCount > 0); + Assert.False(string.IsNullOrWhiteSpace(result.WinnerEngine)); + Assert.NotEmpty(result.AngleResults); } }