【问题标题】:How do I get Space info on objects above the space's ceiling?如何获取空间天花板上方物体的空间信息?
【发布时间】:2019-09-29 12:17:45
【问题描述】:

我是一名 MEP 工程师,我想在(房间边界)天花板上方添加有关机械设备、管道附件和管道附件的空间信息。

我的第一个想法是使用 BoundingBoxIntersectsFilter 和 Outline,并从空间中修改 ClosedShell.GetBoundingBox().Max.Z,然后使用 BoundingBoxIntersectsFilter 捕获我的元素。这种方法有效,但我会在注意限于六面的空间上方的准确性方面遇到问题。这是因为大纲只需要点。现在,我想我需要将我的空间转换为实体几何体并修改 Z 值,然后使用 ElementIntersectsElementFilter,但我目前正在弄清楚使用哪些方法来修改我的空间几何体。

也许我需要使用GetGeometryObjectFromReference,但我不太明白如何使用Reference。我已经看到get_Geometry 已被使用here,但我需要帮助如何使用它。具体来说,这是我不明白如何在python代码中实现的代码:

foreach( GeometryObject obj in e.Objects )
  {
    Solid solid = obj as Solid;
    if( null != solid )
    {
      foreach( Face face in solid.Faces )
      {
        PlanarFace pf = face as PlanarFace;
        if( null != pf )

非常感谢任何朝着正确方向的踢球!

凯尔

【问题讨论】:

标签: revit-api revitpythonshell pyrevit


【解决方案1】:

有很多方法可以做到这一点。我认为最简单的方法可能是分两步完成。首先,使用边界框或轮廓或任何适合您需要的快速过滤器,将潜在候选对象的数量减少到矩形区域内的合理数量。第二步,逐个遍历候选对象,并在每个对象上调用Space. IsPointInSpace method,以消除位于不规则空间边界之外的对象。

【讨论】:

    【解决方案2】:

    当我以前这样做时,有时我会使用一种更简单的方法。确定设备上的关键点,然后将该设备点上的 z 值下拉到其上具有空间的下一个 Level 上方的 z 值,然后测试该 XYZ 以确定哪个空间包围它。

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      相关资源
      最近更新 更多