林方怡 周传辉 黄振华
(1.武汉科技大学城市建设学院,武汉 430000;2.陕西大唐高科机电科技有限公司,西安 710000)
随着新型城镇化的不断推进,传统的建造方式已难以适应现代建筑业转型发展的需要,大力推广装配式建筑已成为国家战略。装配式机电是机电安装领域的一种新趋势,利用工厂化预制组件完成机电系统安装,能达到建筑产品节能目的,实现环保及绿色建造[1]。
Dynamo 是一个开源可视化编程平台,运行时作为其他软件的插件,允许工程师可以使用不同的脚本语言(C#、JAVA、Python 等)自定义脚本的逻辑行为。Dynamo 作为Revit 的辅助工具,有利于数据信息的分析,填补了处理Revit 模型在可视化方法及管理数据信息方面的空缺,使BIM 技术的应用更加完善[2]。
目前,适用于机电预制管道设计出图的通用参数化工具比较少,文中通过Dynamo 可视化编程实现了相关节点的连接,建筑模型信息的调用、参数化族的建立和逻辑数据处理,得到了模型管道及管件的选取、成组及加工图输出等一系列自动处理方法,该方法在装配式机电管道设计中具有良好的应用价值。
常规的机电预制管道设计出图的方法是通过Revit软件,主要用于CAD 二维图纸的翻模,其作用仅限于辅助设计和校核图纸,在施工阶段中没有真正发挥实际作用[3]。
Revit 软件本身具有模型成组功能,如图1 所示。利用该按键功能,可达到在机电管道上建立模块或者部件的目的。操作简便:选择需要的模块,点击建立组件,随后可选择组件并产生视图。但机电管道设计中会涉及到几百根、几千根管道及其附件,如果每根管道都要手动拆分并成组,就会造成庞大的工作量[4]。
图1 创建成组键
可视化编程方法的具体实施流程就是在软件中将建立的达到预制精度的Revit 模型通过一定功能要求组合为预制管段,创建成部件(AssemblyInstance),创建部件视图(AssemblyView),将部件视图拖放在创建好的图纸中,然后再进行详尽的标注工作。
参数化设计流程利用了 Dynamo、Revit、Python三者之间的交互性,以Python 编写代码为源数据贯穿Dynamo 程序的各个环节,实现相关节点的连接、建筑模型信息的调用以及参数化族的建立和逻辑数据处理。首先根据预制规则及运输与安装要求,选定机房内管道和管件进行拆分;再利用Dynamo 节点所选择的管道和管件建立分组;最后利用Dynamo 程序实现了部件的三维视图,明细表和平面详图的生成[5],如图2所示。
图2 参数化设计流程
使用Python Script 生成管路部件加工图方法如下:
(1)管线部件脚本接口
点同代码块一样,是可视化编程环境的脚本接口。在 Python Script 中编写 Python 的代码,即利用“Python Script 选择多个图元”节点选取机房中的管道及管件[6]。如图3 所示。
图3 “Python Script 选择多个图元”节点的代码
在Revit 的机电模型中被选择的管道及管件会高亮显示,如图4 所示。
图4 选择管道及管件
(2)创建部件并输入其名称
使用“Python Script 创建部件并修改名称”节点,将被选取的管道及管件组成预制构件,在Dynamo 程序中把预制构件取名为“部件”[7],如图5 所示。
图5 创建部件
在“Code Black”输入第一组被拆分部件的名称即“01”,使用节点“Boolean”来提供“True”和“False”的选项,选择“True”即每次运行程序,Revit 中的模型管道都会被重新选择,反之亦然。其结果在Revit 的项目浏览器中生成部件视图列表,如图6 所示。
图6 部件视图列表
(3)临时隐藏部件
从隐藏图元到再创建新的部件,这一过程中需要用到逻辑判断及数学运算,通过“Python Script 临时隐藏图元”节点编写的代码,避免已创建部件的构件影响下一步选择构件,将其在视图中临时隐藏,如图7所示[8]。
图7 临时隐藏部件
利用 Dynamo 自带“Views”节点选择三维视图后,在Revit 三维界面中生成临时隐藏图元,并通过Dynamo 程序执行“选择图元→组成部件→隐藏图元→再次选择图元、组成部件”的过程。
(4)创建部件视口
组成部件之后,利用“Python Script 创建部件视图”节点给部件创建视图窗口,此节点如图8 所示。
图8 创建部件视口节点
利用“Python Script 创建部件视图”节点编写的代码“view1”“view2”“view3”,分别代表创建了三维正交、平面详图、明细表等三个视图窗口,如图9 所示。
图9 “Python Script 创建部件视图”节点的代码
(5)Dynamo 获取公制图纸高度参数
由于在Revit 的机械样板中没有自带公制图纸,因此就需要在族库中找到A0 公制图纸手动载入到机械样板中。Revit 中载入A0 公制图纸之后,在Dynamo模型中的Family Types 节点选择“A0 公制”,并使用Element.GetParameterValueByName 节点,读取公制图纸的高度参数,如图10 所示。
图10 读取公制图纸高度参数
(6)自定义设置视图在公制图纸中的位置
在最后出图之前,还需要自定义设置三维正交、平面详图、明细表三个视图在公制图纸中的位置,如图11 所示。
图11 设置视图在图纸中的位置
在Code Block 节点输入“100”表示三维正交图距离A0 公制图纸的边框100mm;“250”表示三个视图之间相隔的距离为250mm;“a/2”表示三个视图放置在公制图纸高度的1/2 处。
(7)将视图放置在图纸中
利用 Element.SetPa-rameterByName 节点,将获取的图例类型,替换为实际的族类型,再通过List.OfRepeateditem 节点重复执行三次对部件参数的处理,最后将处理好的参数输入到“Python Script 视口放入图纸”节点中生成三个视图并放入公制图纸中,如图12所示[9]。
图12 视图放入图
(8)Dynamo 辅助生成部件加工图
部件加工图已经在Revit 中生成,部件的三维视图、明细表及平面详图都完整清晰地展现了出来。由此可见,可以通过Dynamo 程序一键生成管道及管件的视图,更加地证实了BIM 技术和Dynamo 可视化编程的结合为机电预制装配式提供了便利[10],图13 是完整的Dynamo 程序,图14 是部件加工图。
图13 完整的 Dynamo 程序
图14 部件加工图
手动生成三维正交图、平面详图和明细表,只能一个一个单独地生成,很难一次都生成在公制图纸中。通Dynamo 的方式,可以瞬间完成管道及管件的视图,而且项目规模越大,Dynamo 提升效率更加明显,如图15 所示。
图15 柱状图
借助Dynamo for Revit 的可视化编程功能,从而实现管道快速出图的综合利用。与手动出图比较,参数化建模所生成的部件加工图,更能够反映Dynamo 图形编程的益处,不但参数统计精确,也可以根据需要自定义部件加工图显示样式,排版等,有效解决设计出图繁琐和精度的问题,提高质量和效率。
通过构建基于Dynamo 与 Python 的装配式参数化建模功能集成系统,可以快速实现装配式机电的相关功能,能够在现场快速拼装机房,提高安装效率,为预制的参数化建模提供了一种新的解决方案,并在促进机电装配的参数化设计方面发挥了作用。