基于C#的预制构件库与参数化建模的二次开发
2023-12-28李影程火焰丁浩屈锋
李影 程火焰 丁浩 屈锋
(湖南科技大学土木工程学院,湘潭 411201)
引言
2020 年发布的“十四五”建筑业发展规划中提出,需要大力推广装配式建筑,建立智能建造与新型建筑工业化协同发展的政策和产业体系,使装配式建筑在新建建筑中的比例达到30%以上。
BIM 技术迅速普及的同时,一些弊端也暴露出来,如由于模型精度低在工程全生命周期的实际参与度不高,高精度模型的建模效率低,国内模型标准不统一,BIM 模型建筑信息不能得到充分应用等。国内的Revit二次开发以橄榄山软件为基础,功能包括批量创建楼层、轴网、墙和梁等构件,提供了建筑、结构精细化翻模功能,基于此,开发了预制构件模型的族库管理[1]、工程量计算[2]。在设计方面,主要体现在预制构件深化设计上,如预制构件的拆分设计[3];剪力墙、叠合板的深化设计[4,5];配筋率的优化等[6]。为满足更多设计要求,基于IFC 标准研究Revit 与PKPM、ANSYS、MIDAS、ABAQUS 结构分析软件转换接口[7-10]。
为解决装配式建筑设计工作复杂、设计效率低、设计过程智能化程度低、模型信息利用不充分等问题,本文通过分析现阶段装配式设计方法和BIM 技术的特点,将BIM 技术应用到装配式结构设计中,开发了预制构件族库及参数化建模插件。
1 基于C#的二次开发研究
C#语言可以实现与Revit API 函数之间的数据交互,在VS 中通过抽取调用所需要的Revit API 函数编写程序代码,以此在Revit 中实现预期功能。在使用Dynamo 可视化编程工具进行参数化建模时,需要人工输入参数并使用Dynamo 进行交互时可能导致Revit 建模软件的运行速度变慢。特别是在处理复杂工程情况下,这会影响工作效率[11]。
因此, 本文以Revit2020 为结构建模平台,利用Revit API 进行二次开发时,需要基于.NETFramework4.5 及以上编程环境进行编译和调试,故选择微软公司提供的VisualStudio2019,并以可读性以及可编译性更好的C#作为编程语言,采用外部命令(IExternal Command)的方式开发结构模型转换接口。在模型转换接口开发之前,需要搭建开发环境,详细的流程如图1 所示。本文对预制构件族模型的建模精度需达到LOD300。
图1 Revit 二次开发流程图
2 预制构件库模块开发
各项目间装配式建筑信息的共享通过预制构件族库来实现,族库的作用主要体现在为BIM 设计师在设计过程中实现标准化、规范化的设计。本文的预制构件族库由三个功能组成,分别是预制构件入库功能、预制构件预览功能、预制构件加载功能。预制构件库模块技术路线为:预制构件分类→预制构件入库→预制构件预览→预制构件加载。
本文的预制构件按系统分为结构系统和围护系统,其中结构系统可分为竖向构件和水平构件,围护系统分为外墙围护构件和内墙围护构件,预制构件族的创建过程可分为以下五个步骤:
(1)选择相应类型的族样板;
(2)用拉伸、融合、旋转、放样、融合、放样、融合、空心形状指令按照设计进行建模;
(3)对“族”尺寸参数及参数之间的空间逻辑关系进行设置;
(4)对“族”的其他属性进行设置;
(5)将“族”载入项目中进行测试。
本文所建立的预制构件族模型分类如表1 所示。
表1 预制构件分类
预制构件入库即将族模型保存在程序中设置好的路径文件夹中,为不占用计算机运行内存,路径设置为计算机D 盘下的族库文件夹,再根据预制构件分类建立子文件夹,如图2 所示,将各预制构件族模型按类别存放于对应子文件夹中,以此实现预制构件族文件的入库。
图2 预制构件族入库
预制构件预览主要为设计师提供无需加载族模型就可看到模型的三维图功能,方便设计师选择族,避免错误选择预制构件,减少项目占用内存。预制构件族的三维预览图在窗台加载时通过链接地址加载至族库界面,构件预览功能实现流程如下:程序查询对应类别文件夹下“.rfa”格式文件,程序按族名称和预览图罗列于族库界面,程序关键代码如图3 所示,程序功能实现如图4 所示。
图4 构件预览界面
族库平台最重要的功能在于将预制构件族模型载入到项目中,设计师在族库平台中找到需要的预制构件族模型后,点击载入项目,即可在项目中使用该族。平台识别并载入到项目指令后,平台查询该族本地资源库的路径地址,然后再将其传递给事务,最后执行载入命令,程序关键代码如图5 所示,程序功能实现如图6 所示。
图5 构件加载功能程序语言
图6 预制构件族载入
3 参数化建模模块开发
本文所涉及到的参数化建模程序包含建筑模型生成轴网、柱、梁功能、建筑墙附着结构梁功能、建筑墙荷载信息统计功能这五项功能,分开用Add-In Manager 插件进行使用比较繁琐,因此在Revit 中新建“结构建模”选项卡,并将上述五个功能通过按钮链接程序集,如图7 所示。
图7 参数化建模界面
(1)设计师单击“生成轴网”按钮,提示所用轴网的族类型及轴网所放置的标高,将按钮值传至系统,系统读取所选标高的墙体的线信息,并存储于集合中,将命令传递给事务,程序遍历模型中所有墙模型,然后执行生成轴网的命令;
(2)设计师单击“生成柱”按钮,提示所用柱的族类型及柱所放置的标高,柱顶标高默认为上层结构标高,将按钮值传至系统,程序读取该标高处轴网的所有交点并收集,将命令传递给事务,程序执行柱生成命令;
(3)识别视图中的轴网,结合Revit 中梁建模的方法,并结合结构设计原则判断梁尺寸,选择建模标高及族类型,完成梁自动生成过程。梁生成的具体流程与柱相似;
(4)设计师单击“墙齐梁底”按钮,框选所需齐梁底的墙,将按钮值传至系统,系统通过读取该标高处梁的高度信息并收集,将墙的顶标高减去梁高,程序传递给事务,执行修改标高命令;
(5)Revit 墙模型在进行门窗创建后软件会自动计算开洞后墙的体积,如图8 所示,提出以拾取建筑墙体积参数的方式与结构荷载系数相结合导出线荷载的方法,计算公式见式(1)。
图8 墙体积
程序收集墙的体积和长度信息,并通过墙的材质,根据计算输入荷载系数,自动计算所有建筑墙的线荷载。具体实现的流程是:设计师单击“线荷载统计”按钮,提示输入线荷载系数,系统收集所有墙的ID、体积、长度参数,然后传递给事务,最后执行计算命令并设置excel 导出的路径。
4 应用实例
4.1 工程概况
某教学楼总建筑面积为15 268.67m2,为地下一层、地上四层的装配式混凝土框架结构,装配式预制构件主要采用预制围护墙、钢筋桁架叠合楼板。本工程使用Revit2020 软件结合预制构件库,建立建筑部分的模型,如图9 所示。
图9 Revit 建筑模型
4.2 装配式构件模型的创建
建筑模型建立完成后,采用本文开发的参数化建模程序结合预制族库建立结构部分的模型,主要包括生成轴网、生成柱、生成梁及墙齐梁底四部分参数化建模如图10(a)~(d)所示。
图10 参数化建模图
在建筑模型中的建筑墙附着于结构梁底后,选择线荷载统计功能,设置墙的容重和导出路径,程序会自动计算每片墙的线荷载,并导出excel 文件,墙的容重设置为18KN/m3,通过在Revit 中查询构件ID 所需墙的线荷载,如图11 ~图12 所示。
图11 模型线荷载导出
图12 墙线荷载查找
通过参数化建模可得出项目的结构模型,如图13所示,由结构参数化建模可得出,相对于传统建模,参数化建模效率高,节省了大量的建模时间,设计初期即可实现预制柱、预制梁的选择。
图13 Revit 结构模型
5 结论
本文根据相关规范及图集建立标准化的预制构件族模型,在Revit 中进行装配式建筑模型的建立时,可以直接调用族库中的预制构件进行建模,以此提高装配式建筑建模的标准化。结果表明:
(1)针对结构模型建模,通过开发参数化建模的三个程序,实现由建筑模型到轴网,再由轴网生成结构模型的柱、梁,达到了参数化建结构模型的目的;
(2)通过参数化建模实现了装配式建筑结构模型的快速建模和 “一模多用”的理念;
(3)基于参数化建模开发的建筑墙齐梁底及建筑墙线荷载信息统计程序能实现建筑结构模型自动调整优化,为结构计算提供便捷。