fix: preserve leading rapid in programs to prevent missing contour segment
The CAD converter and BOM import were stripping the leading RapidMove after normalizing program coordinates to origin. This left programs starting with a LinearMove, causing the post-processor to use that endpoint as the pierce point — making the first contour edge zero-length and losing the closing segment (e.g. the bottom line on curved parts). Root cause: CadConverterForm.GetDrawings(), OnSplitClicked(), and BomImportForm all called pgm.Codes.RemoveAt(0) after offsetting the rapid to origin. The rapid at (0,0) is a harmless no-op that marks the contour start point for downstream processing. Also adds EnsureLeadingRapid() safety net in the Cincinnati post for existing nest files that already have the rapid stripped. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -432,7 +432,6 @@ namespace OpenNest.Forms
|
||||
var rapid = (RapidMove)pgm[0];
|
||||
drawing.Source.Offset = rapid.EndPoint;
|
||||
pgm.Offset(-rapid.EndPoint);
|
||||
pgm.Codes.RemoveAt(0);
|
||||
}
|
||||
|
||||
drawing.Program = pgm;
|
||||
|
||||
@@ -362,7 +362,6 @@ namespace OpenNest.Forms
|
||||
var rapid = (RapidMove)pgm[0];
|
||||
originOffset = rapid.EndPoint;
|
||||
pgm.Offset(-originOffset);
|
||||
pgm.Codes.RemoveAt(0);
|
||||
}
|
||||
|
||||
var drawing = new Drawing(item.Name, pgm);
|
||||
@@ -660,7 +659,8 @@ namespace OpenNest.Forms
|
||||
var rapid = (RapidMove)firstCode;
|
||||
drawing.Source.Offset = rapid.EndPoint;
|
||||
pgm.Offset(-rapid.EndPoint);
|
||||
pgm.Codes.RemoveAt(0);
|
||||
// Keep the rapid (now at origin) — it marks the contour
|
||||
// start and is needed by the post for correct pierce placement.
|
||||
}
|
||||
|
||||
if (item == CurrentItem && programEditor.IsDirty && programEditor.Program != null)
|
||||
|
||||
Reference in New Issue
Block a user