예제 #1
0
        private void apply_Click(object sender, RoutedEventArgs e)
        {
            using (new UIUtils.WaitCursor())
            {
                try {
                    var probing = DataContext as ProbingViewModel;

                    RP.Math.Vector3 offset;

                    var limits = probing.Grbl.ProgramLimits;

                    if (!probing.Grbl.IsFileLoaded)
                    {
                        probing.Origin = OriginControl.Origin.None;
                    }

                    switch (probing.Origin)
                    {
                    case OriginControl.Origin.A:
                        offset = new RP.Math.Vector3(limits.MinX, limits.MinY, 0d);
                        break;

                    case OriginControl.Origin.B:
                        offset = new RP.Math.Vector3(limits.MaxX, limits.MinY, 0d);
                        break;

                    case OriginControl.Origin.C:
                        offset = new RP.Math.Vector3(limits.MaxX, limits.MaxY, 0d);
                        break;

                    case OriginControl.Origin.D:
                        offset = new RP.Math.Vector3(limits.MinX, limits.MaxY, 0d);
                        break;

                    case OriginControl.Origin.Center:
                        offset = new RP.Math.Vector3(limits.MaxX / 2d, limits.MaxY / 2d, 0d);
                        break;

                    case OriginControl.Origin.AB:
                        offset = new RP.Math.Vector3(limits.MaxX / 2d, limits.MinY, 0d);
                        break;

                    case OriginControl.Origin.AD:
                        offset = new RP.Math.Vector3(limits.MinX, limits.MaxY / 2d, 0d);
                        break;

                    case OriginControl.Origin.CB:
                        offset = new RP.Math.Vector3(limits.MaxX, limits.MaxY / 2d, 0d);
                        break;

                    case OriginControl.Origin.CD:
                        offset = new RP.Math.Vector3(limits.MaxX / 2d, limits.MaxY, 0d);
                        break;

                    default:     // Origin.None -> 0,0
                        offset = new RP.Math.Vector3();
                        break;
                    }

                    new GCodeRotate().ApplyRotation(getAngle(), new RP.Math.Vector3(), AppConfig.Settings.Base.AutoCompress);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "GCode Rotate", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                }
            }
        }
예제 #2
0
        public void Apply()
        {
            if (new GCodeRotateDialog(this)
            {
                Owner = Application.Current.MainWindow
            }.ShowDialog() != true)
            {
                return;
            }

            if (Angle == 0d)
            {
                return; // Nothing to do...
            }
            using (new UIUtils.WaitCursor())
            {
                try
                {
                    RP.Math.Vector3 offset;

                    var limits = GCode.File.Model.ProgramLimits;

                    switch (_origin)
                    {
                    case OriginControl.Origin.A:
                        offset = new RP.Math.Vector3(limits.MinX, limits.MinY, 0d);
                        break;

                    case OriginControl.Origin.B:
                        offset = new RP.Math.Vector3(limits.MaxX, limits.MinY, 0d);
                        break;

                    case OriginControl.Origin.C:
                        offset = new RP.Math.Vector3(limits.MaxX, limits.MaxY, 0d);
                        break;

                    case OriginControl.Origin.D:
                        offset = new RP.Math.Vector3(limits.MinX, limits.MaxY, 0d);
                        break;

                    case OriginControl.Origin.Center:
                        offset = new RP.Math.Vector3(limits.MaxX / 2d, limits.MaxY / 2d, 0d);
                        break;

                    case OriginControl.Origin.AB:
                        offset = new RP.Math.Vector3(limits.MaxX / 2d, limits.MinY, 0d);
                        break;

                    case OriginControl.Origin.AD:
                        offset = new RP.Math.Vector3(limits.MinX, limits.MaxY / 2d, 0d);
                        break;

                    case OriginControl.Origin.CB:
                        offset = new RP.Math.Vector3(limits.MaxX, limits.MaxY / 2d, 0d);
                        break;

                    case OriginControl.Origin.CD:
                        offset = new RP.Math.Vector3(limits.MaxX / 2d, limits.MaxY, 0d);
                        break;

                    default:     // Origin.None -> 0,0
                        offset = new RP.Math.Vector3();
                        break;
                    }

                    new GCodeRotate().ApplyRotation(Angle * Math.PI / 180d, offset, AppConfig.Settings.Base.AutoCompress);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "GCode Rotate", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                }
            }
        }