From 0c98b240c3e0aff6624385ffab8f4cc4af3580cd Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Fri, 13 Mar 2026 10:23:39 -0400 Subject: [PATCH] feat(engine): integrate NFP phase into Fill(groupParts) single-drawing path Co-Authored-By: Claude Opus 4.6 --- OpenNest.Engine/NestEngine.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/OpenNest.Engine/NestEngine.cs b/OpenNest.Engine/NestEngine.cs index 2d3e649..8364c70 100644 --- a/OpenNest.Engine/NestEngine.cs +++ b/OpenNest.Engine/NestEngine.cs @@ -320,6 +320,18 @@ namespace OpenNest ReportProgress(progress, NestPhase.Pairs, PlateNumber, best, workArea); } + token.ThrowIfCancellationRequested(); + + // NFP phase (non-rectangular parts only) + var nfpResult = FillNfpBestFit(nestItem, workArea); + Debug.WriteLine($"[Fill(groupParts,Box)] NFP: {nfpResult?.Count ?? 0} parts"); + + if (IsBetterFill(nfpResult, best, workArea)) + { + best = nfpResult; + ReportProgress(progress, NestPhase.Nfp, PlateNumber, best, workArea); + } + // Try improving by filling the remainder strip separately. var improved = TryRemainderImprovement(nestItem, workArea, best);