feat(console): improve training data collection and best-fit persistence
- Add verbose per-file and per-sheet-size console output during collection - Skip already-processed parts at the sheet-size level instead of all-or-nothing - Precompute best-fits once per part and reuse across all sheet sizes - Clear best-fit cache after each part to prevent memory growth - Save best-fits in separate bestfits/ zip entries instead of embedding in nest.json - Filter to Keep=true results only and scope to plate sizes in the nest - Set nest name to match filename (includes sheet size and part count) - Add TrainingDatabase with per-run skip logic and SQLite schema Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -122,5 +122,32 @@ namespace OpenNest.IO
|
||||
public double X { get; init; }
|
||||
public double Y { get; init; }
|
||||
}
|
||||
|
||||
public record BestFitSetDto
|
||||
{
|
||||
public double PlateWidth { get; init; }
|
||||
public double PlateHeight { get; init; }
|
||||
public double Spacing { get; init; }
|
||||
public List<BestFitResultDto> Results { get; init; } = new();
|
||||
}
|
||||
|
||||
public record BestFitResultDto
|
||||
{
|
||||
public double Part1Rotation { get; init; }
|
||||
public double Part2Rotation { get; init; }
|
||||
public double Part2OffsetX { get; init; }
|
||||
public double Part2OffsetY { get; init; }
|
||||
public int StrategyType { get; init; }
|
||||
public int TestNumber { get; init; }
|
||||
public double CandidateSpacing { get; init; }
|
||||
public double RotatedArea { get; init; }
|
||||
public double BoundingWidth { get; init; }
|
||||
public double BoundingHeight { get; init; }
|
||||
public double OptimalRotation { get; init; }
|
||||
public bool Keep { get; init; }
|
||||
public string Reason { get; init; } = "";
|
||||
public double TrueArea { get; init; }
|
||||
public List<double> HullAngles { get; init; } = new();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user