feat: serialize HasManualLeadIns, LeadInsLocked, and :SUPPRESSED in nest files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-30 13:29:49 -04:00
parent f34dce95da
commit c9b5ee1918
4 changed files with 60 additions and 31 deletions
+2
View File
@@ -74,6 +74,8 @@ namespace OpenNest.IO
public double X { get; init; } public double X { get; init; }
public double Y { get; init; } public double Y { get; init; }
public double Rotation { get; init; } public double Rotation { get; init; }
public bool HasManualLeadIns { get; init; }
public bool LeadInsLocked { get; init; }
} }
public record CutOffDto public record CutOffDto
+2
View File
@@ -214,6 +214,8 @@ namespace OpenNest.IO
var part = new Part(dwg); var part = new Part(dwg);
part.Rotate(partDto.Rotation); part.Rotate(partDto.Rotation);
part.Offset(new Vector(partDto.X, partDto.Y)); part.Offset(new Vector(partDto.X, partDto.Y));
part.HasManualLeadIns = partDto.HasManualLeadIns;
part.LeadInsLocked = partDto.LeadInsLocked;
plate.Parts.Add(part); plate.Parts.Add(part);
} }
+9 -1
View File
@@ -173,7 +173,9 @@ namespace OpenNest.IO
DrawingId = match.Key, DrawingId = match.Key,
X = part.Location.X, X = part.Location.X,
Y = part.Location.Y, Y = part.Location.Y,
Rotation = part.Rotation Rotation = part.Rotation,
HasManualLeadIns = part.HasManualLeadIns,
LeadInsLocked = part.LeadInsLocked
}); });
} }
@@ -336,6 +338,9 @@ namespace OpenNest.IO
if (arcMove.Layer != LayerType.Cut) if (arcMove.Layer != LayerType.Cut)
sb.Append(GetLayerString(arcMove.Layer)); sb.Append(GetLayerString(arcMove.Layer));
if (arcMove.Suppressed)
sb.Append(":SUPPRESSED");
return sb.ToString(); return sb.ToString();
} }
@@ -357,6 +362,9 @@ namespace OpenNest.IO
if (linearMove.Layer != LayerType.Cut) if (linearMove.Layer != LayerType.Cut)
sb.Append(GetLayerString(linearMove.Layer)); sb.Append(GetLayerString(linearMove.Layer));
if (linearMove.Suppressed)
sb.Append(":SUPPRESSED");
return sb.ToString(); return sb.ToString();
} }
+47 -30
View File
@@ -142,6 +142,7 @@ namespace OpenNest.IO
double x = 0; double x = 0;
double y = 0; double y = 0;
var layer = LayerType.Cut; var layer = LayerType.Cut;
var suppressed = false;
while (section == CodeSection.Line) while (section == CodeSection.Line)
{ {
@@ -164,25 +165,32 @@ namespace OpenNest.IO
case ':': case ':':
{ {
var value = code.Value.Trim().ToUpper(); var tags = code.Value.Trim().ToUpper().Split(':');
switch (value) foreach (var tag in tags)
{ {
case "DISPLAY": switch (tag)
layer = LayerType.Display; {
break; case "DISPLAY":
layer = LayerType.Display;
break;
case "LEADIN": case "LEADIN":
layer = LayerType.Leadin; layer = LayerType.Leadin;
break; break;
case "LEADOUT": case "LEADOUT":
layer = LayerType.Leadout; layer = LayerType.Leadout;
break; break;
case "SCRIBE": case "SCRIBE":
layer = LayerType.Scribe; layer = LayerType.Scribe;
break; break;
case "SUPPRESSED":
suppressed = true;
break;
}
} }
break; break;
} }
@@ -195,7 +203,7 @@ namespace OpenNest.IO
if (isRapid) if (isRapid)
program.Codes.Add(new RapidMove(x, y)); program.Codes.Add(new RapidMove(x, y));
else else
program.Codes.Add(new LinearMove(x, y) { Layer = layer }); program.Codes.Add(new LinearMove(x, y) { Layer = layer, Suppressed = suppressed });
} }
private void ReadArc(RotationType rotation) private void ReadArc(RotationType rotation)
@@ -205,6 +213,7 @@ namespace OpenNest.IO
double i = 0; double i = 0;
double j = 0; double j = 0;
var layer = LayerType.Cut; var layer = LayerType.Cut;
var suppressed = false;
while (section == CodeSection.Arc) while (section == CodeSection.Arc)
{ {
@@ -236,25 +245,32 @@ namespace OpenNest.IO
case ':': case ':':
{ {
var value = code.Value.Trim().ToUpper(); var tags = code.Value.Trim().ToUpper().Split(':');
switch (value) foreach (var tag in tags)
{ {
case "DISPLAY": switch (tag)
layer = LayerType.Display; {
break; case "DISPLAY":
layer = LayerType.Display;
break;
case "LEADIN": case "LEADIN":
layer = LayerType.Leadin; layer = LayerType.Leadin;
break; break;
case "LEADOUT": case "LEADOUT":
layer = LayerType.Leadout; layer = LayerType.Leadout;
break; break;
case "SCRIBE": case "SCRIBE":
layer = LayerType.Scribe; layer = LayerType.Scribe;
break; break;
case "SUPPRESSED":
suppressed = true;
break;
}
} }
break; break;
} }
@@ -269,7 +285,8 @@ namespace OpenNest.IO
EndPoint = new Vector(x, y), EndPoint = new Vector(x, y),
CenterPoint = new Vector(i, j), CenterPoint = new Vector(i, j),
Rotation = rotation, Rotation = rotation,
Layer = layer Layer = layer,
Suppressed = suppressed
}); });
} }