建筑运维阶段信息模型的轻量化方法
2018-02-09郭思怡陈永锋
郭思怡,陈永锋
建筑运维阶段信息模型的轻量化方法
郭思怡,陈永锋
(西安建筑科技大学,陕西 西安 710055)
BIM技术引入我国以来,在建设项目中的普及率远低于推广的力度,导致这种现状的原因之一,是贯穿全生命周期的BIM模型拥有大量的数据,对计算机的要求过高。通过利用Revit API外部功能扩展方式实现二次开发,以及使用网格模型简化算法从内外两方面分别对建筑运维阶段信息模型进行轻量化处理,降低使用时对硬件的要求,使BIM全生命周期模型更加具有普适性,对BIM在国内的发展具有相当的意义。实验结果证实,该方法能够在不影响运维阶段使用的情况下,实现建筑信息模型的轻量化。
模型轻量化;二次开发;Revit API;网格简化;点重要度
我国首个真正意义上的建筑生命周期管理(product lifecycle management,PLM)实验室在2004年成立于哈尔滨工业大学,自此以后,建筑信息模型(building information modeling,BIM)技术在我国逐步得到发展,其发展大致分为3个阶段,2005年前后为导入期;2006-2011年为BIM1.0时期;2012年至今为BIM2.0阶段[1]。在BIM2.0阶段,住房和城乡建设部发布的《关于推进建筑信息模型应用的指导意见》中提出对BIM技术发展的展望:“到2020年末,建筑行业甲级勘察、设计单位以及特级、一级房屋建筑工程施工企业应掌握并实现BIM与企业管理系统和其他信息技术的一体化集成应用,新立项以国有资金投资为主的大中型建筑、申报绿色建筑的公共建筑和绿色生态示范小区,项目勘察设计、施工、运营维护中,集成应用BIM的项目比率达到90%。”
BIM技术能够贯穿建筑的规划、设计、施工以及运维等全生命周期,实现各阶段数据的共享。建筑运维阶段的管理可以通过BIM技术与运营维护系统相结合,对建筑的空间、设备资产等进行科学管理,对可能发生的灾害进行预防,降低运营维护成本[2],其主要包括空间管理、资产管理、维护管理、公共安全管理和能耗管理[3]。运维阶段需要对建筑的实时数据进行收集,进而进行更好地管理。建筑全生命周期信息模型为运维阶段提供了庞大的数据支持,通过对前期数据进行查询和理解,能够使运营维护人员更好地预见和解决运维阶段所面临的问题。
BIM的建模需要建筑、结构、水、暖、电各专业进行协同工作,可在工作集模式或模型链接模式运行。模型链接模式是比较常用的协同方式,即将模型进行分阶段、分专业编辑和保存,并使用链接实现信息的协同,但是模型链接模式很显然增加了信息使用的复杂度,降低了运行效率。理论上,工作集模式是最理想的工作方式,能够通过中心模型,很容易进行参照和协同工作,但由于中心模型拥有庞大的数据信息,从而对计算机硬件性能要求较高。因此,在BIM2.0阶段,轻量化应用的概念被提出,由于模型过大而产生的劣势,通过轻量化处理,能够降低工作集模式助推工作集模式的实际应用。
在建筑的全生命周期中,运维阶段占其绝大部分,会产生大量的运维信息。而模型在使用过程中,由于对数据的实时更新程度要求较高,所以运行速度将是一个关键因素。因此对运维阶段的BIM进行轻量化研究,不但能够突出运行速度提高、使用成本降低等核心优势,也同样能够以此为例探寻其他阶段的轻量化应用,助推BIM在国内的发展。本文通过Revit软件建立BIM模型,从内外两方面对模型进行轻量化处理。
1 内部轻量化
对建筑的运维阶段信息模型进行内部轻量化处理,就是对模型数据库中冗余数据进行删除操作。BIM在移交到运维阶段之前,施工阶段会根据施工的需要,在设计的基础上对信息模型进行相应的优化和完善,以实现施工阶段的提质增效、降低成本,比如管线排布的优化、钢结构节点的深化等,这些被完善的信息涵括了很多方面,形成一个可供查询和使用的巨大数据库,但是对于运维阶段而言,这个数据库中存在的一部分信息可能会不使用或者使用频率极低,这部分信息对于建筑运维阶段信息模型的使用是冗余的。通过对数据库中的信息进行筛选,舍去相对而言不重要的数据,以达到减轻数据库的目的,从而实现模型的内部轻量化。
1.1 Revit软件的二次开发
Revit系列软件是Autodesk公司在建筑工程领域实现BIM技术的核心产品,Revit作为一款强大的建筑行业设计软件,提供了非常强大和完善的三维建模能力,支持创建大型的复杂项目。本文选取Revit软件所建BIM模型作为研究对象,对于一个完整的建筑信息模型而言,手动进行删除操作,将会是一件没有效率且劳动量十分巨大的事情,鉴于Autodesk公司为了满足用户的个体需求,提供了非常方便的二次开发功能,因此本节内部轻量化的内容通过Revit软件的二次开发来完成,基于软件Autodesk Revit2014,主要开发工具为Visual Studio2012和Revit SDK。
Revit软件二次开发的主要方式包括:其一,外部命令方式(external command),调用DLL文件载入一个Revit命令,用户通过点击附加模块中外部工具的Add-In Manager按钮进行执行;其二,外部应用方式(external application),能够在Revit启动或关闭时实现自动运行。本文采用的是第一种方式,其具体步骤如下:
(1) 建立项目。打开Visual Studio2014,新建C#类库,对其进行命名,并为生成的class1.cs文件进行重命名;
(2) 添加外部引用并引用命名空间。选择Revit2014目录下的RevitAPI.dll和RevitAPIUI.dll文件进行引用,并在命名空间代码区添加Autodesk. Revit.DB、Autodesk.Revit.UI等相应语句,对RevitAPI中相关的命名空间进行引用;
(3) 新建类、重载Execute()方法。选择文件事物、更新等模式,创建一个从IExternalCommand派生的类。在类中载用Execute()方法,添加用户程序,编译代码;
(4) 运行。代码编译成功后生成DLL文件,在Revit中使用附加模块中的外部工具(Add-In Manager),选择相应的加载方式运行DLL文件,查看程序功能是否满足要求。
1.2 操作流程及程序段
基于无用性删除的观念,在Revit模型中进行冗余信息的清除操作,主要步骤包括:第一步为确定冗余构件,可以通过在运维阶段构件的使用频率确定构件的权重,定义小于设定权重的构件为冗余构件;第二步对冗余构件进行删除。重点探讨第二步的删除操作,其核心分为两步:①获取所需要删除的对象合集;②对获取的合集进行删除。
1.2.1 获取冗余构件合集
Revit提供一个用于搜索、过滤和迭代元素的类FilteredElementCollector Class,能够实现对文档中的元素对象进行过滤的所有功能,添加过滤条件后,满足条件的对象就可以从这个类进行访问,Revit可以通过3种用法实现FilteredElementCollector过滤,过滤的方法、条件、范围、特点及实例见表1。
表1 FilteredElementCollector的3种方法[2]
以窗为例,通过窗构件工作集获取建筑中窗户的数量,部分代码如下:
FilteredElementCollector collector = new
FilteredElementCollector(doc);
collector.OfClass(typeof(FamilyInstance)).OfCategory
(BuiltInCategory.OST_Windows);
IList
stringMessage = string.Format("there are {0} windows in current model", list.Count);
MessageBox.Show(Message);
图1为通过运行代码获得的窗户总数量,该建筑物中共有6扇窗户。
1.2.2 对获取的集合进行删除
借助过滤器FilteredElementCollector获得所需要的构件集合,并对集合中的元素进行删除。从Revit帮助文档中获得对象删除函数Delete(),因此在对获取的几何进行删除时,通过枚举Ienumerator()和删除Delete()实现对集合中元素的逐一删除。
图1 筛选后工作集中窗构件的数量
同样以窗为例,已知需删除的集合list,部分代码如下:
IEnumeratora = list.GetEnumerator();
boolMoreValue = a.MoveNext();
while (MoreValue)
{
Element componet = a.Current as Element;
uiapp.ActiveUIDocument.Document.Delete (componet.Id);
MoreValue = a.MoveNext();
}//逐个进行删除
通过运行外部应用文件Delete.dll,可以实现对建筑物中窗户构件直接删除的操作,运行结果如图2所示。
图2 运行外部应用文件对窗构件进行删除
1.3 运行结果
在内部轻量化的过程中,拟设定门、窗两个建筑构件作为冗余构件进行结果检验,使用FilteredElementCollector Class对Revit模型中所有的构件进行遍历,Delete()函数进行删除,运行数据见表2。
表2 Revit模型简化前后数据对比
从表2中可以看出,通过对冗余构件进行删除,模型文件大小变化幅度较为明显,并且运行时间在可接受范围之内。通过上述方法能够对运维阶段不需要的冗余数据进行快速删除操作,实现运维阶段模型的内部轻量化,达到减少模型占用内存、提高模型使用效率的目的,并为下一步运维阶段模型的外部轻量化打下基础。
2 外部轻量化
在建筑运维阶段信息模型的轻量化过程中,对Revit模型进行冗余构件删减操作以形成内部轻量化运维模型之后,还需考虑对模型进行更进一步的外部轻量化操作,即对运维阶段建筑信息的模型通过数学方法进行简化处理,以更少的三角面片保证建筑模型外观相似性。
网格模型轻量化国内外诸多学者都已进行过深入地研究,并且在这方面取得了不少成果,其研究的3D模型通常形状较为复杂,比如刘晓利等[3]、纪庆革等[4]在此方面的相关论文中引用的实例Bunny、Cow或部分影像方向的论文中引用的人体某器官模型等。但是在建筑信息模型中,模型内部涉及构配件譬如水、暖、电等许多方面,这些构配件通常形状比较规则,模型外部涉及建筑外表面形状相比较人体器官等模型而言平坦区域占比也更大,因此在建筑信息模型中的网格模型轻量化更加强调边缘与轮廓。网格模型简化算法有多种分类,大致可以分为静态和动态两种化简方法,动态化简是静态化简的延续,很多基本操作都采用的是静态化简的方法[5]。静态化简方法中几何元素删除法是应用较为广泛的一种方法,其中包含顶点删除法、边折叠法和三角形折叠简化方法,本文外部轻量化方法是在边折叠算法的基础上提出一种改进思路,即对点重要性进行测度,通过推迟折叠次序,达到强调模型边界的目的。
2.1 边折叠算法及二次误差测度
边折叠算法[6]是几何元素删除法中比较常用的一种方法,其算法的核心思路是:首先通过计算每条边进行折叠时所需的代价,并对其进行排序,从代价最小的边开始对边进行折叠,直至所有边不能折叠为止。如图3所示,将1、2两点之间的直线退化成一个新点,将点1移动到新点的位置上,并将所有与2相关的边与新点相连接,最后将退化的三角形与边删除。
图3 边折叠操作示意图
二次误差度量(quadric error metrics,QEM)是由GARLAND和HECKBERT[7]在1997年提出的,利用顶点到其所连边的另一端点有序三角形环的距离平方和作为边折叠简化的度量方法,即根据边折叠后的简化模型与原始模型之间的误差来衡量其中的某一边是否能够被折叠简化。定义折叠后的简化模型与原始模型之间的误差为Δ(),则
其中,(vvv1)T;为三维空间中的一个平面0,其中222=1;()为包含与点相关联的所有三角面片所构成的集合;K为平面的二次误差测度
2.2 基于点重要度的改进算法
在对建筑运维阶段信息模型进行轻量化边折叠的过程中,边折叠的顺序是通过二次误差进行测度,并进行排序的。因此,在误差测度的过程中加入点重要度权重的因素,不改变二次型的基本性质,通过加权来改变边折叠的顺序,避免网格分布过于均匀的缺陷,加强模型轮廓部分的特征。
2.2.1 方向向量
与法向量不同,网格顶点的方向向量定义为由该顶点指向与该顶点相连的周围顶点所形成的多边形(一般为空间多边形)的重心[8],如图4所示,点与相连接的顶点1,2,–1,,+1,组成多边形,其中,点为该多边形的重心;为点的方向向量。
图4 V0点方向向量
在此定义所求点的方向向量为:以为顶点所形成的空间多边形中每条边方向向量的平均值,对于任意点、所构成的边,其方向向量=(–,–,–),则顶点的方向向量可表示为
其中,()是与相邻点的集合;是点与点所形成边的方向向量;()是与相邻点的数量。
2.2.2 点重要度
图5 方向向量与法向量示意图
因为平面的法向量与平面内任何一条直线都垂直,因此在向量,与图中虚线构成的三角形中=π/2,可推导出
π
π–π2(4)
从图5可知,随着角度的增大,即向量,所形成的夹角越大,三角面△越平缓。当角90°,即180°时,三角面△最为平缓,其角重要度为=1–cos=0;当角0°,即90°时,三角面△最为尖锐,其重要度为=1–cos=1,因此通过角重要度的定义,能够反映点附近三角面片变化情况。通过角重要度定义点的点重要度为:点与其相接三角面片角度重要性的均值
其中,为三角面△的角重要度;(N)为与点i相交的三角面片;(m)为与点相交的三角面片的数量。
2.2.3 改进算法
为了加强模型特征、避免网格分布过于均匀,需要将点重要度作为权值嵌入到二次误差的度量之中,因此基于点重要度的二次误差测度可表示为
在误差测度中引入点重要度,使得在对误差值进行测度时,不但考虑了距离偏差,也同时考虑了周围表面的变化偏差,使得尖锐区域和平缓区域的代价差距将进一步扩大,从而加强平缓区域优先进行边折叠、尖锐区域推后折叠的思想,突出模型特点,能够较好地保持模型效果。
2.3 运行结果
本方法以某别墅模型作为实验数据,实验环境为Visual Studio2012,在配置为core i3,内存4 GB的PC机上对本算法进行运行实验。模型初始网格面数量为56 930,简化结果如图6所示。
图6通过本方法,在三角面片减少的情况下,能够很好地保持建筑模型的细节特征以及外观的相似度。运行数据见表3。
表3 模型简化不同程度数据对比
表3显示别墅模型面片数量从56 930简化到40 858或简化到37 522时,别墅模型的文件大小也随之产生变化,随着面片数量的减少文件大小表现出递减的趋势,并且轻量化操作的运行速度符合模型的应用要求。
3 结束语
本文提出了一种新的建筑运维阶段信息模型的轻量化方法,不仅考虑到对建筑物网格模型进行外部轻量化,同时对于由施工阶段移交到运维阶段的BIM进行轻量化。基于有用性保留的理念,对模型内部的冗余构件进行删除,使BIM尽可能轻量化,减少运维阶段在配套硬件设施方面的成本,并同时提高模型的运行速度。
通过实验,本方法能够在不影响使用的前提下,减少模型的数据量,从而实现对运维阶段BIM进行轻量化的目的。从算法所花费的时间来看,除去由Revit模型导出为网格模型的过程花费时间较长以外,无论是内部轻量化或外部轻量化所用时间均属可接受范围。在实际使用过程中,由于Revit模型不需要频繁进行导出网格操作,因此对后续使用产生的影响较小,同时本文提出的方法具有很好的灵活性,能够根据情况进行实时修改,对于在运维阶段有特殊要求的模型也同样适用。
[1] 郝莹. 轻量化BIM应用打造数字化建造的崭新未来——访广联达软件股份有限公司副总裁、BIM中心总经理汪少山[J]. 中国勘察设计, 2015(10): 46-51.
[2] 钱海, 马小军, 来侃. 基于Revit二次开发的电气设备族平台的搭建[J]. 土木建筑工程信息技术, 2015, 7(4): 60-64.
[3] 刘晓利, 刘则毅, 高鹏东, 等. 基于尖特征度的边折叠简化算法[J]. 软件学报, 2005, 16(5): 669-675.
[4] 纪庆革, 洪炳熔, 王东木. 非均匀抽样网格简化[J]. 计算机研究与发展, 2001, 38(7): 863-869.
[5] 何晖光, 田捷. 网格模型化简综述[J]. 软件学报, 2002, 13(12): 2215-2224.
[6] LI X M, LI G G, ZHANG X L, et al. Edge collapse simplification based on subdivision [J]. Journal of Computer Aided Design and Computer Graphics, 2002, 14(1): 8-13.
[7] GARLAND M, HECKBERT P S. Surface simplification using quadric error metrics [C]// SIGGRAPH Proceedings. New York: ACM Press, 1997: 209-216.
[8] 陆国栋, 许鹏, 温星. 基于向量夹角的三角网格模型简化算法[J]. 工程设计学报, 2005, 12(2): 124-128.
[9] 贾世祥, 俞建新. 基于加权三角面法向变化的模型简化算法[J]. 系统仿真学报, 2005, 17(9): 2111-2114.
[10] 杜晓晖, 尹宝才, 孔德慧. 一种边折叠三角网格简化算法[J]. 计算机工程, 2007, 33(12): 12-15.
Simplification Method of Information Modeling in the Building Project Operation and Maintenance Stage
GUO Siyi, CHEN Yongfeng
(Xi’an University of Architecture and Technology, Xi’an Shaanxi 710055, China)
BIM technology penetration rate is much lower than the promotion efforts in our country, one of the main reasons is BIM model with large amounts of data are too demanding on computers. To solve this problem and make BIM model increasingly universal. By using the Revit API to achieve quadratic development and using the grid model simplification algorithm, the two aspect of the BIM models are quantized separately. Reduce the hardware requirements and make the BIM lifecycle model more universal. This has a great significance for BIM development in China. The result shows that this method can achieve the simplification method of BIM without affecting the use on the operation and maintenance stage.
model simplification; quadratic development; Revit API; mesh simplification; important degree of vertex
TP 391
10.11996/JG.j.2095-302X.2018010123
A
2095-302X(2018)01-0123-06
2017-06-03;
2017-07-04
郭思怡(1992–),女,陕西渭南人,硕士研究生。主要研究方向为建筑模型信息化应用。E-mail:263344099@qq.com
陈永锋(1961–),男,陕西咸阳人,教授,博士,硕士生导师。主要研究方向为信息管理与信息系统。E-mail:908511933@qq.com