fix: assign colors to SpecialLayers and ConvertProgram entities

ConvertProgram.ToGeometry() created entities without setting Color,
defaulting to Color.Empty (alpha=0). After ededc7b switched from
Pens.White to per-entity colors, these rendered fully transparent.

- Add explicit colors to all SpecialLayers (Cut=White, Rapid=Gray, etc.)
- Set entity Color from layer in ConvertProgram for lines, arcs, circles
- Add GetEntityPen fallback: treat Empty/alpha-0 as White
- Add bend line rendering and selection in EntityView/CadConverterForm
- Fix SolidWorksBendDetector MText formatting strip for bend notes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-24 21:57:50 -04:00
parent 6916f5ecca
commit d5b5ab57e3
5 changed files with 79 additions and 18 deletions

View File

@@ -59,9 +59,11 @@ namespace OpenNest.Converters
if (mode == Mode.Incremental)
pt += curpos;
var layer = ConvertLayer(linearMove.Layer);
var line = new Line(curpos, pt)
{
Layer = ConvertLayer(linearMove.Layer)
Layer = layer,
Color = layer.Color
};
geometry.Add(line);
curpos = pt;
@@ -76,7 +78,8 @@ namespace OpenNest.Converters
var line = new Line(curpos, pt)
{
Layer = SpecialLayers.Rapid
Layer = SpecialLayers.Rapid,
Color = SpecialLayers.Rapid.Color
};
geometry.Add(line);
curpos = pt;
@@ -103,9 +106,9 @@ namespace OpenNest.Converters
var layer = ConvertLayer(arcMove.Layer);
if (startAngle.IsEqualTo(endAngle))
geometry.Add(new Circle(center, radius) { Layer = layer });
geometry.Add(new Circle(center, radius) { Layer = layer, Color = layer.Color });
else
geometry.Add(new Arc(center, radius, startAngle, endAngle, arcMove.Rotation == RotationType.CW) { Layer = layer });
geometry.Add(new Arc(center, radius, startAngle, endAngle, arcMove.Rotation == RotationType.CW) { Layer = layer, Color = layer.Color });
curpos = endpt;
}