feat: expand SubProgramCalls with Offset in ConvertProgram

Inline sub-program geometry into the parent geometry list using Offset
as the starting curpos, replacing the Shape-wrapping approach.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-09 14:31:13 -04:00
parent f3b27c32c3
commit c641b3b68e
2 changed files with 63 additions and 5 deletions

View File

@@ -41,12 +41,15 @@ namespace OpenNest.Converters
break;
case CodeType.SubProgramCall:
var tmpmode = mode;
var subpgm = (SubProgramCall)code;
var geoProgram = new Shape();
AddProgram(subpgm.Program, ref mode, ref curpos, ref geoProgram.Entities);
geometry.Add(geoProgram);
mode = tmpmode;
var savedMode = mode;
// Apply offset: sub-program executes at the call's offset position
if (subpgm.Offset.X != 0 || subpgm.Offset.Y != 0)
curpos = subpgm.Offset;
AddProgram(subpgm.Program, ref mode, ref curpos, ref geometry);
mode = savedMode;
break;
}
}