使用 Revit Python Shell 来创建团队脚本(1)

为什么要用RPS而不是Dynamo Player?

在之前的工作中,我曾大量运用Dynamo脚本来创建一些自动化的脚本,为了让团队也能够使用,我也做了一些努力,比如:

  1. 所有的dynamo脚本都存放在服务器上,这样团队能否保持最新版本的脚本共享。
  2. 所有dynamo脚本我都接入了基于Data Shapes插件的操作界面,这样能让团队成员更无障碍地使用脚本。
  3. 一整套各个脚本及其功能解释的使用说明和档案,方便团队随时查阅。
我给团队所做的一套Dynamo Player脚本库
部分的脚本界面,以及自认为还可以的Logo

尽管如此,实际工作中这套基于Dynamo Player的脚本体系还是没能得到太充分的应用,究其原因主要有两点,一个是要想编辑功能强大的脚本,则不可避免地需要安插许多插件包,这让Dynamo的运行愈发臃肿,往往运行一个脚本可能需要先等待几分钟的加载。二是团队成员的电脑配置和操作系统设置参差不齐,同一个Dynamo脚本在我的电脑上能运行,在其他成员的电脑上则总会有点岔子,例如一个批量打印的脚本,涉及到windows打印机的配置问题,团队成员想要运用这个脚本就首先得进行冗长的设置,尤其在大型团队之中,这种配置工作是个噩梦。

所以,我打算将团队BIM自动化脚本这一块用别的方法来实现,能够让人愿意用而且觉得好用,同时也需要方便BIM Manager的配置和管理工作。

CONTINUE ᐳ

Renumber Doors by Rooms (also from linked model)

将房间号导入门中

通常来说,方案中的门编号应该与房间编号有关。我做了一个Dynamo脚本,方便将房间编号也导入门中。当然,也考虑到了房间存在于链接模型中的情况。

考虑到我有大量的门和房间并不在同一个模型中,而只是互为链接模型的关系,我就不打算调用Revit API 中的 ToRoom,而是用更普适的方法,通过几何关系来找到与门有关系的房间。

Dynamo script:

CONTINUE ᐳ

Purge Scope Boxes

批量清理未使用的范围框

由于Revit中并没有自带的范围框清理功能,所以我用Dynamo脚本简单的实现了一个。

UI Node from DATA|SHAPES
CONTINUE ᐳ