Extract shared patterns into reusable helpers: FitsBounds (fits-normal/ rotated check), OptionWorkArea (edge-spacing subtraction), DecrementQuantity, TryWithUpgradedSize (upgrade-try-revert), FindSmallestFittingOption. Add PlateResult.AddParts to consolidate dual parts-list bookkeeping. Cache sorted plate options and add HasPlateOptions property. Introduce MultiPlateNestOptions to replace 10-parameter Nest signature with a clean options object. Fix fragile Drawing.Name matching with reference equality in PackIntoExistingRemnants. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
35 lines
1.0 KiB
C#
35 lines
1.0 KiB
C#
using System.Collections.Generic;
|
|
|
|
namespace OpenNest
|
|
{
|
|
public class MultiPlateNestOptions
|
|
{
|
|
public Plate Template { get; set; }
|
|
public List<PlateOption> PlateOptions { get; set; }
|
|
public double SalvageRate { get; set; } = 0.5;
|
|
public PartSortOrder SortOrder { get; set; } = PartSortOrder.BoundingBoxArea;
|
|
public double MinRemnantSize { get; set; } = 12.0;
|
|
public bool AllowPlateCreation { get; set; } = true;
|
|
}
|
|
|
|
public class MultiPlateResult
|
|
{
|
|
public List<PlateResult> Plates { get; set; } = new();
|
|
public List<NestItem> UnplacedItems { get; set; } = new();
|
|
}
|
|
|
|
public class PlateResult
|
|
{
|
|
public Plate Plate { get; set; }
|
|
public List<Part> Parts { get; set; } = new();
|
|
public PlateOption ChosenSize { get; set; }
|
|
public bool IsNew { get; set; }
|
|
|
|
public void AddParts(IList<Part> parts)
|
|
{
|
|
Plate.Parts.AddRange(parts);
|
|
Parts.AddRange(parts);
|
|
}
|
|
}
|
|
}
|