BIMVIP -- 品茗BIM官方服务平台

历史搜索

刘保石:Revit中Dynamo应用Python编程—Python Script模板

资讯小编 2019-08-29 10:00:56

20190819144105


Dynamo里面有Python Script节点,这个节点可以实现两个重要功能:


1)可以接入外部Python库,使用已有的Python库资源实现比较高级的函数功能,有些功能可能可以比Design Script更加强大,如Design Script无法解析的复杂字符串(HTML源文件),可以通过调用已有的解析HTML的Python库或者通过Python Script调用正则来直接处理。这些都是对Design Script功能的巨大扩充。


2)提供链接Revit API的桥梁,使用解释方式运行API功能。Revit是复杂智能的三维建筑设计软件,建立在构件级别的基础上来解析、组合建筑。构件本身都是复杂的Revit“族”,操控这些构件需要特定的方式和功能,而提供这些功能的就是API。相对于二开的编译运行,Dynamo的Python Script提供了一种使用解释方式运行API的框架。在这个框架下,我们可以直接调用Revit的API,不需要编译代码就能直接运行。缺省情况下,Python Script节点代码仅提供基本的Design Script功能,上述的两个重要高级功能并不支持。如下图:



可以看到这个缺省的Python Script节点仅仅引入了ProtoGeometry,因此只支持基本的Design Script核心功能和图形类处理功能,上面介绍的外部库以及Revit API的支持均为零。如果要支持,需要首先相应的引用指定的库。



上图是一个在系统自带的模板基础上扩充的Python Script标准模板,下面对其中的代码解析一下:首先是import段,在原来ProtoGeometry.dll的基础上,增加了四个引用:    1)提供处理Revit内基本构件Element的处理功能RevitUIAPI.dll。


2)提供Revit内用户交互选择及TaskDialog实时输出用于调试程序RevitNODES.dll。


3)提供对Dynamo内节点的支持,这样可以在Python Script里面直接写Design Script代码,否则Python Script节点内是不支持的RevitServices.dll。    4)提供对Revit多文档以及构件的事务处理(修改构件,更新数据库时必需的)服务,这些格式基本上是固定的,多数情况下,直接使用就可以。   在同一个Python Script内,代码都需要定义变量,变量有全局变量和局部变量,对于使用频率较高的变量,建议直接在程序开始定义成全局变量,如当前Revit进程,当前的Revit文档,当前的Revit用户化文档,当前运行的Revit语言版本等等。   如果代码中需要对Revit的数据库进行调整,就需要使用Revit的事务管理,事务管理的原因及逻辑,可以参考Revit的帮助及API手册获取,这里不再赘述。事务处理主要是两条语句:事务开始,和事务结束。其格式也是固定的,直接按照附图输入即可。   使用这样的模板,可以极大限度地减少因为Dynamo库资料不全而造成的程序应用功能不足,让我们把重点放在核心处理代码上,而不是整个代码框架的设计上。实际上,Dynamo的Python Script节点就是这样的一个框架,这个模板只不过是这个框架的进一步扩充。




来源丨老刘聊BIM

仅作分享交流,如有侵权,请联系删除




BIM,品茗BIM,BIM产业集聚区,济南,数字经济产业