List <PlotEntry> ParseTopCopper(string definitionsPath, List <BasePlotterTool> toolSet) { string data = ""; string topCopperFilePath = definitionsPath.Replace("READ-ME", "Top Copper"); if (!File.Exists(topCopperFilePath)) { topCopperFilePath = topCopperFilePath.Replace(".TXT", ".GBR"); } using (StreamReader reader = new StreamReader(topCopperFilePath, Encoding.UTF8, true)) { data = reader.ReadToEnd(); } int endIndex = data.IndexOf("%\r\nG54") > 0 ? data.IndexOf("%\r\nG54") : data.IndexOf("%\r\nD"); data = data.Substring(endIndex + 3); List <PlotEntry> entries = new List <PlotEntry>(); var lines = data.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); BasePlotterTool lastTool = null; lines.All(delegate(string line) { if (line.StartsWith("G") || line.StartsWith("D")) { lastTool = GetToolFromToolset(line, toolSet); } else { var entry = GetPlotEntry(line); if (entry != null && lastTool != null) { entry.ToolID = lastTool.ID; entries.Add(entry); } } return(true); }); return(entries); }
public static BasePlotterTool GetTool(string data) { BasePlotterTool resultInstance = null; string[] parameters = data.Split(','); string toolType = parameters[1]; switch (toolType) { case "RECT": { resultInstance = new RectanglePlotterTool(data); break; } case "SQUARE": { resultInstance = new SquarePlotterTool(data); break; } case "CIRCLE": { resultInstance = new CirclePlotterTool(data); break; } case "SMT": { resultInstance = new RectanglePlotterTool(data); break; } default: break; } return(resultInstance); }