胡宏彪
(江苏建筑职业技术学院 建筑管理学院,江苏徐州 221116)
建筑工程资料是对建筑工程项目建造过程的真实记录,是工程质量的客观见证,也是对建筑工程进行检查、维修、管理、使用、改建、扩建的重要依据,因此,国家建设主管部门对工程资料工作十分重视,明确规定“任何一项工程,如果工程资料不符合标准规定,则判定该项工程不合格”[1]。为了系统化、程序化、规范化记录工程建设过程中的各项信息,目前工程资料主要使用制式表格的形式进行记录。
建筑工程资料包含的表格、文档不仅数量巨大,而且种类繁多,填写这些资料是一个非常耗费人力的过程。而随着信息技术的发展,当前,在实际工作中已广泛使用工程资料管理软件辅助工作,这些软件能完成工程资料所有文档、表格的录入、管理、查询、备份、导入、导出等任务。虽然和以前相比,管理软件的应用大大提高了资料工作的效率和质量,但是以现在的信息化标准进行衡量,目前所有的工程资料管理软件只是实现了表格的电子化而已,表格中的各项数据依然完全依靠人工输入的方式进行填写,由于输入的数据量大,图纸复杂,人工方式不仅速度慢,还非常容易产生错误。另外,在二维施工图时期,由于图纸上的设计信息只能依靠人工读图进行提取,资料管理软件和建筑设计软件之间的信息隔离是可以接受的,而现在进入BIM 时期后,由于可以从建筑设计模型上提取信息,这种信息隔离的软件设计思想就显得非常落后了。
国内外的研究者已经关注到建筑软件信息连通这个领域,并开展了一系列研究,张翼飞[2]通过开发Revit 插件提取三维模型的几何信息注入AR 建模软件,实现了建筑模型的AR 展示和信息查询。叶鹏等[3]以铁路车站的BIM 模型为载体,通过Unity 平台开发实现了车站模型与资料的关联,使得资料的查询、展示便利化。潘月宇[4]论证了BIM 在施工项目工程资料管理上的适用性,并提出了总体要求和框架体系。但目前的研究还基本没有达到通过软件信息连通实现工作自动化的深度,尤其对于这方面具体实施技术的研究还比较缺乏,因此对BIM 数据提取及应用进行研究具有较大的实用价值。
由于工程使用BIM 建模后,建筑信息可以从模型中直接提取,当需要向工程资料表格中填入信息时,关于建筑物本身的信息,比如构件尺寸、材质、位置等,就可以自动从模型中提取并填入表格,工作快速准确,大大节约人力成本。另外,在自动获取建筑设计信息后,工程资料管理软件还可以大幅增强其自动计算、自动判别结果的功能,使软件更加智能化。以柱子模板安装施工验收记录为例,说明在该设计思路下工程资料管理软件的改进效果。
在传统方式下完成工程资料的操作步骤:
(1)测量一个柱子的模板安装尺寸;
(2)从图纸上找出此柱子的设计尺寸;
(3)计算两者之间的偏差;
(4)根据规范规定判定验收结果是否合格;
(5)将结果输入工程资料管理软件。
本文设计的操作步骤:
(1)测量一个柱子的模板安装尺寸;
(2)在BIM 模型中找到此柱子的ID 值;
(3)在软件中,输入ID 值和测量值。
人工完成本文设计的步骤后,资料管理软件根据ID 值从BIM 模型中提取出柱子的设计尺寸,然后和测量值比对,计算出偏差,再根据资料管理软件中设定的规范要求,自动判断施工质量是否合格,最后将各项所需数据自动填入表格中。两者相比,后者自动化程度更高,所需人工工作量更小,计算过程及判定也不会出现错误。
在本文设计的工作模式中,从BIM 模型中提取所需数据是技术核心。BIM 数据主要包含在其核心建模软件中,我国现在应用最广泛的建模软件是Autodesk 公司的Revit,Revit 不仅创建了三维模型的几何实体,更包含了模型的数据信息,并使信息与模型保持完整的关联性,即模型与信息之间可实现同步联动,方便后续信息提取的研究。Revit 拥有较强的开放性,Autodesk 公司为该软件保留了大量的API 应用程序接口,用户可以通过Revit 二次开发技术使用API 来扩展和定义所需的功能或模块。利用 RevitAPI 接口可以访问 BIM 模型的图形信息、访问 BIM 模型的参数信息、自动创建项目文档、集成第三方应用及转换传递 BIM 模型数据信息等,因此,本文选用 Revit 进行BIM 数据提取方法的研究。
在进行Revit 二次开发之前,需安装好相应的开发平台并对开发环境进行搭建。本文使用Revit 2019 版软件进行二次开发,并使用Visual studio 2019 搭建相应的开发环境,使用C#编程语言和API 程序接口对Revit 软件进行功能命令的二次开发。Revit 的基本开发流程为:首先创建一个类库(Class Libriary)项目,在这个类库项目上添加两个引用RevitAPI.dll和RevitAPIUI.dll;然后在程序中添加命名空间Autodesk.Revit.UI、Autodesk.Revit.DB,在程序中添加事件属性;最后建立一个IExternal Command 的派生类,在Execute () 函数中通过编写代码进行重载实现需要的功能。开发流程如图1 所示。
图1 Revit 基本开发流程图
在RevitAPI 中,Document 类用于表示打开的Autodesk Revit 工程,Document 对象用于存储Revit 的元素、管理视图和数据,通过这个类的GetElement 方法获取元素,从元素的族实例、族类型寻找所需的参数,有GetParameters 和Get_Parameter两种方法。GetParameters 方法使用name 参数,Get_Parameter方法可以使用BuiltInParameter 参数、Definition 参数、Guid 参数,从效率上讲,最快的是BuiltInParameter 内建参数,其次是Definition 参数和Guid 参数,最慢的是name 参数。
以一个框架结构中的柱子为例,使用上述技术方法提取其在模型中的高度和截面尺寸。首先在模型上选取一根框架柱,在revit 软件中点击“管理”-“选择项的ID”,会弹出一个对话框显示选择构件的ID 值,值为“473860”,如图2 所示。
图2 查询柱子的ID 值
提取柱子高度的编程思路为:由柱子的ID 取得族实例,在族实例中有底部标高、顶部标高参数,取得这两个参数后,用顶部标高减去底部标高即为柱子高度。
取得底部标高的核心代码如下:
顶部标高代码类同,将底部标高和顶部标高数值使用对话框显示出来,分别如图3、图4 所示。
图3 柱子底部标高数值显示
图4 柱子顶部标高数值显示
可以看出得到的底部标高为-49.9999999948539mm,原始设计值为-50mm,此偏差对后续计算没有影响;得到顶部标高为5950mm,柱子设计高度为6000mm,提取的数据和设计值两者相符。
提取柱子截面尺寸的方法更为复杂,因为族实例没有表示柱子截面边长的参数,需要先由族实例取得族类型。在族类型中有“b”“h”两个参数分别表示柱子两个方向的截面尺寸,取得“b”参数的核心代码如下:
将“b”参数数值使用对话框显示出来,如图5 所示。得到的数值为900mm,与设计值一致,“h”参数操作类同。
图5 柱子截面边长数值显示
在工程资料管理软件中加入上述提取信息的代码后,就可以获得构件的模型信息,然后在资料软件内部进行使用了。
本文针对目前工程资料管理软件自动化程度低,与BIM 模型信息隔离的问题,创造性地设计了一种自动提取BIM 模型中的数据信息到工程资料软件中进行自动工作的技术路线,并以工程实例验证了工程资料所需信息的提取过程,主要结论如下:
(1)工程资料所需的模型信息可以提取,数据精度符合工作需要,证实了在工程资料管理软件和BIM 建模软件之间建立信息连通是可行的;
(2)在信息连通背景上设计的软件工作方式可以节省大量的人力,与BIM 模型信息连通将是下一代工程资料软件的技术发展方向,依据这一技术路线设计的新一代资料管理软件必将具有巨大的技术优势。
在本文的研究基础上,下一步还需对工程资料中各个具体记录环节对应需要何种模型信息数据,以及在工程资料管理软件中如何处理和使用这些数据进行研究,进一步的研究工作将为最终实现下一代工程资料软件更新打下良好基础。