public virtual IEnumerable <bool> InterpretInteractive(GCodeFile file, InterpretArgs args)
        {
            IEnumerable <GCodeLine> lines_enum =
                (args.HasTypeFilter) ? file.AllLinesOfType(args.eTypeFilter) : file.AllLines();

            listener.Begin();

            CurPosition = Vector3d.Zero;

            foreach (GCodeLine line in lines_enum)
            {
                if (line.type == GCodeLine.LType.GCode)
                {
                    Action <GCodeLine> parseF;
                    if (GCodeMap.TryGetValue(line.code, out parseF))
                    {
                        parseF(line);
                        yield return(true);
                    }
                }
            }

            listener.End();

            yield return(false);
        }
        public virtual IOWriteResult WriteFile(GCodeFile file, StreamWriter outStream)
        {
            // save current culture
            var current_culture = Thread.CurrentThread.CurrentCulture;

            try {
                if (WriteInvariantCulture)
                {
                    Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
                }

                foreach (var line in file.AllLines())
                {
                    WriteLine(line, outStream);
                }

                // restore culture
                if (WriteInvariantCulture)
                {
                    Thread.CurrentThread.CurrentCulture = current_culture;
                }

                return(IOWriteResult.Ok);
            } catch (Exception e) {
                // restore culture
                if (WriteInvariantCulture)
                {
                    Thread.CurrentThread.CurrentCulture = current_culture;
                }
                return(new IOWriteResult(IOCode.WriterError, "Unknown error : exception : " + e.Message));
            }
        }
        public virtual void Interpret(GCodeFile file, InterpretArgs args)
        {
            IEnumerable <GCodeLine> lines_enum =
                (args.HasTypeFilter) ? file.AllLines() : file.AllLinesOfType(args.eTypeFilter);

            listener.Begin();

            CurPosition = Vector3d.Zero;

            foreach (GCodeLine line in lines_enum)
            {
                Action <GCodeLine> parseF;
                if (line.Type == LineType.GCode)
                {
                    if (GCodeMap.TryGetValue(line.Code, out parseF))
                    {
                        parseF(line);
                    }
                }
                else if (line.Type == LineType.MCode)
                {
                    if (MCodeMap.TryGetValue(line.Code, out parseF))
                    {
                        parseF(line);
                    }
                }
            }

            listener.End();
        }
Esempio n. 4
0
 public virtual void WriteFile(GCodeFile file, StreamWriter outStream)
 {
     foreach (var line in file.AllLines())
     {
         WriteLine(line, outStream);
     }
 }