fix: offset inline feature coordinates by part location for G90 absolute mode

Part.Program stores coordinates relative to the part's own origin, but
the Cincinnati post processor emits G90 (absolute positioning). Inline
features were writing part-relative coordinates directly without adding
Part.Location, producing incorrect output. Sub-program mode was
unaffected because it uses G92 to set up local coordinate systems.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-31 09:50:43 -04:00
parent d7fa4bef43
commit 568539d5b1
3 changed files with 77 additions and 7 deletions

View File

@@ -153,7 +153,8 @@ public sealed class CincinnatiSheetWriter
IsEtch = isEtch,
LibraryFile = isEtch ? etchLibrary : cutLibrary,
CutDistance = cutDistance,
SheetDiagonal = sheetDiagonal
SheetDiagonal = sheetDiagonal,
PartLocation = part.Location
};
_featureWriter.Write(w, ctx);
@@ -240,7 +241,8 @@ public sealed class CincinnatiSheetWriter
IsEtch = isEtch,
LibraryFile = isEtch ? etchLibrary : cutLibrary,
CutDistance = cutDistance,
SheetDiagonal = sheetDiagonal
SheetDiagonal = sheetDiagonal,
PartLocation = part.Location
};
_featureWriter.Write(w, ctx);