我是一名MEP工程师,我想在(房间边界)天花板上方添加有关机械设备,风管配件和管道配件的空间信息。
我的第一个想法是将BoundingBoxIntersectsFilter与带有已修改的infer
的Outline一起使用,然后使用ClosedShell.GetBoundingBox().Max.Z
来捕获我的元素。此方法有效,但在上述空间(仅限于六面)的准确性方面会遇到麻烦。这是因为“大纲”仅涉及要点。现在,我认为我需要将空间转换为实体几何并修改Z值,然后使用BoundingBoxIntersectsFilter
,但是我目前仍在努力找出用于修改空间几何的方法。 / p>
也许我需要使用GetGeometryObjectFromReference
,但是我不太了解如何使用ElementIntersectsElementFilter
。我已经看到Reference
已被使用here,但我需要如何使用它的帮助。具体来说,这是我不了解如何在python代码中实现的代码:
get_Geometry
任何朝着正确方向踢的动作都值得赞赏!
Kyrre
答案 0 :(得分:2)
当我之前完成此操作时,有时我会使用一种更简单的方法。确定设备上的关键点,然后将该设备点上的z值下拉到刚好在其上具有空格的下一个Level上方的z值上,然后测试XYZ以确定哪个空间将其包围。 >
答案 1 :(得分:1)
有很多方法可以做到这一点。我认为最简单的方法可能是分两步进行。首先,使用边界框或轮廓线或其他适合您需要的快速过滤器将矩形区域内的潜在候选对象的数量减少到合理的数量。第二步,逐个迭代候选对象,对每个候选对象调用Space. IsPointInSpace method,以消除位于不规则空间边界之外的对象。