- Convergence loop now uses FillLinear internally to measure actual waste with geometry-aware spacing instead of bounding-box arithmetic - Each candidate pair is tried in both Row and Column orientations to find the shortest perpendicular dimension (more complete stripes) - CompleteStripesOnly flag drops partial stripes; remnant strip is filled by a full engine run (injected via CreateRemnantEngine) - ConvergeStripeAngleShrink tries N+1 narrower pairs as alternative - FillResultCache avoids redundant engine runs on same-sized remnants - CLAUDE.md: note to not commit specs/plans Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
18 lines
461 B
C#
18 lines
461 B
C#
using System.Collections.Generic;
|
|
using OpenNest.Engine.Fill;
|
|
|
|
namespace OpenNest.Engine.Strategies;
|
|
|
|
public class ColumnFillStrategy : IFillStrategy
|
|
{
|
|
public string Name => "Column";
|
|
public NestPhase Phase => NestPhase.Custom;
|
|
public int Order => 160;
|
|
|
|
public List<Part> Fill(FillContext context)
|
|
{
|
|
var filler = new StripeFiller(context, NestDirection.Vertical) { CompleteStripesOnly = true };
|
|
return filler.Fill();
|
|
}
|
|
}
|