示例#1
0
        public void GenerateCode(string path)
        {
            GCodeCollector Code = new GCodeCollector();

            Code.Codes.Clear();
            Code.addCode(GCodeSpecial.HeaterAndWait(Printer.Temperature));
            Code.addCode(GCodeSpecial.setMetricValues());
            Code.addCode(GCodeSpecial.setAbsolutePositionMode());
            Code.addCode(GCodeSpecial.setExtruderRelativeMode());
            Code.addCode(GCodeSpecial.GoToHome(x: true, y: true));
            Code.addCode(GCodeSpecial.GoToHome(z: true));
            Code.addCode(GCodeSpecial.ResetToExtrude(0));
            Code.addCode(new GCodeLine(z: 15, speed: 9000, mode: GCodeLine.SpeedModes.Fast));

            int h = Grid.Rows;
            int w = Grid.Columns;
            int c = 0;

            for (int x = 0; x < w; x++)
            {
                for (int y = 0; y < h; y++)
                {
                    c++;
                    var yk = (x % 2 != 0) ?  h - y - 1 : y;

                    Console.WriteLine(x + "; " + yk);

                    var task = Tasks[x, yk];

                    if (task == null)
                    {
                        continue;
                    }


                    double cX = x * Grid.DistanceColumns + Grid.GridOffX;
                    double cY = yk * Grid.DistanceRows + Grid.GridOffY;

                    double z = Printer.Zoff;

                    c = x + yk * w;

                    if (GridMap != null && GridMap.Count > c && GridMap[c] != null)
                    {
                        z = GridMap[c].Value;
                    }
                    Console.WriteLine(z);
                    task.Print(Code, cX, cY, z);
                    Code.addCode(new GCodeLine(z: 15, speed: 9000, mode: GCodeLine.SpeedModes.Fast));
                }
            }

            Code.addCode(GCodeSpecial.GoToHome(x: true, y: true));
            Code.addCode(GCodeSpecial.FanOff());
            Code.addCode(GCodeSpecial.HeaterOff());
            Code.addCode(GCodeSpecial.StepperOff());

            Code.SaveTogCodeFile(path);
        }
示例#2
0
        public static PetriTask OpenPyton(string file)
        {
            try
            {
                var     ipy  = Python.CreateRuntime();
                dynamic test = ipy.UseFile(file);

                string         name        = test.Name();
                string         description = test.Description();
                GCodeCollector code        = test.Code();

                return(new PetriTask(name, description, code));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return(null);
        }
示例#3
0
        public TrackViewer(GCodeCollector code)
        {
            InitializeComponent();
            Code = code;

            zoomSlider.ValueChanged                  += OnSliderValueChanged;
            scrollViewer.ScrollChanged               += OnScrollViewerScrollChanged;
            scrollViewer.MouseMove                   += Vaszon_MouseMove;
            scrollViewer.PreviewMouseRightButtonUp   += OnMouseRightButtonUp;
            scrollViewer.PreviewMouseRightButtonDown += OnMouseRightButtonDown;
            scrollViewer.PreviewMouseWheel           += OnPreviewMouseWheel;


            RemoveBtn.Click += (s, e) =>
            {
                RemovePoint?.Invoke(_p - 1);
                SetPosition(_p);
            };

            Vaszon.MouseUp += (s, e) =>
            {
                if (!Keyboard.IsKeyDown(Key.LeftCtrl))
                {
                    return;
                }
                System.Windows.Point currentPosition = e.GetPosition(Vaszon);

                currentPosition.X -= ShiftView.X;
                currentPosition.Y -= ShiftView.Y;

                AddPoint?.Invoke(_p, currentPosition);

                var line = Vaszon.Children[Vaszon.Children.Count - 2] as Line;

                SetPosition(_p + 1);
            };

            jelolo                 = new Ellipse();
            jelolo.Fill            = Brushes.Yellow;
            jelolo.Stroke          = Brushes.Black;
            jelolo.Width           = 1;
            jelolo.Height          = 1;
            jelolo.StrokeThickness = 0.2;
            jelolo.MouseEnter     += (s, e) => { Mouse.OverrideCursor = Cursors.Hand; };
            jelolo.MouseLeave     += (s, e) => { Mouse.OverrideCursor = null; };

            jelolo.MouseDown += (s, e) =>
            {
                mozog = true;
                jelolo.CaptureMouse();
            };
            jelolo.MouseUp += (s, e) =>
            {
                mozog = false;
                jelolo.ReleaseMouseCapture();
            };
            jelolo.MouseMove += (s, e) =>
            {
                if (!mozog)
                {
                    return;
                }
                System.Windows.Point currentPosition = e.GetPosition(Vaszon);



                Canvas.SetLeft(jelolo, currentPosition.X - jelolo.Width / 2);
                Canvas.SetTop(jelolo, currentPosition.Y - jelolo.Height / 2);

                var line = Vaszon.Children[Vaszon.Children.Count - 2] as Line;

                line.X2 = currentPosition.X;
                line.Y2 = currentPosition.Y;

                var l = line.DataContext as GCodeLine;
                currentPosition.X -= ShiftView.X;
                currentPosition.Y -= ShiftView.Y;
                l.x = currentPosition.X;
                l.y = currentPosition.Y;
            };
        }