Class GraphicComponentCollection
A collection of GraphicComponent objects.
Inheritance
GraphicComponentCollection
Assembly: ABB.Robotics.RobotStudio.Stations.dll
Syntax
public class GraphicComponentCollection
Examples
GraphicComponent Collection.
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 user project folder.
string userProjPath =
(string)Options.GetValue("RobotStudio", "Directories.UserDocuments");
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
// Close the library
myLib.Close();
// 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.TryGetNormalToSurface(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();
}</code></pre>
Properties
View Source
Count
Declaration
public virtual int Count { get; }
Property Value
View Source
IsSynchronized
Declaration
public virtual bool IsSynchronized { get; }
Property Value
View Source
this[int]
Declaration
public GraphicComponent this[int index] { get; }
Parameters
| Type |
Name |
Description |
| int |
index |
|
Property Value
View Source
this[string]
This is obsolete, use TryGetGraphicComponent instead.
Declaration
public GraphicComponent this[string name] { get; }
Parameters
| Type |
Name |
Description |
| string |
name |
|
Property Value
View Source
Parent
Declaration
public ProjectObject Parent { get; }
Property Value
View Source
SyncRoot
Declaration
public virtual object SyncRoot { get; }
Property Value
Methods
View Source
Add(GraphicComponent)
Declaration
public void Add(GraphicComponent graphicComponent)
Parameters
Examples
Add GraphicComponent.
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 user project folder.
string userProjPath =
(string)Options.GetValue("RobotStudio", "Directories.UserDocuments");
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
// Close the library
myLib.Close();
// 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.TryGetNormalToSurface(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();
}</code></pre>
View Source
AddLibraryComponent(string)
Loads a library component from a file and adds it to the collection.
Declaration
public GraphicComponent AddLibraryComponent(string fileName)
Parameters
| Type |
Name |
Description |
| string |
fileName |
File name of the library file (.rslib) to load.
|
Returns
View Source
Clear()
Declaration
View Source
Clear(bool)
Declaration
public void Clear(bool disposeChildren)
Parameters
| Type |
Name |
Description |
| bool |
disposeChildren |
|
View Source
Contains(GraphicComponent)
Declaration
public bool Contains(GraphicComponent obj)
Parameters
Returns
View Source
Contains(string)
Declaration
public bool Contains(string name)
Parameters
| Type |
Name |
Description |
| string |
name |
|
Returns
View Source
CopyTo(GraphicComponent[], int)
Declaration
public void CopyTo(GraphicComponent[] array, int index)
Parameters
View Source
CopyTo(Array, int)
Declaration
public virtual void CopyTo(Array array, int index)
Parameters
| Type |
Name |
Description |
| Array |
array |
|
| int |
index |
|
View Source
GetEnumerator()
Declaration
public IEnumerator GetEnumerator()
Returns
View Source
IndexOf(GraphicComponent)
Declaration
public int IndexOf(GraphicComponent obj)
Parameters
Returns
View Source
Insert(int, GraphicComponent)
Declaration
public void Insert(int index, GraphicComponent graphicComponent)
Parameters
View Source
Remove(GraphicComponent)
Declaration
public void Remove(GraphicComponent graphicComponent)
Parameters
Examples
Remove GraphicComponent.
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 user project folder.
string userProjPath =
(string)Options.GetValue("RobotStudio", "Directories.UserDocuments");
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
// Close the library
myLib.Close();
// 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.TryGetNormalToSurface(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();
}</code></pre>
View Source
Remove(GraphicComponent, bool)
Declaration
public void Remove(GraphicComponent graphicComponent, bool dispose)
Parameters
| Type |
Name |
Description |
| GraphicComponent |
graphicComponent |
The GraphicComponent to remove from the collection.
|
| bool |
dispose |
Indicates if the GraphicComponent should be disposed
when this change is no longer undoable. Set to true if the component will not be used subsequently.
|
Examples
Remove GraphicComponent.
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 user project folder.
string userProjPath =
(string)Options.GetValue("RobotStudio", "Directories.UserDocuments");
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
// Close the library
myLib.Close();
// 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.TryGetNormalToSurface(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();
}</code></pre>
View Source
ToArray()
Declaration
public GraphicComponent[] ToArray()
Returns
View Source
TryGetGraphicComponent(string, out GraphicComponent)
Gets the GraphicComponent with the specified name.
Declaration
public bool TryGetGraphicComponent(string name, out GraphicComponent graphicComponent)
Parameters
| Type |
Name |
Description |
| string |
name |
The name of the GraphicComponent to get.
|
| GraphicComponent |
graphicComponent |
When this method returns, contains the GraphicComponent associated with the specified name,
if the name is found; otherwise, null.
|
Returns
| Type |
Description |
| bool |
true if the GraphicComponentCollection contains an element with the specified name; otherwise, false.
|
Exceptions