fix(engine): compute unused area from actual part areas

Calculate unused plate area by subtracting total part area from the
work area instead of relying on FillScore.UsableRemnantArea, which
could over-report available space.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-14 12:41:08 -04:00
parent a9aaab8337
commit 10f9b5357c

View File

@@ -723,9 +723,13 @@ namespace OpenNest
var score = FillScore.Compute(best, workArea);
var clonedParts = new List<Part>(best.Count);
var totalPartArea = 0.0;
foreach (var part in best)
{
clonedParts.Add((Part)part.Clone());
totalPartArea += part.BaseDrawing.Area;
}
progress.Report(new NestProgress
{
@@ -733,7 +737,7 @@ namespace OpenNest
PlateNumber = plateNumber,
BestPartCount = score.Count,
BestDensity = score.Density,
UsableRemnantArea = score.UsableRemnantArea,
UsableRemnantArea = workArea.Area() - totalPartArea,
BestParts = clonedParts
});
}