/// <summary> /// Execute the frame creation process /// </summary> /// <param name="obj">Not in use</param> private void FrameCreationExecuted(object obj) { if (ReferenceFrame != null && ReferenceFrame != originalFrame) { TxApplication.ActiveDocument.WorkingFrame = ReferenceFrame; } try { foreach (RwFrameCreationViewModel frameViewModel in FramesData) { TxTransformation location = RwMathUtilities.CreateRpyTransformation(frameViewModel.X, frameViewModel.Y, frameViewModel.Z, frameViewModel.Rx, frameViewModel.Ry, frameViewModel.Rz, true); TxFrameCreationData frameCreationData = new TxFrameCreationData(frameViewModel.Name, location); TxApplication.ActiveDocument.PhysicalRoot.CreateFrame(frameCreationData); } string message = $"Successsfully created {FramesData.Count} frames"; TxMessageBox.Show(message, "Frame creation", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information); } catch { string message = "An error occured during frame creation"; TxMessageBox.Show(message, "Frame creation", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); } finally { TxApplication.ActiveDocument.WorkingFrame = originalFrame; } }
/// <summary> /// Execute the frame creation process /// </summary> /// <param name="obj">Not in use</param> private void FrameCreationExecuted(object obj) { if (ReferenceFrame != null && ReferenceFrame != originalFrame) { TxApplication.ActiveDocument.WorkingFrame = ReferenceFrame; } try { foreach (RwFrameCreationData frameData in FramesData) { //TxVector translation = new TxVector(frameData.X, frameData.Y, frameData.Z); //TxVector rotation = new TxVector(RwMath.Deg2Rad(frameData.Rx), RwMath.Deg2Rad(frameData.Ry), RwMath.Deg2Rad(frameData.Rz)); //TxTransformation location = new TxTransformation(translation, rotation, TxTransformation.TxRotationType.RPY_XYZ); TxTransformation location = RwMath.CreateRpyTransformation(frameData.X, frameData.Y, frameData.Z, frameData.Rx, frameData.Ry, frameData.Rz, true); TxFrameCreationData frameCreationData = new TxFrameCreationData(frameData.Name, location); TxApplication.ActiveDocument.PhysicalRoot.CreateFrame(frameCreationData); } string message = $"Successsfully created {FramesData.Count} frames"; TxMessageBox.Show(message, "Frame creation", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information); } catch { string message = "An error occured during frame creation"; TxMessageBox.Show(message, "Frame creation", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); } finally { TxApplication.ActiveDocument.WorkingFrame = originalFrame; } }
/// <summary> /// Create an instance of the frame creation command /// </summary> public RwCreateFramesFromListViewModel() { FrameGroupBoxHeader = "Frame data"; SourceFilename = string.Empty; FramesData = new ObservableCollection <RwFrameCreationViewModel>(); FramePrefix = "fr_"; FrameSuffix = string.Empty; ReferenceFrame = null; originalFrame = TxApplication.ActiveDocument.WorkingFrame; ChooseSourceFileCommand = new RwActionCommand(ChooseSourceFileExecuted, ChooseSourceFileCanExecute); ExecuteFrameCreationCommand = new RwActionCommand(FrameCreationExecuted, FrameCreationCanExecute); ReferenceFramePickedEvent = new RwActionCommand(ReferenceFramePickedExecuted, ReferenceFramePickedCanExecute); FramesData.CollectionChanged += FrameCollectionChanged; }
private void CheckA1Singularity(ITxRobot irobot) { TxTransformation currentWorkingFrame = TxApplication.ActiveDocument.WorkingFrame; TxRobot robot = irobot as TxRobot; if (robot != null) { if (location is ITxLocatableObject locateableLocation) { TxApplication.ActiveDocument.WorkingFrame = robot.AbsoluteLocation; double locationXvalue = locateableLocation.LocationRelativeToWorkingFrame.Translation.X; double locationYvalue = locateableLocation.LocationRelativeToWorkingFrame.Translation.Y; double xyValue = RwMathUtilities.Length(locationXvalue, locationYvalue, 0.0); if (RwMathUtilities.Abs(xyValue) < deltaA1Singularity) { AxisLimitsResult = string.IsNullOrEmpty(AxisLimitsResult) ? $"A1 Singularity: {xyValue:F1}" : string.Join("; ", AxisLimitsResult, $"A1 Singularity: {xyValue:F1}"); } TxApplication.ActiveDocument.WorkingFrame = currentWorkingFrame; } } }