【发布时间】:2011-03-19 21:55:09
【问题描述】:
更准确地说,我如何确定一个 Solid 是否与另一个元素相交? 我查看了 Revit API,找不到任何相关信息。
【问题讨论】:
标签: revit
更准确地说,我如何确定一个 Solid 是否与另一个元素相交? 我查看了 Revit API,找不到任何相关信息。
【问题讨论】:
标签: revit
如果您要寻找相交的元素,我会使用 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
}
}
【讨论】:
在 Revit 2012 中,在过滤元素时使用 ElementIntersectsSolidFilter。您提供的输入 Solid 可能来自另一个元素或您以编程方式生成的几何图形。
【讨论】:
看看光线投影 API,你可以向某个方向射出一条光线,它会返回它击中的所有元素及其位置等。
FindReferencesByDirection 方法我相信是这样做的方法。
【讨论】: