该类是Revit API中的元素交叉体过滤器,用于筛选与指定几何体相交的元素。
ElementIntersectsSolidFilter
有以下两种构造函数:
ElementIntersectsSolidFilter(GeometryElement solidGeometry)
ElementIntersectsSolidFilter(GeometryObject solidGeometry)
两个构造函数的参数均为一个几何体对象,表示要筛选哪些元素与该几何体相交。
该类没有任何成员方法,但是可以使用基类 Autodesk.Revit.DB.ElementFilter
中的方法,例如:
PassesFilter(Element element)
:用于确定给定元素是否通过过滤器。以下代码段展示了如何使用 ElementIntersectsSolidFilter
来查找与一个特定的柱子相交的所有框架墙:
// 获取柱子的SolidGeometry
GeometryElement columnGeom = column.get_Geometry(new Options());
Solid columnSolid = null;
foreach (GeometryObject obj in columnGeom.Objects)
{
GeometryInstance inst = obj as GeometryInstance;
if (inst != null)
{
columnSolid = inst.GetSymbolGeometry().OfType<Solid>().FirstOrDefault();
}
}
// 筛选所有框架墙,找出与柱子相交的那些
ElementIntersectsSolidFilter filter = new ElementIntersectsSolidFilter(columnSolid);
FilteredElementCollector collector = new FilteredElementCollector(doc);
List<Element> intersectingWalls = new List<Element>(collector.OfCategory(BuiltInCategory.OST_Walls)
.OfClass(typeof(FamilyInstance))
.WherePasses(filter)
.ToElements());