refactor: extract PlacedPart/SequenceEntry types, add IFP caching

Move PlacedPart to its own file. Replace tuple-based sequences with
SequenceEntry struct for clarity. Add IProgress parameter to
INestOptimizer. Add IFP caching to NfpCache to avoid recomputing
inner fit polygons for the same drawing/rotation/workArea.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-20 14:42:50 -04:00
parent facd07d7de
commit 9411dd0fdd
4 changed files with 65 additions and 2 deletions

View File

@@ -0,0 +1,24 @@
namespace OpenNest.Engine.Nfp
{
/// <summary>
/// An entry in a placement sequence — identifies which drawing to place and at what rotation.
/// </summary>
public readonly struct SequenceEntry
{
public int DrawingId { get; }
public double Rotation { get; }
public Drawing Drawing { get; }
public SequenceEntry(int drawingId, double rotation, Drawing drawing)
{
DrawingId = drawingId;
Rotation = rotation;
Drawing = drawing;
}
public SequenceEntry WithRotation(double rotation)
{
return new SequenceEntry(DrawingId, rotation, Drawing);
}
}
}