perf(fill): remove discarded extents pitch geometry
This commit is contained in:
@@ -117,29 +117,32 @@ namespace OpenNest.Engine.Fill
|
||||
{
|
||||
var column = new List<Part> { (Part)pair.Part1.Clone(), (Part)pair.Part2.Clone() };
|
||||
|
||||
// Find geometry-aware copy distance for the pair vertically.
|
||||
var boundary1 = new PartBoundary(pair.Part1, halfSpacing);
|
||||
var boundary2 = new PartBoundary(pair.Part2, halfSpacing);
|
||||
|
||||
// Compute vertical copy distance using bounding boxes as starting point,
|
||||
// then slide down to find true geometry distance.
|
||||
var pairHeight = pair.Bbox.Width;
|
||||
var testOffset = new Vector(0, pairHeight);
|
||||
var copyDistance = pairHeight + partSpacing;
|
||||
|
||||
// Create test parts for slide distance measurement.
|
||||
var testPart1 = pair.Part1.CloneAtOffset(testOffset);
|
||||
var testPart2 = pair.Part2.CloneAtOffset(testOffset);
|
||||
// For finite valid geometry and nonnegative spacing, the legacy helper returns
|
||||
// pairHeight + partSpacing on negative/no-hit slides. Otherwise minSlide >= 0,
|
||||
// so Max(pairHeight - minSlide, pairHeight + partSpacing) is the same pitch.
|
||||
// Public callers do not validate spacing; retain legacy work/behavior outside
|
||||
// that domain rather than changing its results or exceptions.
|
||||
if (!double.IsFinite(partSpacing) || partSpacing < 0 || !double.IsFinite(pairHeight))
|
||||
{
|
||||
var boundary1 = new PartBoundary(pair.Part1, halfSpacing);
|
||||
var boundary2 = new PartBoundary(pair.Part2, halfSpacing);
|
||||
var testOffset = new Vector(0, pairHeight);
|
||||
var testPart1 = pair.Part1.CloneAtOffset(testOffset);
|
||||
var testPart2 = pair.Part2.CloneAtOffset(testOffset);
|
||||
|
||||
// Find minimum distance from test pair sliding down toward original pair.
|
||||
var copyDistance = FindVerticalCopyDistance(
|
||||
pair.Part1,
|
||||
pair.Part2,
|
||||
testPart1,
|
||||
testPart2,
|
||||
boundary1,
|
||||
boundary2,
|
||||
pairHeight
|
||||
);
|
||||
copyDistance = FindVerticalCopyDistance(
|
||||
pair.Part1,
|
||||
pair.Part2,
|
||||
testPart1,
|
||||
testPart2,
|
||||
boundary1,
|
||||
boundary2,
|
||||
pairHeight
|
||||
);
|
||||
}
|
||||
|
||||
if (copyDistance <= 0)
|
||||
return column;
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace OpenNest.Engine.Fill
|
||||
|
||||
public PartBoundary(Part part, double spacing)
|
||||
{
|
||||
PerfCounters.CountPartBoundaryPreparation();
|
||||
var entities = ConvertProgram
|
||||
.ToGeometry(part.Program)
|
||||
.Where(e => e.Layer == SpecialLayers.Cut)
|
||||
|
||||
Reference in New Issue
Block a user