Click or drag to resize
GraphicComponentCopy Method
Creates a deep copy of the object.

Namespace:  ABB.Robotics.RobotStudio.Stations
Assembly:  ABB.Robotics.RobotStudio.Stations (in ABB.Robotics.RobotStudio.Stations.dll) Version: 7.0.8747.636
Syntax
C#
public virtual ProjectObject Copy()

Return Value

Type: ProjectObject
The copy of the object.

Implements

ISupportCopyCopy
Examples
Copy.
Part Properties Example
Project.UndoContext.BeginUndoStep("PartProperties");
try
{
    Station station = Station.ActiveStation;

    // Create a part.
    #region PartPropertiesStep1
    Part myPart1 = new Part();
    myPart1.Name = "MyPart_1";
    #endregion

    // Add the part to the graphics componenets collection of the station.
    #region PartPropertiesStep2
    station.GraphicComponents.Add(myPart1);
    #endregion

    // Create a box and add it to myPart.
    #region PartPropertiesStep3
    Matrix4 box_origin = new Matrix4(Vector3.XVector, 0.0);
    Vector3 box_size = new Vector3(0.1, 0.1, 0.1);
    Body box = Body.CreateSolidBox(box_origin, box_size);
    box.Name = "MyBox";
    myPart1.Bodies.Add(box);
    #endregion

    // Create a cylinder and add it to myPart.
    #region PartPropertiesStep4
    Matrix4 origin = new Matrix4(new Vector3(Axis.X), 0.0);
    double radius = 0.2;
    double height = 1.0;
    Body myCylinder = Body.CreateSolidCylinder(origin, radius, height);
    myCylinder.Name = "MyCylinder";
    myPart1.Bodies.Add(myCylinder);
    #endregion

    // Make all the geometries in myPart orange.
    // When using VSTA, change to these lines instead:
    // Byte R1 = 255; Byte G1 = 165; Byte B1 = 0;
    // VSTABridge.SetColor(myPart, R1, G1, B1);
    #region PartPropertiesStep5
    myPart1.Color = Color.Orange;
    #endregion

    #region PartPropertiesStep6
    myPart1.Visible = true;
    #endregion
    myPart1.PickingEnabled = true;

    // Move myPart and all the bodies in it 100 mm along the 
    //X-axis and 100 mm along the Y-axis.
    #region PartPropertiesStep7
    myPart1.Transform.X = myPart1.Transform.X + 0.1;
    myPart1.Transform.Y = myPart1.Transform.Y + 0.1;
    #endregion

    // Create a copy of myPart.
    #region PartPropertiesStep8
    Part myPart2 = (Part)myPart1.Copy();
    myPart2.Name = "MyPart_2";
    #endregion

    // Add myPart2 to the station.
    #region PartPropertiesStep9
    station.GraphicComponents.Add(myPart2);
    #endregion
    #region PartPropertiesStep10
    GraphicComponentLibrary myLib = myPart2.MoveDefinitionToLibrary();
    Logger.AddMessage(
      new LogMessage("The RootComponent of the Lib is: " + myLib.RootComponent.Name));

    // Save a copy of the lib.
    // Get the path to the UserProjectsFolder.
    string userProjPath =
        (string)Options.GetValue("RobotStudio", "Directories.UserProjects");
    if (userProjPath != null)
    {
        myLib.SaveAs(userProjPath + "\\Libraries\\myLib.rslib");
    }
    else
    {
        // If there is no UserprojPath, save it in user documents.
        myLib.SaveAs(Path.Combine
        (System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), "myLib.rslib"));
    }
    #endregion

    // Create a new instance of myPart.
    #region PartPropertiesStep11
    Part myPart3 = (Part)myPart1.CopyInstance();
    #endregion

    // Add myPart3 to the station.
    station.GraphicComponents.Add(myPart3);

    // Delete the geometry of myPart3, this causes 
    // the geometry of myPart1 to be deleted to,
    // since they use the same definition.
    #region PartPropertiesStep12
    myPart3.DeleteGeometry();
    #endregion

    // Disconnect myPart2 from its library.
    #region PartPropertiesStep13
    myPart2.DisconnectFromLibrary();
    #endregion

    // Get the normal of myPart2
    #region PartPropertiesStep14
    BoundingBox bbox = myPart2.GetBoundingBox(true);
    Vector3 firstCorner = bbox.min;
    Vector3 secondCorner = bbox.max;
    Logger.AddMessage
        (new LogMessage("The first corner of the bounding box is ( "
        + firstCorner.x + "; " + firstCorner.y + "; " + firstCorner.z + ")"));
    Logger.AddMessage
        (new LogMessage("The second corner of the bounding box is ( "
        + secondCorner.x + "; " + secondCorner.y + "; " + secondCorner.z + ")"));
    Vector3 testPoint = new Vector3(0.0, 0.0, 0.0);
    Vector3 hitPoint;
    Vector3 hitPointNormal;
    Face hitFace;
    myPart2.GetNormalToSurface(testPoint, out hitPoint, out hitPointNormal, out hitFace);
    #endregion

    // Make the hitFace green.
    // When using VSTA, change to these lines instead:
    // Byte R = 0; Byte G = 255; Byte B = 0;
    // VSTABridge.SetColor(hitFace, R, G, B);
    hitFace.Color = Color.Green;

    Logger.AddMessage
     (new LogMessage("The hit point from GetNormalToSurface at test point (0,0,0) is: ( "
     + hitPoint.x + "; " + hitPoint.y + "; " + hitPoint.z + ")"));
    Logger.AddMessage
     (new LogMessage("The hit point normal from GetNormalToSurface at test point (0,0,0) is: ( "
     + hitPointNormal.x + "; " + hitPointNormal.y + "; " + hitPointNormal.z + ")"));
}
catch
{
    Project.UndoContext.CancelUndoStep(CancelUndoStepType.Rollback);
    throw;
}
finally
{
    Project.UndoContext.EndUndoStep();
}
Version Information

Supported in: 1.0.0.0
See Also