Class GraphicComponentCollection
A collection of GraphicComponent objects.
Inheritance
GraphicComponentCollection
Assembly: ABB.Robotics.RobotStudio.Stations.dll
Syntax
public class GraphicComponentCollection : ICollection, IEnumerable<GraphicComponent>, IEnumerable
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 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
// 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.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();
}
Properties
Count
Declaration
public virtual int Count { get; }
Property Value
IsSynchronized
Declaration
public virtual bool IsSynchronized { get; }
Property Value
Item[Int32]
Declaration
public GraphicComponent this[int index] { get; }
Parameters
Type |
Name |
Description |
Int32 |
index |
|
Property Value
Item[String]
This is obsolete, use TryGetGraphicComponent instead.
Declaration
public GraphicComponent this[string name] { get; }
Parameters
Type |
Name |
Description |
String |
name |
|
Property Value
Parent
Declaration
public ProjectObject Parent { get; }
Property Value
SyncRoot
Declaration
public virtual object SyncRoot { get; }
Property Value
Methods
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 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
// 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.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();
}
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
Clear()
Declaration
Clear(Boolean)
Declaration
public void Clear(bool disposeChildren)
Parameters
Type |
Name |
Description |
Boolean |
disposeChildren |
|
Contains(GraphicComponent)
Declaration
public bool Contains(GraphicComponent obj)
Parameters
Returns
Contains(String)
Declaration
public bool Contains(string name)
Parameters
Type |
Name |
Description |
String |
name |
|
Returns
CopyTo(GraphicComponent[], Int32)
Declaration
public void CopyTo(GraphicComponent[] array, int index)
Parameters
CopyTo(Array, Int32)
Declaration
public virtual void CopyTo(Array array, int index)
Parameters
GetEnumerator()
Declaration
public IEnumerator GetEnumerator()
Returns
IndexOf(GraphicComponent)
Declaration
public int IndexOf(GraphicComponent obj)
Parameters
Returns
Insert(Int32, GraphicComponent)
Declaration
public void Insert(int index, GraphicComponent graphicComponent)
Parameters
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 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
// 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.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();
}
Remove(GraphicComponent, Boolean)
Declaration
public void Remove(GraphicComponent graphicComponent, bool dispose)
Parameters
Type |
Name |
Description |
GraphicComponent |
graphicComponent |
The GraphicComponent to remove from the collection.
|
Boolean |
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 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
// 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.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();
}
ToArray()
Declaration
public GraphicComponent[] ToArray()
Returns
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 |
Boolean |
true if the GraphicComponentCollection contains an element with the specified name; otherwise, false.
|
Exceptions