ElementGetGeneratingElementIds Method |
Returns the ids of the element(s) that generated the input geometry object.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntaxpublic ICollection<ElementId> GetGeneratingElementIds(
GeometryObject geometryObject
)
Public Function GetGeneratingElementIds (
geometryObject As GeometryObject
) As ICollection(Of ElementId)
public:
ICollection<ElementId^>^ GetGeneratingElementIds(
GeometryObject^ geometryObject
)
member GetGeneratingElementIds :
geometryObject : GeometryObject -> ICollection<ElementId>
Parameters
- geometryObject GeometryObject
-
The geometry object whose generating element is requested.
Return Value
ICollectionElementId
The id(s) of the element(s) that generated (or may have generated) the given geometry object. Empty if no generating elements are found. If the set contains just one id, it is the id of the element that generated the geometry object.
Exceptions
Remarks
This function supports many different types of relationships among elements.
Most of these relationships will return a single element, for example:
- Window and door cutting walls
- Openings cutting hosts
- Face splitting faces
- Wall sweep or reveal traversing wall
A few relationships have the potential for returning multiple elements, including:
- Walls joining to other wall(s)
- Elements extending to roof(s)
If more than one id is returned, one of them (unspecified) is the id of the element that generated the geometry object and the others are ids of related elements. For example, if a wall A is joined to two walls B and C in a way that creates two end faces, and if this function is called for one of the two end faces, it will return the ids of walls B and C.
Example
ICollection<ElementId> joinedElements = new Collection<ElementId>();
GeometryElement geometryElement = wall.get_Geometry(new Options());
foreach (GeometryObject geometryObject in geometryElement)
{
if (geometryObject is Solid)
{
Solid solid = geometryObject as Solid;
foreach (Face face in solid.Faces)
{
ICollection<ElementId> generatingElementIds = wall.GetGeneratingElementIds(face);
generatingElementIds.Remove(wall.Id);
foreach (ElementId id in generatingElementIds)
{
if (!(joinedElements.Contains(id)))
joinedElements.Add(id);
}
}
}
}
uidocument.Selection.SetElementIds(joinedElements);
Dim joinedElements As ICollection(Of ElementId) = New Collection(Of ElementId)()
Dim geometryElement As GeometryElement = wall.Geometry(New Options())
For Each geometryObject As GeometryObject In geometryElement
If TypeOf geometryObject Is Solid Then
Dim solid As Solid = TryCast(geometryObject, Solid)
For Each face As Face In solid.Faces
Dim generatingElementIds As ICollection(Of ElementId) = wall.GetGeneratingElementIds(face)
generatingElementIds.Remove(wall.Id)
For Each id As ElementId In generatingElementIds
If Not (joinedElements.Contains(id)) Then
joinedElements.Add(id)
End If
Next
Next
End If
Next
uidocument.Selection.SetElementIds(joinedElements)
No code example is currently available or this language may not be supported.
No code example is currently available or this language may not be supported.
See Also