RsPathProcedureCopy Method |
Namespace: ABB.Robotics.RobotStudio.Stations
public ProjectObject Copy()
// NOTE: This example requires a station containing an IRB_140 and a running VC. Project.UndoContext.BeginUndoStep("RsPathProcedureExample"); try { Station station = Station.ActiveStation; // Create a PathProcedure. RsPathProcedure myPath = new RsPathProcedure("myPath"); // Add the path to the ActiveTask. station.ActiveTask.PathProcedures.Add(myPath); myPath.ModuleName = "MyModule"; myPath.ShowName = true; myPath.Synchronize = true; myPath.Visible = true; // Create the first RobTarget. RsRobTarget target1 = new RsRobTarget(); // Set the name of the RobTarget. target1.Name = station.ActiveTask.GetValidRapidName("Target", "_", 10); // Set the position and rotation of the RobTarget. target1.Frame.X = 0.50629; target1.Frame.Y = 0; target1.Frame.Z = 0.67950; target1.Frame.RX = Globals.DegToRad(180); // From ABB.Robotics.Math target1.Frame.RY = Globals.DegToRad(60); target1.Frame.RZ = Globals.DegToRad(180); // Add the RobTarget to the DataDeclarations of the ActiveTask. station.ActiveTask.DataDeclarations.Add(target1); // Create an RsTarget for the RobTarget. RsTarget homeRsTarget = new RsTarget(station.ActiveTask.ActiveWorkObject, target1); homeRsTarget.Name = target1.Name; // Add it to the ActiveTask. station.ActiveTask.Targets.Add(homeRsTarget); // Create a MoveInstruction for the RobTarget. RsMoveInstruction homeInstr = new RsMoveInstruction(station.ActiveTask, "Move", "Default", MotionType.Linear, "wobj0", target1.Name, "tool0"); // Add it to myPath. myPath.Instructions.Add(homeInstr); // Create the second RobTarget. See description for the first one. // The steps are identical. RsRobTarget target2 = new RsRobTarget(); target2.Name = station.ActiveTask.GetValidRapidName("Target", "_", 10); target2.Frame.X = 0.500; target2.Frame.Y = 0.125; target2.Frame.Z = 0.700; target2.Frame.RX = Globals.DegToRad(180); target2.Frame.RY = Globals.DegToRad(60); target2.Frame.RZ = Globals.DegToRad(180); station.ActiveTask.DataDeclarations.Add(target2); RsTarget trg1RsTarget = new RsTarget(station.ActiveTask.ActiveWorkObject, target2); trg1RsTarget.Name = target2.Name; station.ActiveTask.Targets.Add(trg1RsTarget); RsMoveInstruction trg1Instr = new RsMoveInstruction(station.ActiveTask, "Move", "Default", MotionType.Linear, "wobj0", target2.Name, "tool0"); myPath.Instructions.Add(trg1Instr); // Create the third RobTarget. See description for the first one. // The steps are identical. RsRobTarget target3 = new RsRobTarget(); target3.Name = station.ActiveTask.GetValidRapidName("Target", "_", 10); target3.Frame.X = 0.500; target3.Frame.Y = 0.125; target3.Frame.Z = 0.500; target3.Frame.RX = Globals.DegToRad(180); target3.Frame.RY = Globals.DegToRad(60); target3.Frame.RZ = Globals.DegToRad(180); station.ActiveTask.DataDeclarations.Add(target3); RsTarget trg2RsTarget = new RsTarget(station.ActiveTask.ActiveWorkObject, target3); trg2RsTarget.Name = target3.Name; station.ActiveTask.Targets.Add(trg2RsTarget); RsMoveInstruction trg2Instr = new RsMoveInstruction(station.ActiveTask, "Move", "Default", MotionType.Linear, "wobj0", target3.Name, "tool0"); myPath.Instructions.Add(trg2Instr); // Create the fourth RobTarget. See description for the first one. // The steps are identical. RsRobTarget target4 = new RsRobTarget(); target4.Name = station.ActiveTask.GetValidRapidName("Target", "_", 10); target4.Frame.X = 0.500; target4.Frame.Y = 0.200; target4.Frame.Z = 0.500; target4.Frame.RX = Globals.DegToRad(180); target4.Frame.RY = Globals.DegToRad(60); target4.Frame.RZ = Globals.DegToRad(180); station.ActiveTask.DataDeclarations.Add(target4); RsTarget trg3RsTarget = new RsTarget(station.ActiveTask.ActiveWorkObject, target4); trg3RsTarget.Name = target4.Name; station.ActiveTask.Targets.Add(trg3RsTarget); RsMoveInstruction trg3Instr = new RsMoveInstruction(station.ActiveTask, "Move", "Default", MotionType.Linear, "wobj0", target4.Name, "tool0"); myPath.Instructions.Add(trg3Instr); // Create the fifth RobTarget. See description for the first one. // The steps are identical. RsRobTarget target5 = new RsRobTarget(); target5.Name = station.ActiveTask.GetValidRapidName("Target", "_", 10); target5.Frame.X = 0.500; target5.Frame.Y = 0.400; target5.Frame.Z = 0.500; target5.Frame.RX = Globals.DegToRad(180); target5.Frame.RY = Globals.DegToRad(60); target5.Frame.RZ = Globals.DegToRad(180); station.ActiveTask.DataDeclarations.Add(target5); RsTarget trg4RsTarget = new RsTarget(station.ActiveTask.ActiveWorkObject, target5); trg4RsTarget.Name = target5.Name; station.ActiveTask.Targets.Add(trg4RsTarget); RsMoveInstruction trg4Instr = new RsMoveInstruction(station.ActiveTask, "Move", "Default", MotionType.Linear, "wobj0", target5.Name, "tool0"); myPath.Instructions.Add(trg4Instr); // Create the sixth RobTarget. See description for the first one. // The steps are identical. RsRobTarget target6 = new RsRobTarget(); target6.Name = station.ActiveTask.GetValidRapidName("Target", "_", 10); target6.Frame.X = 0.500; target6.Frame.Y = 0.400; target6.Frame.Z = 0.700; target6.Frame.RX = Globals.DegToRad(180); target6.Frame.RY = Globals.DegToRad(60); target6.Frame.RZ = Globals.DegToRad(180); station.ActiveTask.DataDeclarations.Add(target6); RsTarget trg5RsTarget = new RsTarget(station.ActiveTask.ActiveWorkObject, target6); trg5RsTarget.Name = target6.Name; station.ActiveTask.Targets.Add(trg5RsTarget); RsMoveInstruction trg5Instr = new RsMoveInstruction(station.ActiveTask, "Move", "Default", MotionType.Linear, "wobj0", target6.Name, "tool0"); myPath.Instructions.Add(trg5Instr); // Move along the path. if (await myPath.MoveAlongAsync(null)) { Logger.AddMessage(new LogMessage("Move along path '" + myPath.Name + "' succeded!")); } else { Logger.AddMessage(new LogMessage("Move along path '" + myPath.Name + "' failed!")); } } catch { Project.UndoContext.CancelUndoStep(CancelUndoStepType.Rollback); throw; } finally { Project.UndoContext.EndUndoStep(); }