在之前的工作中,我曾大量运用Dynamo脚本来创建一些自动化的脚本,为了让团队也能够使用,我也做了一些努力,比如:
- 所有的dynamo脚本都存放在服务器上,这样团队能否保持最新版本的脚本共享。
- 所有dynamo脚本我都接入了基于Data Shapes插件的操作界面,这样能让团队成员更无障碍地使用脚本。
- 一整套各个脚本及其功能解释的使用说明和档案,方便团队随时查阅。


尽管如此,实际工作中这套基于Dynamo Player的脚本体系还是没能得到太充分的应用,究其原因主要有两点,一个是要想编辑功能强大的脚本,则不可避免地需要安插许多插件包,这让Dynamo的运行愈发臃肿,往往运行一个脚本可能需要先等待几分钟的加载。二是团队成员的电脑配置和操作系统设置参差不齐,同一个Dynamo脚本在我的电脑上能运行,在其他成员的电脑上则总会有点岔子,例如一个批量打印的脚本,涉及到windows打印机的配置问题,团队成员想要运用这个脚本就首先得进行冗长的设置,尤其在大型团队之中,这种配置工作是个噩梦。
所以,我打算将团队BIM自动化脚本这一块用别的方法来实现,能够让人愿意用而且觉得好用,同时也需要方便BIM Manager的配置和管理工作。
如Callum Sykes 这篇文章所总结的,现在大体上有四种方法将自己的脚本整合进Revit中:
- Dynamo Player
- Macro 宏
- PyRevit
- Revit Python Shell
Macro从始至终都不在我的选项中,我可以使用Python进行工作,但是Macro使用其它的语言。另外,我也确信Macro这种复杂的用户界面并不适用于大型团队:我不可能手把手教每个人如何操作。PyRevit很强大,但它太强大了,功能太多了,以至于有些臃肿。这意味着为了添加我编写的三五个功能,整个团队需要新增三五十个按钮。另外,处于安全原因考虑,我们并不希望团队成员有太多的权限。
当我将眼光放在最后剩下的 RPS (Revit Python Shell) 上面时,我发现这是个完美的工具。
它基于Python语言,让我能很方便的编写脚本。团队成员不需要新增任何的插件,这个能通过RPS的Deploy RpsAddin功能轻松实现,这个是最吸引我的一点。另外,它很轻量,对团队几乎没有什么打扰,或者说存在感。唯一需要注意的是每次开启脚本时候会有一个output的小窗口,我能使它开启后自动关闭,这对于使用者来说几乎就是一闪而过的光景。最后,RPS的编辑器也比较易用,这很利于我的工作。我能够接入几乎所有的Revit API,也有完整的Python功能(是的,Revit2019版本Dynamo中的Python编辑器竟然连Dictionary也用不了)。
所以,思路就逐渐清晰起来了。通过RPS我可以将Python脚本通过Deploy功能导出成dll文件,放在公司服务器上,方便团队的电脑调用。而每次更新脚本时候我就需要导出新的dll并覆盖服务器上的旧文件。这里有一点困难的是,每当我要更新脚本,所有团队的Revit必须关掉。这个问题我现在已经解决了,在以后的文章中我会进行解释。
下一篇文章我会就一个简单的脚本功能说明一下,通过RPS将Python脚本呈现为Revit选项卡按钮的具体操作。