在Revit中如何以编程方式进行干扰检测?

时间:2010-07-23 03:24:29

标签: revit

更确切地说,如何确定Solid是否与另一个元素相交? 我查看了Revit API,但找不到任何相关信息。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

在Revit 2012中,在过滤元素时使用ElementIntersectsSolidFilter。您提供输入Solid,它可以来自另一个元素,也可以来自您以编程方式生成的几何体。

答案 2 :(得分:0)

如果您正在寻找相交的元素,我会使用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
  }
}