Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }