1

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

4

3 回答 3

1

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

于 2011-05-26T12:50:51.593 回答
1

如果您要寻找相交的元素,我将使用 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
  }
}
于 2014-05-21T09:00:42.057 回答
1

看看光线投影 API,你可以向某个方向发射光线,它会返回它击中的所有元素及其位置等。

我相信 FindReferencesByDirection 方法就是这样做的方法。

于 2010-07-26T12:22:51.900 回答