Element Get |
Returns the ids of the element(s) that generated the input geometry object.
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)

Parameters
- geometryObject GeometryObject
- The geometry object whose generating element is requested.
Return Value
ICollection ElementIdThe 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.

Exception | Condition |
---|---|
ArgumentException | The input geometryObject is invalid and so cannot be used to obtain the generating element ids. |
ArgumentNullException | A non-optional argument was null |

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
- Walls joining to other wall(s)
- Elements extending to roof(s)

// Find elements joined or attached to the end faces of a given wall (such as walls and roofs).
// Mid-joined walls (such as in a T configuration) are not found because they do not affect end face geometry.
ICollection<ElementId> joinedElements = new Collection<ElementId>(); // collection to store the walls joined to the selected wall
// find all faces of the selected wall
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)
{
// for each face, find the other elements that generated the geometry of that face
ICollection<ElementId> generatingElementIds = wall.GetGeneratingElementIds(face);
generatingElementIds.Remove(wall.Id); // remove the originally selected wall, leaving only other elements joined to it
foreach (ElementId id in generatingElementIds)
{
if (!(joinedElements.Contains(id)))
joinedElements.Add(id); // add each wall joined to this face to the overall collection
}
}
}
}
uidocument.Selection.SetElementIds(joinedElements); // select all of the joined elements
