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:
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user