引用格式:牛立军,梁燕迪,王程.基于Revit 二次开发的水利工程BIM 正向设计研究[J].人民黄河,2022,44(3):155-159.
作者简介:牛立军(1966—),男,山东滨州人,副教授,主要从事工程项目信息管理、水利工程可视化设计方面的研究工作
摘要:为弥补传统二维设计方法出图算量复杂、方案比选困难的缺陷,提升Revit 对水利工程设计行业的适应性,通过正向设计需求分析,利用Revit API 和MVC 编程模式,以相关设计规范为依据,对Revit 二次开发,形成了一套完整的水利工程BIM 正向设计实现方法。以落地槽设计为例,应用该方法开发出一个针对落地槽BIM 正向设计的程序,基于模型可以一键生成图纸、计算书、概预算等设计成果,验证了BIM 正向设计实现方法的可行性和高效性,为BIM 技术在水利工程正向设计中的应用提供参考。
关键词:BIM 正向设计;二次开发;Revit API;MVC;参数化建模
传统二维设计模式存在信息共享效率低、各专业间设计信息交流不畅等弊端,直接导致二维设计出图算量复杂、方案比选困难[1],因此有学者提出依托BIM技术实现正向设计,克服传统二维设计的缺点[2-3]。BIM 正向设计是建立BIM 三维模型,一模多用,完成从方案设计到施工图设计的全过程[4]。BIM 技术在北美、北欧等采用较多,发展成熟,已经成为能够带来积极投资回报的技术。在国内,BIM 正向设计模式投资大、见效慢,应用范围较小,且集中于建筑领域,在水利水电工程设计中的应用还很少[5-6]。
从技术层面考虑,BIM 正向设计模式在水利设计行业推广的瓶颈主要是正向设计工具不统一[7]。水利工程设计涉及专业多,过程复杂,目前市面上已有的BIM 软件不能完全满足水利工程正向设计的需求[8]。罗凯等[9]通过水闸样板设计,探索了BIM 技术在水利工程正向设计中的应用;庞瑞等[10] 利用Catia 和Visual FI 对水利工程三维结构体建模—配筋—二维出图过程进行了探索;武桂芝等[11]基于Revit 二次开发,完成了对农田喷灌系统工程量的提取;朱致远等[12]基于Revit API 对Revit 进行二次开发,实现了对水闸挡土墙稳定分析计算和计算结果实时判别。前人的研究促进了BIM 技术的应用,为BIM 正向设计奠定了基础。
笔者在前人研究的基础上,通过分析水利工程BIM 正向设计需求,综合考虑正向设计的全过程任务和普适性,利用面向对象的编程语言和Revit API,采用MVC 编程架构,形成基于Revit 二次开发的水利工程BIM 正向设计方法,以期促进BIM 正向设计在水利工程设计行业的广泛应用。
1 实现技术
利用经典MVC 编程模式,基于Revit 的应用程序接口——Revit API 对Revit 进行二次开发,实现水利工程BIM 正向设计。
Revit API 是Revit 的应用程序接口,提供了大量命名空间和丰富的函数,给Revit 的二次开发功能定制提供支持,使得不同地区、不同行业用户可以根据自身需求开发Revit 插件,扩展、丰富Revit 的功能[13]。Revit 本身的自有命令主要是针对房屋建筑设计,应用于水利行业时可利用Revit API 添加水利工程需要的水工结构计算、工程量统计、水利工程概预算等功能,实现水利工程正向设计。
MVC(Model⁃View⁃Controller)编程模式将程序模型(Model)、视图(View)和控制器(Controller)分离开来,实现了程序功能模块化[14],便于开发过程中对出图、统计工程量、结构计算、概预算各个模块的调试。应用于水利工程正向设计的MVC 编程模式如图1 所示,可见正向设计区别于“逆向设计”之处在于先假设、后计算判断。假定建筑物尺寸后,控制器获取设计人员假定的数据,代入模型中进行计算,判断计算结果的安全和经济合理性,若满足规范且经济合理,则导出相应设计成果,若不满足规范或经济不合理,则重新假定参数。
图1 水利工程正向设计的MVC 编程模式示意
2 实现方法和原理
正向设计的实现思想主要是:针对一类水工建筑物创建参数化三维模型,以三维模型为基础,通过编译代码形成Revit 插件,实现对三维模型参数的控制,达到三维可视化、交互式设计;在此基础上访问模型参数数据,根据插件中的结构计算算法原理和概预算编制规程处理数据,实现设计成果(计算书、图纸、概预算等)的判断和输出。
水利工程BIM 正向设计程序中的需求主要指功能需求:①建立水工建筑物构件参数化三维模型库(在Revit 中称为族库);②输入尺寸参数,模型与参数联动,满足可视化交互式设计需求;③输入高程、开挖坡度等,输出建筑物设计图纸(三维模型的三视图投影和剖面);④按照规范公式输入相应的数据,采用插件进行结构计算后输出计算结果,导出计算书;⑤输入钢筋直径,通过配筋计算程序插件计算受力筋截面面积,同时算出钢筋根数和间距,调用Revit 的钢筋绘制方法自动绘制钢筋三维图,并在剖面标注点筋和线筋,实现自动配筋,导出配筋图纸和钢筋表;⑥通过插件自动统计三维模型的体积和钢筋的体积,乘以相应的容重作为工程量,其中土方开挖和回填工程量通过输入构件的尺寸和开挖坡度算出,选取概预算定额后,导出投资概算。
根据功能需求,以BIM 三维模型为基础,根据用户输入的指令或数据,经程序处理后输出相应数据,确定水利工程BIM 正向设计业务流程。
二次开发中为实现Revit 文档的便捷访问操作,选用了灵活性强、可操作性强的可载入族来创建族样板文件。 在Revit 中通过拉伸、放样、融合、旋转和放样融合等方式创建族;定义族参数,对族参数进行测试直至达到模型与参数联动效果。 族参数定义的合理与否直接影响样板文件的灵活性,因此在定义参数时应处理好约束之间的关系,最大限度地给予模型灵活性,使得可通过参数调整,实现对设计的优化创新[15-16]。
代码编译前首先搭建开发环境,添加引用Revit API.dll 和Revit APIUI.dll,添加命名空间;然后设置控制命令的更新模式和事务模式,从IExternal Command或IExternal Application 派生类,重载相应函数,在函数接口中编写代码。
视图(View)即表现层,作为输出数据并允许用户操作的方式,仅为设计人员提供二次开发程序的访问。为顺利控制Revit 中模型元素,反映模型随参数输入实时变化,显示设计成果,除正向设计窗口外,Revit 中的模型三维视图、Excel 工作簿(钢筋表)、Word 文档(计算书和概预算)均为表现层的组成部分,因此正向设计人机交互窗口应选用模态型窗体,成果形成后自动弹出。 表现层设计时应以一致性、准确性、布局合理化、操作合理性等为原则,简化一切与显示界面无关的要素。
控制器(Controller)即控制层,在控制层中处理消息通信、关联关系、事件等内容,供业务模块访问,决定输出的视图,以响应用户请求。 开发环境搭建完毕后,在重载函数的接口中编写控制层代码,实现把用户输入的指令和数据传递给业务模型,为模型中的每一种功能提供控制器,选择视图作为用户指令的反馈。
模型(Model)即程序业务逻辑,作为逻辑最复杂的部分,它对应于数据表示和内部数据处理。 在正向设计的模型编写中,结构计算、配置钢筋、统计工程量技术的实现对本文所述方法的可行与否至关重要,详述如下。
2.6.1 结构计算
结构计算是水工建筑物设计的重要部分,对建筑物各部位的截面尺寸及配筋量的确定起决定作用,有关荷载与内力计算的原则及混凝土结构的计算方法均严格依照《水工混凝土结构设计规范》(SL 191—2008)[17]。 以落地槽设计为例,落地槽的计算项目是侧墙底部截面和底板截面的厚度。 其主要外部荷载为侧墙外的土压力和地下水压力,其次是自重和槽内水压力。 根据荷载计算结果计算出两个截面的内力(弯矩),从而最终输出其厚度[18]。 当设计人员按照输出的结果选定不同的厚度尺寸时,即刻反映到三维视图,落地槽随之变化,垫层、土方开挖、土方回填等均随之变化,事先生成的图纸(落地槽的三视图投影和横断面,包括标注的尺寸)也随之变化。
2.6.2 配置钢筋
在三维模型剖面中预置特定形状的钢筋,在代码的事务中激活该配筋剖面,创建收集器形成元素集合,筛选出钢筋元素的ID、钢筋编号、钢筋形状编号、钢筋种类等参数。 根据设计人员输入的环境类别确定钢筋保护层厚度、钢筋种类,根据设计人员输入的钢筋直径,经程序计算后得出钢筋根数、间距;利用Revit 提供的阵列方法对钢筋创建线型阵列,针对不同部位的钢筋分别采用相应的阵列方向,实现钢筋配置。
2.6.3 统计工程量
在本文讨论的方法中有两个位置统计了工程量,一是图纸中的工程量表,二是用于概预算的工程量。图纸中工程量表的形成主要依托Revit 明细表视图,具体实现方法为:新建明细表视图—添加明细表字段—勾选“逐项列举每个实例”;通过代码找到该视图,使用GetSectionData 获取明细表的数据体部分,显示于图纸中。 用于概预算的工程量统计主要利用Revit 中默认的模型体积参数,通过获取该项参数,便可精确确定浇筑混凝土量、土方开挖回填量等;在概预算界面不同工程名称分别套用相应的定额,实现造价计算。 其中土方开挖回填量为场地平整后的工程量,Revit 本身有场地平整功能,地形图导入后形成地形表面,利用场地平整命令可得出场地平整的挖填方,加上场地平整后的工程量即为开挖和回填土方量。
在编程软件中编译代码,编译成功后形成dll 文件,针对dll 文件创建后缀为addin 的格式文件,实现插件的注册。 启动Revit 运行程序,插件会加载到Revit,检验程序是否满足功能需求。 若编译失败或功能不满足需求,则在表现层、控制层、业务层完善代码,直至满足功能需求为止。
3 落地槽正向设计实例验证
落地槽(也称流槽)是一种典型渠道护砌型式,可采用素混凝土结构或钢筋混凝土结构。落地槽与常见的梯形渠道相比有占地少、便桥布置简单、管理维护需求小等优势。落地槽设计的关键是采用经济合理的结构尺寸和较小的配筋率。因此,应用BIM 正向设计模式,同时展现技术指标和经济指标,可方便地进行多方案比选,以确定满足结构受力且经济合理的设计方案。
参照2.1 节功能需求分析,确定落地槽BIM 正向设计业务流程,如图2 所示。
图2 落地槽BIM 正向设计业务流程
在Revit 中选择族样板文件,采用拉伸和嵌套的方式创建落地槽三维模型。模型中主要包括槽深、槽内水、地下水、原土层、回填土五部分,给各部分添加材质属性,真实状态的落地槽模型三维视图如图3 所示。为赋予落地槽模型最大的灵活性,定义尺寸参数,并通 过参数改动测试确定参数。
图3 落地槽模型三维视图
选择Visual Studio 作为开发平台、C#作为编程语言。开发环境配置后,采用Winform 界面开发模式,利用TabControl、GroupBox、Lable、TextBox 等控件实现输出设计,利用Button、TextBox、RadioButton 等控件或导入txt 格式文件进行输入设计。
为在Revit 面板中创建按钮,选择控制命令的事务和更新模式为ExternalApplication,新建类库文件,从IExternalApplication 接口派生,重载Onstartup()和On⁃Shutdown()函数,添加PushButton 主程序,即控制层代码。
为新建项目、打开项目、修改参数、生成图纸、结构计算、配置钢筋、钢筋标注、工程单价、概预算等功能模块分别创建类文件,即业务层,以供控制层选择调用。
代码编译成功后生成dll 文件,创建后缀为addin的文件实现程序的注册。在Revit 中启动程序,如图4所示,参照2.7 节检验其是否满足功能需求。
图4 落地槽BIM 正向设计人机交互界面
经检验,落地槽BIM 正向设计程序可以满足2.1节所述功能需求,由该程序生成的设计图纸、配筋图纸如图5、图6 所示。
图5 落地槽设计图纸
图6 落地槽配筋图纸
4 结 语
提出了基于Revit 二次开发的水利工程正向设计实现方法,从功能需求出发,综合考虑正向设计全过程任务,真正实现了一模多用。通过落地槽BIM 正向设计实例,验证了该方法的可行性和高效性。
上下滑动查看参考文献
END
喜欢就关注我们吧!
点个在看你最好看