APP下载

基于Revit二次开发的水利工程BIM正向设计研究

2022-04-16牛立军梁燕迪王程

人民黄河 2022年3期
关键词:二次开发

牛立军 梁燕迪 王程

关键词:BIM正向设计;二次开发;RevitAPI;MVC;参数化建模

中图分类号:TV222 文献标志码:A doi:10.3969/j.issn.1000-1379.2022.03.030

引用格式:牛立军,梁燕迪,王程.基于Revit二次开发的水利工程BIM正向设计研究[J].人民黄河,2022,44(3):155-159.

传统二维设计模式存在信息共享效率低、各专业间设计信息交流不畅等弊端,直接导致二维设计出图算量复杂、方案比选困难[1],因此有学者提出依托BIM技术实现正向设计,克服传统二维设计的缺点[2-3]。BIM正向设计是建立BIM三维模型,一模多用,完成从方案设计到施工图设计的全过程[4]。BIM技术在北美、北欧等采用较多,发展成熟,已经成为能够带来积极投资回报的技术。在国内,BIM正向设计模式投资大、见效慢,应用范围较小,且集中于建筑领域,在水利水电工程设计中的应用还很少[5-6]。

从技术层面考虑,BIM正向设计模式在水利设计行业推广的瓶颈主要是正向设计工具不统一[7]。水利工程设计涉及专业多,过程复杂,目前市面上已有的BIM软件不能完全满足水利工程正向设计的需求[8]。罗凯等[9]通过水闸样板设计,探索了BIM技术在水利工程正向设计中的应用;庞瑞等[10]利用Catia和VisualFI对水利工程三维结构体建模—配筋—二维出图过程进行了探索;武桂芝等[11]基于Revit二次开发,完成了对农田喷灌系统工程量的提取;朱致远等[12]基于RevitAPI对Revit进行二次开发,实现了对水闸挡土墙稳定分析计算和计算结果实时判别。前人的研究促进了BIM技术的应用,为BIM正向设计奠定了基础。

笔者在前人研究的基础上,通过分析水利工程BIM正向设计需求,综合考虑正向设计的全过程任务和普适性,利用面向对象的编程语言和RevitAPI,采用MVC编程架构,形成基于Revit二次开发的水利工程BIM正向设计方法,以期促进BIM正向设计在水利工程设计行业的广泛应用。

1实现技术

利用经典MVC编程模式,基于Revit的应用程序接口———RevitAPI对Revit进行二次开发,实现水利工程BIM正向设计。

1.1RevitAPI功能扩展

RevitAPI是Revit的应用程序接口,提供了大量命名空间和丰富的函数,给Revit的二次开发功能定制提供支持,使得不同地区、不同行业用户可以根据自身需求开发Revit插件,扩展、丰富Revit的功能[13]。

Revit本身的自有命令主要是针对房屋建筑设计,应用于水利行业时可利用RevitAPI添加水利工程需要的水工结构计算、工程量统计、水利工程概预算等功能,实现水利工程正向設计。

1.2MVC编程模式

MVC(Model⁃View⁃Controller)编程模式将程序模型(Model)、视图(View)和控制器(Controller)分离开来,实现了程序功能模块化[14],便于开发过程中对出图、统计工程量、结构计算、概预算各个模块的调试。应用于水利工程正向设计的MVC编程模式如图1所示,可见正向设计区别于“逆向设计”之处在于先假设、后计算判断。假定建筑物尺寸后,控制器获取设计人员假定的数据,代入模型中进行计算,判断计算结果的安全和经济合理性,若满足规范且经济合理,则导出相应设计成果,若不满足规范或经济不合理,则重新假定参数。

2实现方法和原理

正向设计的实现思想主要是:针对一类水工建筑物创建参数化三维模型,以三维模型为基础,通过编译代码形成Revit插件,实现对三维模型参数的控制,达到三维可视化、交互式设计;在此基础上访问模型参数数据,根据插件中的结构计算算法原理和概预算编制规程处理数据,实现设计成果(计算书、图纸、概预算等)的判断和输出。

2.1需求分析

水利工程BIM正向设计程序中的需求主要指功能需求:①建立水工建筑物构件参数化三维模型库(在Revit中称为族库);②输入尺寸参数,模型与参数联动,满足可视化交互式设计需求;③输入高程、开挖坡度等,输出建筑物设计图纸(三维模型的三视图投影和剖面);④按照规范公式输入相应的数据,采用插件进行结构计算后输出计算结果,导出计算书;⑤输入钢筋直径,通过配筋计算程序插件计算受力筋截面面积,同时算出钢筋根数和间距,调用Revit的钢筋绘制方法自动绘制钢筋三维图,并在剖面标注点筋和线筋,实现自动配筋,导出配筋图纸和钢筋表;⑥通过插件自动统计三维模型的体积和钢筋的体积,乘以相应的容重作为工程量,其中土方开挖和回填工程量通过输入构件的尺寸和开挖坡度算出,选取概预算定额后,导出投资概算。

根据功能需求,以BIM三维模型为基础,根据用户输入的指令或数据,经程序处理后输出相应数据,确定水利工程BIM正向设计业务流程。

2.2Revit参数化建模

二次开发中为实现Revit文档的便捷访问操作,选用了灵活性强、可操作性强的可载入族来创建族样板文件。在Revit中通过拉伸、放样、融合、旋转和放样融合等方式创建族;定义族参数,对族参数进行测试直至达到模型与参数联动效果。族参数定义的合理与否直接影响样板文件的灵活性,因此在定义参数时应处理好约束之间的关系,最大限度地给予模型灵活性,使得可通过参数调整,实现对设计的优化创新[15-16]。

2.3开发环境搭建

代码编译前首先搭建开发环境,添加引用Revit API.dll和Revit APIUI.dll,添加命名空间;然后设置控制命令的更新模式和事务模式,从IExternal Command或IExternal Application派生类,重载相应函数,在函数接口中编写代码。

2.4视图设计

视图(View)即表现层,作为输出数据并允许用户操作的方式,仅为设计人员提供二次开发程序的访问。为顺利控制Revit中模型元素,反映模型随参数输入实时变化,显示设计成果,除正向设计窗口外,Revit中的模型三维视图、Excel工作簿(钢筋表)、Word文档(计算书和概预算)均为表现层的组成部分,因此正向设计人机交互窗口应选用模态型窗体,成果形成后自动弹出。表现层设计时应以一致性、准确性、布局合理化、操作合理性等为原则,简化一切与显示界面无关的要素。

2.5控制器编写

控制器(Controller)即控制层,在控制层中处理消息通信、关联关系、事件等内容,供业务模块访问,决定输出的视图,以响应用户请求。开发环境搭建完毕后,在重载函数的接口中编写控制层代码,实现把用户输入的指令和数据传递给业务模型,为模型中的每一种功能提供控制器,选择视图作为用户指令的反馈。

2.6模型编写

模型(Model)即程序业务逻辑,作为逻辑最复杂的部分,它对应于数据表示和内部数据处理。在正向设计的模型编写中,结构计算、配置钢筋、统计工程量技术的实现对本文所述方法的可行与否至关重要,详述如下。

2.6.1结构计算

结构计算是水工建筑物设计的重要部分,对建筑物各部位的截面尺寸及配筋量的确定起决定作用,有关荷载与内力计算的原则及混凝土结构的计算方法均严格依照《水工混凝土结构设计规范》(SL191—2008)[17]。以落地槽设计为例,落地槽的计算项目是侧墙底部截面和底板截面的厚度。其主要外部荷载为侧墙外的土压力和地下水压力,其次是自重和槽内水压力。根据荷载计算结果计算出两个截面的内力(弯矩),从而最终输出其厚度[18]。当设计人员按照输出的结果选定不同的厚度尺寸时,即刻反映到三维视图,落地槽随之变化,垫层、土方开挖、土方回填等均随之变化,事先生成的图纸(落地槽的三视图投影和横断面,包括标注的尺寸)也随之变化。

2.6.2配置钢筋

在三维模型剖面中预置特定形状的钢筋,在代码的事务中激活该配筋剖面,创建收集器形成元素集合,筛选出钢筋元素的ID、钢筋编号、钢筋形状编号、钢筋种类等参数。根据设计人员输入的环境类别确定钢筋保护层厚度、钢筋种类,根据设计人员输入的钢筋直径,经程序计算后得出钢筋根数、间距;利用Revit提供的阵列方法对钢筋创建线型阵列,针对不同部位的钢筋分别采用相应的阵列方向,实现钢筋配置。

2.6.3统计工程量

在本文讨论的方法中有两个位置统计了工程量,一是图纸中的工程量表,二是用于概预算的工程量。图纸中工程量表的形成主要依托Revit明细表视图,具体实现方法为:新建明细表视图—添加明细表字段—勾选“逐项列举每个实例”;通过代码找到该视图,使用GetSectionData获取明细表的数据体部分,显示于图纸中。用于概预算的工程量统计主要利用Revit中默认的模型体积参数,通过获取该項参数,便可精确确定浇筑混凝土量、土方开挖回填量等;在概预算界面不同工程名称分别套用相应的定额,实现造价计算。其中土方开挖回填量为场地平整后的工程量,Revit本身有场地平整功能,地形图导入后形成地形表面,利用场地平整命令可得出场地平整的挖填方,加上场地平整后的工程量即为开挖和回填土方量。

2.7调试

在编程软件中编译代码,编译成功后形成dll文件,针对dll文件创建后缀为addin的格式文件,实现插件的注册。启动Revit运行程序,插件会加载到Revit,检验程序是否满足功能需求。若编译失败或功能不满足需求,则在表现层、控制层、业务层完善代码,直至满足功能需求为止。

3落地槽正向设计实例验证

落地槽(也称流槽)是一种典型渠道护砌型式,可采用素混凝土结构或钢筋混凝土结构。落地槽与常见的梯形渠道相比有占地少、便桥布置简单、管理维护需求小等优势。落地槽设计的关键是采用经济合理的结构尺寸和较小的配筋率。因此,应用BIM正向设计模式,同时展现技术指标和经济指标,可方便地进行多方案比选,以确定满足结构受力且经济合理的设计方案。

3.1功能需求分析

参照2.1节功能需求分析,确定落地槽BIM正向设计业务流程,如图2所示。

3.2参数化建模

在Revit中选择族样板文件,采用拉伸和嵌套的方式创建落地槽三维模型。模型中主要包括槽深、槽内水、地下水、原土层、回填土五部分,给各部分添加材质属性,真实状态的落地槽模型三维视图如图3所示。为赋予落地槽模型最大的灵活性,定义尺寸参数,并通过参数改动测试确定参数。

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节检验其是否满足功能需求。

经检验,落地槽BIM正向设计程序可以满足2.1节所述功能需求,由该程序生成的设计图纸、配筋图纸如图5、图6所示。

4结语

提出了基于Revit二次开发的水利工程正向设计实现方法,从功能需求出发,综合考虑正向设计全过程任务,真正实现了一模多用。通过落地槽BIM正向设计实例,验证了该方法的可行性和高效性。

【责任编辑 张华岩】

猜你喜欢

二次开发
例谈对高中数学教材中习题的二次开发
浅谈CAD软件二次开发的方法及工具
例谈课本习题的“二次开发”
高中物理教材导入的“二次开发”