fix: allow line-on-line contact and remove extra spacing gap
- Part.Intersects: filter intersection points at a vertex of either shape (was both), so edge-touching parts are not flagged as overlapping - NestEngineBase.HasOverlaps: use epsilon-based bounding box pre-filter consistent with FillExtents and Plate.HasOverlappingParts - PartGeometry.GetOffsetPartLines: remove extra chordTolerance added to spacing offset — was causing 0.002" gap beyond the intended part spacing Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -45,7 +45,7 @@ namespace OpenNest
|
||||
var profile = new ShapeProfile(
|
||||
entities.Where(e => e.Layer != SpecialLayers.Rapid).ToList());
|
||||
var lines = new List<Line>();
|
||||
var totalSpacing = spacing + chordTolerance;
|
||||
var totalSpacing = spacing;
|
||||
|
||||
AddOffsetLines(lines, profile.Perimeter.OffsetOutward(totalSpacing),
|
||||
chordTolerance, part.Location);
|
||||
@@ -63,7 +63,7 @@ namespace OpenNest
|
||||
var profile = new ShapeProfile(
|
||||
entities.Where(e => e.Layer != SpecialLayers.Rapid).ToList());
|
||||
var lines = new List<Line>();
|
||||
var totalSpacing = spacing + chordTolerance;
|
||||
var totalSpacing = spacing;
|
||||
|
||||
AddOffsetDirectionalLines(lines, profile.Perimeter.OffsetOutward(totalSpacing),
|
||||
chordTolerance, part.Location, facingDirection);
|
||||
@@ -97,7 +97,7 @@ namespace OpenNest
|
||||
var profile = new ShapeProfile(
|
||||
entities.Where(e => e.Layer != SpecialLayers.Rapid).ToList());
|
||||
var lines = new List<Line>();
|
||||
var totalSpacing = spacing + chordTolerance;
|
||||
var totalSpacing = spacing;
|
||||
|
||||
AddOffsetDirectionalLines(lines, profile.Perimeter.OffsetOutward(totalSpacing),
|
||||
chordTolerance, part.Location, facingDirection);
|
||||
|
||||
Reference in New Issue
Block a user