예제 #1
0
        public void Postprocess(string file)
        {
            string dir = Main.globalSettings.Workdir;

            if (Main.conn.runFilterEverySlice == false || postproc != null || dir.Length == 0)
            {
                SlicingInfo.f.Invoke(SlicingInfo.f.StopInfo);
                LoadGCode lg = Main.main.LoadGCode;
                Main.main.Invoke(lg, file);
                if (SlicingInfo.f.checkStartBoxAfterSlicing.Checked && Main.conn.connected)
                {
                    Main.main.Invoke(Main.main.StartJob);
                }
                return; // Nothing to do
            }
            SlicingInfo.f.Invoke(SlicingInfo.f.PostprocInfo);
            // Copy file to work dir
            postprocessFile = file;
            string tmpfile = dir + Path.DirectorySeparatorChar + "filter.gcode";

            File.Copy(file, tmpfile, true);
            // run filter
            string full = Main.conn.filterCommand;
            int    p    = full.IndexOf(' ');

            if (p < 0)
            {
                return;
            }
            string cmd  = full.Substring(0, p);
            string args = full.Substring(p + 1);

            args = args.Replace("#in", wrapQuotes(tmpfile));
            args = args.Replace("#out", wrapQuotes(file));
            Main.conn.log(cmd + " " + args, false, 3);
            postproc = new Process();
            postproc.EnableRaisingEvents = true;
            postproc.Exited                          += new EventHandler(PostprocessExited);
            postproc.StartInfo.FileName               = Main.IsMono ? cmd : wrapQuotes(cmd);
            postproc.StartInfo.Arguments              = args;
            postproc.StartInfo.UseShellExecute        = false;
            postproc.StartInfo.RedirectStandardOutput = true;
            postproc.OutputDataReceived              += new DataReceivedEventHandler(OutputDataHandler);
            postproc.StartInfo.RedirectStandardError  = true;
            postproc.ErrorDataReceived               += new DataReceivedEventHandler(OutputDataHandler);
            try
            {
                postproc.Start();
            }
            catch (Exception e)
            {
                postproc = null;
                SlicingInfo.f.Invoke(SlicingInfo.f.StopInfo);
                MessageBox.Show("Error starting postprocessor:" + e.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            // Start the asynchronous read of the standard output stream.
            postproc.BeginOutputReadLine();
            postproc.BeginErrorReadLine();
        }
예제 #2
0
        private async Task LoadAzureAsync(LoadOptions info)
        {
            using (var client = CreateHttpClient())
            {
                info.FileContent = await File.ReadAllBytesAsync(info.FileName);

                var response = await client.PostAsJsonAsync(api, info);

                var gcode = await response.Content.ReadAsAsync <string[]>();

                if (response.IsSuccessStatusCode)
                {
                    var load = new LoadGCode();
                    load.Load(gcode);
                    Commands.Clear();
                    Commands.AddRange(load.Commands);
                    if (!string.IsNullOrEmpty(info.GCodeWriteToFileName))
                    {
                        using (var sw = File.CreateText(Environment.ExpandEnvironmentVariables(info.GCodeWriteToFileName)))
                        {
                            load.WriteGCodeFile(sw);
                        }
                    }
                }
            }
        }
예제 #3
0
        private void ConversionExited(object sender, System.EventArgs e)
        {
            LoadGCode lg = Main.main.LoadGCode;

            procConvert.Close();
            procConvert = null;
            string gcodefile = StlToGCode(slicefile);

            Main.main.Invoke(lg, gcodefile);
        }
예제 #4
0
        private void PostprocessExited(object sender, System.EventArgs e)
        {
            postproc.Close();
            postproc = null;
            SlicingInfo.f.Invoke(SlicingInfo.f.StopInfo);
            LoadGCode lg = Main.main.fileAddOrRemove.LoadGCode;

            Main.main.Invoke(lg, postprocessFile);
            if (SlicingInfo.f.checkStartBoxAfterSlicing.Checked && Main.connection.connected)
            {
                Main.main.Invoke(Main.main.StartJob);
            }
        }
예제 #5
0
        public async Task <IActionResult> Render([FromBody] PreviewGCode opt)
        {
            var gCodeDraw = new GCodeBitmapDraw()
            {
                SizeX      = opt.SizeX,
                SizeY      = opt.SizeY,
                SizeZ      = opt.SizeZ,
                RenderSize = new Size(opt.RenderSizeX, opt.RenderSizeY),
                OffsetX    = opt.OffsetX,
                OffsetY    = opt.OffsetY,
                OffsetZ    = opt.OffsetZ,

                Zoom       = opt.Zoom,
                CutterSize = opt.CutterSize,
                LaserSize  = opt.LaserSize,
                KeepRatio  = opt.KeepRatio
            };

            if (opt.Rotate3DVect != null && opt.Rotate3DVect.Count() == 3)
            {
                gCodeDraw.Rotate = new Rotate3D(opt.Rotate3DAngle, opt.Rotate3DVect.ToArray());
            }

            var load = new LoadGCode();

            load.Load(opt.Commands.ToArray());
            var commands = load.Commands;
            var bitmap   = gCodeDraw.DrawToBitmap(commands);

            var memoryStream = new MemoryStream();

            bitmap.Save(memoryStream, ImageFormat.Png);
            memoryStream.Position = 0;
            var fileName = "preview.png";

            return(File(memoryStream, this.GetContentType(fileName), fileName));
        }
예제 #6
0
        public async Task <IActionResult> Render([FromBody] PreviewGCode opt)
        {
            await Task.CompletedTask;

            var gCodeDraw = new GCodeBitmapDraw()
            {
                SizeX      = opt.SizeX,
                SizeY      = opt.SizeY,
                SizeZ      = opt.SizeZ,
                RenderSize = new Size(opt.RenderSizeX, opt.RenderSizeY),
                OffsetX    = opt.OffsetX,
                OffsetY    = opt.OffsetY,
                OffsetZ    = opt.OffsetZ,

                Zoom       = opt.Zoom,
                CutterSize = opt.CutterSize,
                LaserSize  = opt.LaserSize,
                KeepRatio  = opt.KeepRatio,
            };

            if (!string.IsNullOrEmpty(opt.MachineColor))
            {
                gCodeDraw.MachineColor = System.Drawing.ColorTranslator.FromHtml(opt.MachineColor);
            }
            if (!string.IsNullOrEmpty(opt.LaserOnColor))
            {
                gCodeDraw.LaserOnColor = System.Drawing.ColorTranslator.FromHtml(opt.LaserOnColor);
            }
            if (!string.IsNullOrEmpty(opt.LaserOffColor))
            {
                gCodeDraw.LaserOffColor = System.Drawing.ColorTranslator.FromHtml(opt.LaserOffColor);
            }
            if (!string.IsNullOrEmpty(opt.CutColor))
            {
                gCodeDraw.CutColor = System.Drawing.ColorTranslator.FromHtml(opt.CutColor);
            }
            if (!string.IsNullOrEmpty(opt.CutDotColor))
            {
                gCodeDraw.CutDotColor = System.Drawing.ColorTranslator.FromHtml(opt.CutDotColor);
            }
            if (!string.IsNullOrEmpty(opt.CutEllipseColor))
            {
                gCodeDraw.CutEllipseColor = System.Drawing.ColorTranslator.FromHtml(opt.CutEllipseColor);
            }
            if (!string.IsNullOrEmpty(opt.CutArcColor))
            {
                gCodeDraw.CutArcColor = System.Drawing.ColorTranslator.FromHtml(opt.CutArcColor);
            }
            if (!string.IsNullOrEmpty(opt.FastMoveColor))
            {
                gCodeDraw.FastMoveColor = System.Drawing.ColorTranslator.FromHtml(opt.FastMoveColor);
            }
            if (!string.IsNullOrEmpty(opt.HelpLineColor))
            {
                gCodeDraw.HelpLineColor = System.Drawing.ColorTranslator.FromHtml(opt.HelpLineColor);
            }

            if (opt.Rotate3DVect != null && opt.Rotate3DVect.Count() == 3)
            {
                gCodeDraw.Rotate = new Rotate3D(opt.Rotate3DAngle, opt.Rotate3DVect.ToArray());
            }

            var load = new LoadGCode();

            load.Load(opt.Commands.ToArray());
            var commands = load.Commands;
            var bitmap   = gCodeDraw.DrawToBitmap(commands);

            var memoryStream = new MemoryStream();

            bitmap.Save(memoryStream, ImageFormat.Png);
            memoryStream.Position = 0;
            var fileName = "preview.png";

            return(File(memoryStream, this.GetContentType(fileName), fileName));
        }
예제 #7
0
        public async Task <IActionResult> Render(int id, [FromBody] PreviewGCode opt)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            var gCodeDraw = new GCodeBitmapDraw()
            {
                SizeX      = opt.SizeX,
                SizeY      = opt.SizeY,
                SizeZ      = opt.SizeZ,
                RenderSize = new Size(opt.RenderSizeX, opt.RenderSizeY),
                OffsetX    = opt.OffsetX,
                OffsetY    = opt.OffsetY,
                OffsetZ    = opt.OffsetZ,

                Zoom       = opt.Zoom,
                CutterSize = opt.CutterSize,
                LaserSize  = opt.LaserSize,
                KeepRatio  = opt.KeepRatio
            };

            if (opt.Rotate3DVect != null && opt.Rotate3DVect.Count() == 3)
            {
                gCodeDraw.Rotate = new Rotate3D(opt.Rotate3DAngle, opt.Rotate3DVect.ToArray());
            }

            if (!string.IsNullOrEmpty(opt.MachineColor))
            {
                gCodeDraw.MachineColor = System.Drawing.ColorTranslator.FromHtml(opt.MachineColor);
            }
            if (!string.IsNullOrEmpty(opt.LaserOnColor))
            {
                gCodeDraw.LaserOnColor = System.Drawing.ColorTranslator.FromHtml(opt.LaserOnColor);
            }
            if (!string.IsNullOrEmpty(opt.LaserOffColor))
            {
                gCodeDraw.LaserOffColor = System.Drawing.ColorTranslator.FromHtml(opt.LaserOffColor);
            }
            if (!string.IsNullOrEmpty(opt.CutColor))
            {
                gCodeDraw.CutColor = System.Drawing.ColorTranslator.FromHtml(opt.CutColor);
            }
            if (!string.IsNullOrEmpty(opt.CutDotColor))
            {
                gCodeDraw.CutDotColor = System.Drawing.ColorTranslator.FromHtml(opt.CutDotColor);
            }
            if (!string.IsNullOrEmpty(opt.CutEllipseColor))
            {
                gCodeDraw.CutEllipseColor = System.Drawing.ColorTranslator.FromHtml(opt.CutEllipseColor);
            }
            if (!string.IsNullOrEmpty(opt.CutArcColor))
            {
                gCodeDraw.CutArcColor = System.Drawing.ColorTranslator.FromHtml(opt.CutArcColor);
            }
            if (!string.IsNullOrEmpty(opt.FastMoveColor))
            {
                gCodeDraw.FastMoveColor = System.Drawing.ColorTranslator.FromHtml(opt.FastMoveColor);
            }
            if (!string.IsNullOrEmpty(opt.HelpLineColor))
            {
                gCodeDraw.HelpLineColor = System.Drawing.ColorTranslator.FromHtml(opt.HelpLineColor);
            }

            var hisCommands = port.Serial.CommandHistoryCopy.OrderBy(x => x.SeqId).Select(c => c.CommandText);

            var load = new LoadGCode();

            load.Load(hisCommands.ToArray());
            var commands = load.Commands;
            var bitmap   = gCodeDraw.DrawToBitmap(commands);

            var memoryStream = new MemoryStream();

            bitmap.Save(memoryStream, ImageFormat.Png);
            memoryStream.Position = 0;
            var fileName = "preview.png";

            return(File(memoryStream, this.GetContentType(fileName), fileName));
        }