BIM模型数据处理二次开发在水利工程数字化中的应用
2023-12-23补舒棋
补舒棋,郭 琰,刘 冬,苗 洲,刘 冲
(陕西省水利电力勘测设计研究院,陕西 西安 710001)
1 背景介绍
1.1 建筑信息模型(BIM)在数字孪生水利工程中的应用
随着互联网与数字化、信息化技术飞速发展,水利水电工程的数字化建设逐步呈现为以BIM(Building Information Modeling建筑信息模型)为核心开展的各项以信息为加工对象的数字化应用,依托工程全生命周期基础平台、激活创造数据应用新价值[1]。BIM技术在水利工程数字化方面发挥了关键作用,GIS、BIM模型融合数据及BIM模型的更新迭代构成数字孪生的底座,是物理空间各类工程信息在信息空间中的孪生重建[2],BIM数据是构建水利工程孪生环境的基础组成部分,为数字化水利工程建设和运行管理提供技术支持。BIM技术与云计算、物联网、虚拟现实(VR)和地理信息系统(GIS)等新兴技术相结合,发挥其大数据整合能力,以实现智慧水利和数字孪生建设,具有极其广阔的发展前景。为推进工程数字孪生的实施应用,提高信息应用效率和效益,需确保模型数据准确传递支撑工程数字化应用。本文利用CATIA Automation API接口,基于VB6.0在建模软件CATIA中二次开发了模型数据批量处理功能,通过实例应用证明开发后可以大幅提高效率,并能支撑数据向工程数字孪生的延伸应用。
1.2 CATIA在水利水电工程BIM设计中的优势
CATIA设计软件的优势主要在于可以实现水利水电工程项目全过程的数字化设计管理,国内很多企业、高校等都在水利水电工程数字化应用中采用了CATIA解决方案,如长江勘测规划设计研究有限责任公司[3]、黄河勘测规划设计研究院有限公司[4]、河海大学[5]等,CATIA具有较好的二次开发应用能力,可以通过API编程方式实现模块定制等开发自定义应用,满足用户在水利水电工程BIM建模及数据处理方面的需求。
2 水利水电工程BIM模型数据处理需求
水工程数字孪生体建设中的BIM模型除了基本的专业模型外还包括管理类模型,与各阶段管理相适应的重分类的BIM模型,如建设期与施工进度、质量管理相匹配的BIM模型[6]。根据数据孪生里需提供的管理模型的需求,需要通过对模型数据进行预处理操作得到适于后续应用的模型数据,提高模型数据的高效利用和科学管理。如武汉大学的刘全等人以数字孪生技术为基础应用框架,基于CATIA二次开发完成了拱坝的BIM建模、浇筑仓建模和施工单元体形提取、拱坝属性提取等功能,可为坝体施工进度和强度仿真提供数据和模型支持[7],本文基于项目实际应用提出几项对BIM模型数据批量处理的基本需求。
(1)基于数据标准化提出对数据批量编码的需求:BIM模型信息编码的主要目的是使建筑信息能够更加方便地存储、分类、检索和使用,使信息能被准确地标识、管理和控制,从而保障模型数据的安全性。
(2)基于数据属性信息交互性提出属性赋予及导出的需求:BIM模型数据的属性信息可以准确描述每个构件的材质、规格、描述、项目单位等详细信息,通过这些信息深度能够及时、准确地反映相关构件的状态和特征。
(3)基于工程施工进度控制、质量、运维管理的提出的模型构件单体化批量升级、批量工程量导出的需求。
a.模型构件单体化批量升级:模型单体化是指将一个完整的建筑设计按需求分解为业务需要的单元部分的过程,这些部分可以是整体的系统、子系统、分区、构件或按施工划分标准(单项工程、单位工程、分部工程、分项工程)。这些对象组合集成整体的建筑信息模型以支持不同阶段的全过程管理。BIM模型单体化批量升级有以下意义:①实现项目施工进度的可视化的条件,为施工进度管理系统提供了可靠的依据,施工人员通过BIM模型预先检查并规划所有的施工任务,减少资源浪费和重复工作,从而使得整个施工过程更加高效。②实现对每个零部件的数字化记录和跟踪的基础,通过构件单体化后,在其属性里记录各项资源的使用情况,有效地记录数据源的历史数据,包括施工记录、检验记录、维修记录等,可跟踪工程各个部位的施工情况,科学规划和优化资源的配置实现对施工过程协同、优化及质量过程的追溯和管理,从而确保施工质量达标,减少浪费和损耗。
b.BIM模型工程量批量统计:在项目应用中,由于模型单体化后数据量较大,需自动化地计算建筑构件的工程量,提高统计效率,并为施工进度管理系统的构件提供工程量清单属性信息,满足工程数字化、信息化的要求,提升信息管理水平。
(4)基于工程监测提出的批量坐标点导入并生成模型的需求:将工程各个部位的监测点数据进行坐标点位可视化,方便在设计过程及后期工程数字化应用中结合监测管理进行管理应用。
(5)基于工程设计、施工管理提出的专业或进度颜色批量划分的需求:通过将不同专业模型的各个部位进行颜色划分,颜色可以设置为代表各专业模型,也可设置为代表施工进度,通过颜色来区分各专业模型信息或快速了解工程进度,提高沟通效率。
3 CATIA二次开发的水利水电工程BIM模型数据处理应用
3.1 应用范围和目标
针对以上需求,基于CATIA开发了模型数据的批量处理功能,包括:编码改名、属性信息赋予及导出、单体化批量升级、工程量导出、坐标点导入、工程专业颜色修改等,程序能适应于CATIA V5r20及CATIA V5-V6版,适应于CATIA设计数据,也可适应能够导入CATIA中的数据格式。
3.2 开发方式及语言
CATIA二次开发方式包括基于Visual Basic 的Automation技术和基于C++的CAA技术[8],通过使用Catia软件的API在vb中进行接口调用进行自动化对象编程,完成相关需求功能,采用C#语言进行界面集成和封装,以便于工程设计人员使用,如图1所示,为软件界面。
图1 软件界面
3.3 数据处理流程
开发后,在项目中基本的数据处理流程如图2所示,可用于工程协同设计、施工仿真、工程数字化管理应用等。
图2 数据处理应用流程
4 实际项目案例应用分析
4.1 属性信息赋予及导出、工程量导出、颜色划分、批量改名应用
在某水库工程数字孪生项目中应用了以下模型数据处理功能:
(1)要求对模型赋予工程属性信息并在后期应用中导出属性信息,方便在后期的BIM+GIS信息化管理系统中使用,如图3所示,通过属性信息赋予或导出功能可以将包含零件编号、描述、重量、来源、材料、版本、成本、实例名称以及用户自定义属性等导出至外部excel表中,或是将外部excel表中的零件属性信息批量写入catia文件。
图3 属性信息批量赋予及导出
(2)对建筑物或分区混凝土进行工程量统计,如图4所示,通过几何体工程量导出功能批量获取零件几何体的名称以及工程量,写入excel表中。
图4 工程量批量导出及工程量批量分缝分块
(3)根据水利水电工程信息模型分类和编码标准[9]结合需要对不同文件类型(如产品、零件、几何体、几何元素)进行名称编码,以便实现水利水电工程全生命周期信息的交换、共享和管理。开发的功能主要提供了对零件批量由外部EXCEL表批量给名、修改指定几何图形集元素加前缀名称、批量重命名产品零件实例名称、批量重命名零件几何体、批量重命名选定的元素、批量修改零件PARTNUMBER、批量在零件PARTNUMBER加前缀、对零件实例名称加前缀等,利用这些功能可以将数据进行规范编码命名。
(4)项目要求按专业对模型划分,开发的功能可将工程的模型的零件、几何体或几何元素根据设定的专业颜色标准进行批量改色,方便BIM模型的专业划分。
4.2 监测坐标点导入并生成模型
在某项目工程应用中利用开发工具实现了将坐标点EXCEL文件批量导入CATIA中,并批量建模,项目程序可以执行相对或绝对坐标系的坐标点导入情况,每个坐标点会建立一个小球模型代表监测点设备,其开发应用可延伸用于批量导入如长距离隧洞节点、管点、骨架控制点等的批量导入,项目工程建筑物批量导入各参数监测设备分布点后的模型,监测模型信息涉及坝基温度、坝体应力、表面库水温、地震监测、裂缝变形、渗流渗压、坝体切向拱推力、垂线变形、坝体应变等,共计1990个左右,处理这些数据需要十分钟左右,大大提高效率,如图5所示。
图5 监测点三维分布应用图
4.3 单体化批量升级、属性信息、改名、颜色划分
在某水库后期的工程数字化应用中,为实现施工进度可视化管理功能,需将建筑物进行单体化、导出属性信息、编码等,按照数据处理流程,先进行了单体化批量升级,利用开发工具将零件下的构件(零件几何体)自动批量升级为PART零件,并缀在项目产品PRODUCT下,如图6所示,为升级的目录结构树在CATIA及模拟仿真软件中的状态,根据编码规范利用编码改名功能对零件和产品进行编码,利用属性信息导出功能和工程量导出功能将信息与进度信息结合,从而获得已有编码及综合属性信息的精细化的单体模型,为后期BIM+GIS管理平台的数据底板做准备,前期的施工进度应用主要利用施工仿真模拟软件进行工程4D/5D施工模拟或工艺仿真服务,优化施工进度管理,解决前期冲突问题,后期施工进度应用是在信息管理平台通过将模型的施工进度规划与模型ID一一对应,将精细化的单体模型上传至平台,可在管理平台实现按时间查询可视化进度,并按时间显示分色显示施工进度。项目数据规模为1.2G,数据过程中批量单体化的处理响应速度为17秒100个,而人工手动转100个则预估需要1.6小时,效率提升99.81%。CATIA模型数据和数据在BIM+GIS平台实现的单体属性信息查询功能,如图7所示。
图6 批量升级功能及施工模拟软件中的目录结构树
图7 CATIA模型数据经处理后在BIM+GIS平台实现的功能
4.4 效率对比
如图8所示,为手动处理与采用软件处理100个数据时的时间效率对比情况,通过对比可以看出手动处理比软件处理要更为费时,经过操作计算,手动完成100个数据处理操作(如图8所示6个处理类型)大概需要6.5小时,而采用软件只需要2.44分钟,每项功能的时间效率都在98.3%以上,若在大型水利水电工程施工进度管理中进行应用,项目构件划分可能需要上万个,以一万为例,按以上时间效率计算即单人手动完成相应的工作量大概需要81天,而采用软件只需要4小时,充分说明开发的必要性和优越性。
图8 手动与开发软件进行数据处理的时间效率比较
5 部分关键代码分析
以导出工程量到excel表为例1进行主要循环体的代码分析,关键代码及分析如下:
For Each ibody In iHybridBodies //对每个iHybridBodies中的ibody进行循环操作
Dim oreference As Reference //声明一个名为oreference的参考对象,并且使用partDocument1.Part.CreateReferenceFromObject(ibody)从ibody创建一个参考。
oreference=partDocument1.Part.CreateReferenceFromObject(ibody)
Dim oMeasurable As Measurable //声明一个名为oMeasurable的测量对象,并且使用oWorkbench.GetMeasurable(oreference)从参考中获取测量对象。
oMeasurable=oWorkbench.GetMeasurable(oreference)
lSheet.Cells(1,1)="名称" //在Excel表格的第一行分别填写"名称"、"工程量"和"单位"。
lSheet.Cells(1,2)="工程量"
lSheet.Cells(1,3)="单位"
bdname=ibody.Name //获取当前几何体的名称,并将其赋值给Excel表格中的对应单元格(行数为i+1,列数为1)。
lSheet.Cells(i+1,1)=bdname
Dim reference1 As Reference //声明名为reference1的参考对象,并使用part1.CreateReferenceFromObject(part1.Bodies.Item(i))从part1中获取当前几何体(通过Bodies.Item(i))的参考。
reference1=part1.CreateReferenceFromObject(part1.Bodies.Item(i))
Dim SPAWorkbench1 As SPAWorkbench //声明名为SPAWorkbench1的SPA工作台对象,并使用CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")来获取当前文档中的SPA工作台。
SPAWorkbench1=CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Dim Measurable1 As Measurable //声明名为Measurable1的测量对象,并使用SPAWorkbench1.GetMeasurable(reference1)从参考中获取测量对象。
Measurable1=SPAWorkbench1.GetMeasurable(reference1)
Dim volume1 As Double //声明名为volume1的双精度浮点数,并使用Measurable1.Volume获取当前几何体的体积。
volume1=Measurable1.Volume //将当前几何体的名称、体积和单位("m3")填入Excel表格中的对应单元格(行数为i+1,列数分别为2和3)。
lSheet.Cells(i+1,2)=volume1
lSheet.Cells(i+1,3)="m3"
i=i+1
Next
以上关键代码可以将零件内的几何体的体积依次对应并导出到表格中,适于进行实体结构的分类工程量统计。
以单体化批量升级为例2进行主要代码分析,主要代码及分析如下:
以上批量升级代码可以实现将现有零件几何体
Sub Main()
Set prtdoc=CATIA.ActiveDocument // 定义了一个名为"Main"的子过程。
Set prodoc=CATIA.Documents.Add("Product")//创建一个新的产品(Product)文档对象,并将其赋值给变量prodoc。
prodoc.Product.PartNumber=prtdoc.Product.PartNumber //将当前文档(prtdoc)的PartNumber属性值赋值给新创建的文档(prodoc)的PartNumber属性,确保它们具有相同的零件号。
For Each B In prtdoc.Part.Bodies //对prtdoc文档中的每个零件(Body)进行循环操作。
prtdoc.Selection.Add B // 将当前零件(B)添加到选择集中。
prtdoc.Selection.Copy //复制选择集中的零件。
prtdoc.Selection.Clear //清空选择集,为下一个循环做准备。
Set Prd=prodoc.Product.Products.AddNewComponent("Part","") //在新产品(prodoc)中添加一个新的零件组件(Part),并将其赋值给变量Prd。
Prd.PartNumber=B.Name // 将新零件的PartNumber属性设置为当前零件的名称。
prodoc.Selection.Add Prd.ReferenceProduct.Parent.Part // 将新零件的父级零件(Parent.Part)添加到选择集中,作为剪贴板的目标。
prodoc.Selection.PasteSpecial "CATPrtResultWithOutLink"//将剪贴板中的内容粘贴到选择集中,实现零件的复制。
Prd.ReferenceProduct.Parent.Part.Update// 更新新零件的父级零件,以反映复制操作的更改。
Next // 结束循环体。
End Sub //结束子过程。
复制到新产品结构中,零件几何体则升级为零件文件,这对于后续需要对多个结构体在后期平台的单个结构的信息查询、属性赋予、施工进度的演示等有着关键作用。
6 总结
本研究结合项目生产中数据信息向平台应用的需求,通过基于CATIA的二次开发实现了对BIM数据的批量处理,以便将数据传递至工程后期的数字化平台进行应用。开发后每项功能的数据处理效率都在98.3%以上,大大减少了人工重复劳动,节约了时间,并在实际应用中取得了良好的效果,达到了减少工作量的目标。然而,在研究过程中需要注意的是,由于BIM数据的来源广泛,因此并非所有BIM数据类型都能够进行批量处理,但对于基于CATIA平台创建的数据或可导入CATIA平台的三维实体数据,软件均可以进行批量处理。