专家会诊:如何在Revit中快速标记Navisworks的碰撞检测结果

问题描述
Navisworks可以将碰撞检测的结果,即所有冲突点导出为Excel表格。导出的数据分为四列:冲突名称,X坐标,Y坐标,Z坐标。有没有办法使用Dynamo将冲突名称标识在Revit项目中的实际三维空间中呢?比如用Model Text或者其它类型的物体。

解决方案
大体的思路很简单,从Excel表格读取数据,提取其中的冲突名称和三维坐标点,并且创建Model Text。不幸的是有个地方要绕一下:Revit API暂时还不支持在项目环境中创建Model Text,所以Dynamo也做不到。我们可以先在一个族文件中创建对应的Model Text,然后在项目文件中创建族实例。

在族文件中创建Model Text的Dynamo文件见下图和附件。

Create Model Text from Excel
Create Model Text from Excel

Create Model Text from Excel (DYN file)

示例Excel数据

此文件可以在族文件(比如Generic Model)环境下运行并且创建出Model Text。在项目文件中创建族实例还会碰到一个小问题:如何确保族实例创建在项目文件的坐标原点,以保证所有Model Text的位置是正确的?

Revit没有绝对坐标的概念,所以这时候又要用到Dynamo了。具体见下图和附件。
Create Family Instance at Origin

Create Family Instance at Origin (DYN File)

总结
这样直接在给定坐标下创建的Model Text的方法,不能非常精确地标示出冲突坐标。如果有需要,可以用Model Line创建一些引线作为辅助标注,这里不再具体演示。
Model Text在族环境中创建,好处是可以统一隐藏或显示,坏处是不能一个个标记处理状态。如果确实需要单独标记,可以尝试创建Text Note。Dynamo中没有现成结点创建Text Note,但我们可以通过Python脚本定义自己的结点。会在下一篇文章中深入讨论。

如果有其它方面的改进意见,欢迎评论留言,或者发邮件到我们的邮箱。