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

发布于:2024-04-07

作者简介:牛立军(1966—),男,山东滨州人,副教授,主要从事工程项目信息管理、水利工程可视化设计方面的研究工作

要:为弥补传统二维设计方法出图算量复杂、方案比选困难的缺陷,提升Revit 对水利工程设计行业的适应性,通过正向设计需求分析,利用Revit API 和MVC 编程模式,以相关设计规范为依据,对Revit 二次开发

1 实现技术

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

1.1 Revit API 功能扩展

Revit API 是Revit 的应用程序接口,提供了大量命名空间和丰富的函数,给Revit 的二次开发功能定制提供支持,使得不同地区、不同行业用户可以根据自身需求开发Revit 插件,扩展、丰富Revit 的功能13]Revit 本身的自有命令主要是针对房屋建筑设计,应用于水利行业时可利用Revit API 添加水利工程需要的水工结构计算、工程量统计、水利工程概预算等功能,实现水利工程正向设计。

1.2 MVC 编程模式

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

2.3 开发环境搭建

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

2.4 视图设计

视图(View)即表现层,作为输出数据并允许用户操作的方式,仅为设计人员提供二次开发程序的访问。

2.5 控制器编写

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

2.6 模型编写

模型(Model)即程序业务逻辑,作为逻辑最复杂的部分,它对应于数据表示和内部数据处理。

2.7 调 试

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

3.1.代码实现

选择Visual Studio 作为开发平台、C#作为编程语言。开发环境配置后,采用Winform 界面开发模式,利用TabControl、GroupBox、Lable、TextBox 等控件实现输出设计,利用Button、TextBox、RadioButton 等控件或导入txt 格式文件进行输入设计。

为在Revit 面板中创建按钮,选择控制命令的事务和更新模式为ExternalApplication,新建类库文件,从IExternalApplication 接口派生,重载Onstartup()和On⁃Shutdown()函数,添加PushButton 主程序,即控制层代码。

 

 






安徽申众工程科技有限责任公司



b6cfa29a62401c4f04203cd0b8bafdf.png


e7a0a82f58e9fe6937cb79987c96cda.jpg