基于Revit平台与c#技术的平板直升门水闸建模
2021-06-02陈蕾蕾左威龙刘占午
陈蕾蕾,左威龙,刘占午
(1.江苏省水利勘测设计研究院有限公司,江苏 扬州 225127;2.江苏省水利建设工程有限公司,江苏 扬州 225007)
建筑信息模型(Building Information Modeling,BIM)主要用于建立虚拟的建筑工程三维模型并利用数字化技术为这个模型提供完整的、与实际情况一致的建筑工程信息库[1]。BIM提供了可视化的思路,将以往线条式的构件形成三维立体实物图形展示在人们面前;与建筑业设计效果图相比,BIM技术的可视化不仅包含构件的大小、位置和颜色还可以展示构件之间的互动性和反馈性[2]。目前BIM技术在建筑领域已经得到广泛的应用,当前应用最为广泛的建模软件是 Revit 软件,该软件操作简便、命令齐全,对房建上常用的结构(从轴网、高程设置,到楼板、柱、竖井、屋顶)都进行了分类设置,方便选取[3],但是水利工程和建筑工程的特点有所不同,BIM技术在建筑领域的研究成果并不完全适用于水利工程设计[4],本文主要以平板直升门水闸闸室为研究对象,基于Revit平台和c#技术开发专业模块[5]实现常用形式的闸室模型(底板、闸墩、胸墙、排架、工作桥、交通桥)构建,通过对水闸闸室结构形式的细化整理[6],实现分块模型的参数化,驱动模型生成,最终生成水闸整体模型。
1 平板直升门水闸建模二次开发
闸室是水闸的主体建筑物,其结构形式多种多样,与闸门、过流形式等条件相关[7],水闸闸室目前尚未有现成的三维模型构建库,需要通过开发专业模块实现常用形式的闸室模型(底板、闸墩、胸墙、排架、工作桥、交通桥)构建[8]。Autodesk Revit提供了应用程序编程接口API(Application Programming Interface)[9],用户可以使用API来开发自己的应用程序操纵和访问Revit,从而实现不同的标准和需求,本文主要运用面向对象编程语言c#[10]进行二次开发,通过编译生成的DLL文件与Revit软件建立联系,以插件按钮的形式出现在Revit软件的工具栏面板上,方便用户随时点用。
1.1 平板直升门水闸参数化描述
模型创建的关键在于细化水闸闸室结构,整理结构形式,参数化结构数据,最终驱动模型生成,平板直升门水闸三维建模开发模块主要包含7个模块[11]:底板、闸墩、排架、牛腿、胸墙、工作桥和交通桥。参数化就是对这些模块的形状和位置进行描述[12],如底板结构需要用分块数目、顺水流向长度、垂直流向长度、底板厚度、否包含齿坎以及齿坎的相关参数进行描述,其他模块由于结构形式和组合形式的不同其参数也不尽相同,因此描述这7个模块需要大量的参数。
水闸参数化过程中研究发现不同模块在不同程度的相互影响,主要表现为:①闸墩的闸孔间距依赖于闸孔数木、墩体厚度和底板的垂直水流向长度;②排架和牛腿是否可设置参数依赖于闸墩模块是否设置工作门槽,闸墩包含工作门槽即可设置排架和牛腿相关参数;③排架和牛腿的底高程依赖于闸墩顶高程;④牛腿厚度依赖于排架厚度;⑤交通桥和工作桥长度依赖于底板的垂直水流向长度。不同模块的具体参数及依赖关系如图1所示。
图1 平板直升门水闸参数化描述
1.2 平板直升门水闸参数化实现过程
平板直升门二次开发插件基于Microsoft Visual Studio2012开发平台,采用C#编程语言,引用RevitAPI.DLL和RevitAPIUI.DLL文件,以Addin文件方式实现与Revit软件的交互。
二次开发项目中添加RevitAPI.DLL和RevitAPIUI.DLL引用文件可有效访问Revit提供的编程接口API,主要有两种编程模式:外部命令(IExternalCommand)和外部应用(IExternalApplication),外部命令用于实现插件的三维建模功能,包含执行(Execute)、拉伸(Extrusion)、放样(Sweep)等指令,外部应用用于在Revit软件中创建插件使用按钮,包含启动(OnStartup)和关闭等指令(OnShutdown)[13],两种模式混合编程使得开发插件在启动和关闭Revit软件时自动执行。编程界面中接口引用以及数据类如图2所示。
图2 编程接口和数据类描述
水闸建模首先要考虑各个模块的轮廓参数,根据轮廓的复杂程度不同,存储轮廓数据的方式有两种:点集和线集,点集适用于全是直线的轮廓,如底板,工作桥等,线集适用于包含圆弧和直线等复杂组合的轮廓,如闸墩、胸墙等。其次某些模块之间的位置布置需根据轮廓参数和界面参数计算出来,如排架的放置位置与闸墩的高度有关,胸墙的放样宽度与闸孔间距有关,根据模块的放置位置其模型生成方式有放样和拉伸两种,程序会根据计算结果自动识别模型的生成方式。水闸模型的参数较多,输入操作比较繁琐,为简化用户操作,界面中参数可导出至TXT文档,下次使用时导入更新即可。水闸建模程序的主要结构布置如图3所示。
图3 水闸建模程序的结构布置
2 应用实例展示
采用本文的二次开发插件对某平板直升门水闸进行设计。
2.1 工程参数
①设置2块底板,底板面高程为-5m,底板顺水流向长度为20m,垂直水流向长度为20m,底板厚为1m,2块底板均设置前、后齿坎;②第一块底板闸孔数为2孔,边、中、缝墩墩体厚度均为1m,墩体间距自动计算为0、8、9m,每个墩体设置工作门槽,距离3m,门槽宽0.6m,门槽深度为0.3m;第二块底板闸孔数为1,边、缝墩设置与第一块底板的边、缝墩参数设置相同,每个墩体设置上游检修门槽,门槽设置与第一块底板相同;③第一块底板设置排架参数,长4m,厚1m,顶高程为10m,收缩段宽2m;④第一块底板设置牛腿参数,顶宽1m,底宽0.5m,前缘高0.5m,后缘高0.7m,顶高程为10m;⑤两块底板的胸墙参数设置相同,与底板上游侧距离4m,底高程为-2m,顶高程为3m,面板厚0.5m,贴角高1m、宽0.5m,底梁宽2m、高0.8m,圆弧半径为0.5m;⑥第一块底板工作桥类型设置为多梁型,高程为11m,宽4.5m,面板厚0.3m,纵向主梁数目为4,梁宽0.6m;第二块底板工作桥类型设置为PI型;⑦两块底板交通桥类型均为平板型,桥面高程为5.5m,宽5.5m,厚0.5m,与底板上游侧距离9.5m,第一块底板护栏形式为矩形路缘,高0.2m,宽0.3m,第二块底板护栏形式为防撞护栏,顶宽0.28m,底宽0.45m,倒角半径r=0.025m,倒角半径R=0.25m,总高0.85m,内缘高0.25m,上部斜率为9.85,下部斜率为1.45。
2.2 参数化设计结果
输入上述参数生成的模型立面图和三维图如图4所示,参数输入及模型生成时间在5min以内,同样的模型如果采用手工建模至少需要2h以上,界面设置参数时可将数据保存到TXT文档中,以便下次直接读取参数,避免重复输入。
图4 平板直升门水闸模型示意图
3 结论
平板直升门水闸建模涉及的模块和参数繁多,主要包含底板、闸墩、胸墙、排架、工作桥、交通桥等模块,且部分模块之间具有依赖性,在Revit平台中手动操作建模需要消耗巨大的精力和时间,通过二次开发的程序可明显缩短建模时间,且模块参数输入方便易懂,程序界面中包含相关构件的图形显示,实时展示参数输入的效果,方便用户排错,有效提高了模型的生成效率。平板直升门水闸的二次开发程序依赖于Revit开放的接口,若Revit版本升级后接口有所变动,程序也需要适时的更新和完善。本文论述的平板直升门水闸参数化过程以及二次开发流程可为其他类型的水闸模型开发提供借鉴经验。