/// <summary> /// Load GCode from a file /// </summary> /// <param name="fileName"></param> /// <returns></returns> public static List <GCodeLine> LoadFromFile(string fileName) { int idx = 0; List <GCodeLine> list = new List <GCodeLine>(); //Create a fist line to setup initial positions, in case no information from grbl GCodeLine firstLn = new GCodeLine() { Index = idx }; firstLn.SetInitialPosition(); list.Add(firstLn); //Start reading file string ln = string.Empty; StreamReader sr = new StreamReader(fileName); while ((ln = sr.ReadLine()) != null) { try { idx++; //Create a GCode Line GCodeLine gcodeLn = new GCodeLine(ln) { Index = idx }; if (gcodeLn.comment.Length > 0) { continue; } list.Add(gcodeLn); //Create linked list GCodeLine prevCode = list[list.Count - 2]; gcodeLn.prev = prevCode; prevCode.next = gcodeLn; if (gcodeLn.IsPositionCode) { //gcodeLn.CalculateTravelDist(); //gcodeLn.GetCurrentDir(); } } catch (Exception ex) { Console.WriteLine(ex.Message + "<<" + ln + ">>"); } } return(list); }
public void AddGCodeLine(string ln) { if (gcodeLines == null) { gcodeLines = new List <GCodeLine>(); } ln = ln.Trim(); if (gcodeLines.Count == 0) { GCodeLine newLn = new GCodeLine(ln.Trim()); newLn.SetInitialPosition(); gcodeLines.Add(newLn); } else { GCodeLine prevLn = gcodeLines[gcodeLines.Count - 1]; GCodeLine newLn = new GCodeLine(ln.Trim(), prevLn); gcodeLines.Add(newLn); } }