refactor: clean up MultiPlateNester code smells and duplication
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>
This commit is contained in:
@@ -2,6 +2,16 @@ 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();
|
||||
@@ -14,5 +24,11 @@ namespace OpenNest
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user