fix: align best-fit sweep to include offset=0 for grid arrangements

The perpendicular sweep started at perpMin (e.g. -8.75) which with
coarse step sizes never landed on offset=0, missing the perfect
side-by-side and stacked same-orientation patterns for rectangular parts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-07 19:24:37 -05:00
parent 73c20c30ce
commit 0c14d7f854

View File

@@ -80,7 +80,12 @@ namespace OpenNest.Engine.BestFit
// Pre-compute part1's offset lines (half-spacing outward)
var part1Lines = Helper.GetOffsetPartLines(part1, halfSpacing);
for (var offset = perpMin; offset <= perpMax; offset += stepSize)
// Align sweep start to a multiple of stepSize so that offset=0 is always
// included. This ensures perfect grid arrangements (side-by-side, stacked)
// are generated for rectangular parts.
var alignedStart = System.Math.Ceiling(perpMin / stepSize) * stepSize;
for (var offset = alignedStart; offset <= perpMax; offset += stepSize)
{
var part2 = (Part)part2Template.Clone();