Click or drag to resize
RsPathProcedureCopy Method
Creates a deep copy of the RsPathProcedure

Namespace:  ABB.Robotics.RobotStudio.Stations
Assembly:  ABB.Robotics.RobotStudio.Stations (in ABB.Robotics.RobotStudio.Stations.dll) Version: 7.0.8747.636
Syntax
Examples
Copy PathProcedure.
RsPathProcedure Example
// 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();
}
Version Information

Supported in: 1.0.0.0
See Also