diff --git a/OpenNest.Core/Drawing.cs b/OpenNest.Core/Drawing.cs index bb38232..a76ef63 100644 --- a/OpenNest.Core/Drawing.cs +++ b/OpenNest.Core/Drawing.cs @@ -12,8 +12,32 @@ namespace OpenNest public class Drawing { private static int nextId; + private static int nextColorIndex; private Program program; + public static readonly Color[] PartColors = new Color[] + { + Color.FromArgb(205, 92, 92), // Indian Red + Color.FromArgb(148, 103, 189), // Medium Purple + Color.FromArgb(75, 180, 175), // Teal + Color.FromArgb(210, 190, 75), // Goldenrod + Color.FromArgb(190, 85, 175), // Orchid + Color.FromArgb(185, 115, 85), // Sienna + Color.FromArgb(120, 100, 190), // Slate Blue + Color.FromArgb(200, 100, 140), // Rose + Color.FromArgb(80, 175, 155), // Sea Green + Color.FromArgb(195, 160, 85), // Dark Khaki + Color.FromArgb(175, 95, 160), // Plum + Color.FromArgb(215, 130, 130), // Light Coral + }; + + public static Color GetNextColor() + { + var color = PartColors[nextColorIndex % PartColors.Length]; + nextColorIndex++; + return color; + } + public Drawing() : this(string.Empty, new Program()) { diff --git a/OpenNest.Mcp/Tools/InputTools.cs b/OpenNest.Mcp/Tools/InputTools.cs index d06ce18..7d20be0 100644 --- a/OpenNest.Mcp/Tools/InputTools.cs +++ b/OpenNest.Mcp/Tools/InputTools.cs @@ -112,6 +112,7 @@ namespace OpenNest.Mcp.Tools var drawingName = name ?? Path.GetFileNameWithoutExtension(path); var drawing = new Drawing(drawingName, pgm); + drawing.Color = Drawing.GetNextColor(); _session.Drawings.Add(drawing); var bbox = pgm.BoundingBox(); @@ -155,6 +156,7 @@ namespace OpenNest.Mcp.Tools if (pgm == null) return "Error: failed to parse G-code"; var gcodeDrawing = new Drawing(name, pgm); + gcodeDrawing.Color = Drawing.GetNextColor(); _session.Drawings.Add(gcodeDrawing); var gcodeBbox = pgm.BoundingBox(); return $"Created drawing '{name}': bbox={gcodeBbox.Width:F2} x {gcodeBbox.Length:F2}"; @@ -164,6 +166,7 @@ namespace OpenNest.Mcp.Tools } var drawing = shapeDef.GetDrawing(); + drawing.Color = Drawing.GetNextColor(); _session.Drawings.Add(drawing); var bbox = drawing.Program.BoundingBox(); diff --git a/OpenNest.Training/Program.cs b/OpenNest.Training/Program.cs index 7e4e8fe..eeea637 100644 --- a/OpenNest.Training/Program.cs +++ b/OpenNest.Training/Program.cs @@ -79,21 +79,7 @@ int RunDataCollection(string dir, string dbPath, string saveDir, double s, strin Console.WriteLine($"Using template: {template}"); } - var PartColors = new[] - { - Color.FromArgb(205, 92, 92), - Color.FromArgb(148, 103, 189), - Color.FromArgb(75, 180, 175), - Color.FromArgb(210, 190, 75), - Color.FromArgb(190, 85, 175), - Color.FromArgb(185, 115, 85), - Color.FromArgb(120, 100, 190), - Color.FromArgb(200, 100, 140), - Color.FromArgb(80, 175, 155), - Color.FromArgb(195, 160, 85), - Color.FromArgb(175, 95, 160), - Color.FromArgb(215, 130, 130), - }; + var PartColors = Drawing.PartColors; var sheetSuite = new[] { diff --git a/OpenNest/ColorScheme.cs b/OpenNest/ColorScheme.cs index b0911d0..6c34709 100644 --- a/OpenNest/ColorScheme.cs +++ b/OpenNest/ColorScheme.cs @@ -13,21 +13,7 @@ namespace OpenNest private Color edgeSpacingColor; private Color previewPartColor; - public static readonly Color[] PartColors = new Color[] - { - Color.FromArgb(205, 92, 92), // Indian Red - Color.FromArgb(148, 103, 189), // Medium Purple - Color.FromArgb(75, 180, 175), // Teal - Color.FromArgb(210, 190, 75), // Goldenrod - Color.FromArgb(190, 85, 175), // Orchid - Color.FromArgb(185, 115, 85), // Sienna - Color.FromArgb(120, 100, 190), // Slate Blue - Color.FromArgb(200, 100, 140), // Rose - Color.FromArgb(80, 175, 155), // Sea Green - Color.FromArgb(195, 160, 85), // Dark Khaki - Color.FromArgb(175, 95, 160), // Plum - Color.FromArgb(215, 130, 130), // Light Coral - }; + public static Color[] PartColors => Drawing.PartColors; public static readonly ColorScheme Default = new ColorScheme { diff --git a/OpenNest/Forms/BomImportForm.cs b/OpenNest/Forms/BomImportForm.cs index fb8f376..3a49f63 100644 --- a/OpenNest/Forms/BomImportForm.cs +++ b/OpenNest/Forms/BomImportForm.cs @@ -420,6 +420,7 @@ namespace OpenNest.Forms var drawingName = Path.GetFileNameWithoutExtension(part.DxfPath); var drawing = new Drawing(drawingName); + drawing.Color = Drawing.GetNextColor(); drawing.Source.Path = part.DxfPath; drawing.Quantity.Required = part.Qty ?? 1; drawing.Material = new Material(material); diff --git a/OpenNest/Forms/CadConverterForm.cs b/OpenNest/Forms/CadConverterForm.cs index 4e61ddc..fa1f184 100644 --- a/OpenNest/Forms/CadConverterForm.cs +++ b/OpenNest/Forms/CadConverterForm.cs @@ -19,7 +19,7 @@ namespace OpenNest.Forms { public partial class CadConverterForm : Form { - private static int colorIndex; + private SimplifierViewerForm simplifierViewer; private bool staleProgram = true; @@ -622,7 +622,7 @@ namespace OpenNest.Forms continue; var drawing = new Drawing(item.Name); - drawing.Color = GetNextColor(); + drawing.Color = Drawing.GetNextColor(); drawing.Customer = item.Customer; drawing.Source.Path = item.Path; drawing.Quantity.Required = item.Quantity; @@ -671,12 +671,7 @@ namespace OpenNest.Forms } - private static Color GetNextColor() - { - var color = ColorScheme.PartColors[colorIndex % ColorScheme.PartColors.Length]; - colorIndex++; - return color; - } + private static Color GetNextColor() => Drawing.GetNextColor(); private static bool IsDirectoryWritable(string path) {