Files
OpenNest/OpenNest.Engine/Strategies/ColumnFillStrategy.cs
AJ Isaacs 0ec22f2207 feat: geometry-aware convergence, both-axis search, remnant engine, fill cache
- 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>
2026-03-21 10:12:31 -04:00

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();
}
}