если вы ищете пересекающиеся элементы, я буду использовать BoundingBoxIntersectsFilter, это быстрый фильтр с небольшим влиянием на производительность
сначала получите ограничивающий прямоугольник геометрии
GeometryElement geoElem = wall.get_Geometry(_geoOpt) as GeometryElement;
BoundingBoxXYZ boundXYZ = geoElem.GetBoundingBox();
затем создайте контур и передайте BoundingBoxIntersectsFilter
if (boundXYZ != null)
{
outline = new Outline(boundXYZ.Min, boundXYZ.Max);
boundingFilter = new BoundingBoxIntersectsFilter(outline);
var filterElems = new FilteredElementCollector(elem.Document).WherePasses(boundingFilter).ToElementIds();
foreach (var item in filterElems)
{
//retrieve intersected elements
}
}