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); } } }
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); } } }