郭思怡,陳永鋒
?
建筑運維階段信息模型的輕量化方法
郭思怡,陳永鋒
(西安建筑科技大學,陜西 西安 710055)
BIM技術引入我國以來,在建設項目中的普及率遠低于推廣的力度,導致這種現(xiàn)狀的原因之一,是貫穿全生命周期的BIM模型擁有大量的數(shù)據,對計算機的要求過高。通過利用Revit API外部功能擴展方式實現(xiàn)二次開發(fā),以及使用網格模型簡化算法從內外兩方面分別對建筑運維階段信息模型進行輕量化處理,降低使用時對硬件的要求,使BIM全生命周期模型更加具有普適性,對BIM在國內的發(fā)展具有相當?shù)囊饬x。實驗結果證實,該方法能夠在不影響運維階段使用的情況下,實現(xiàn)建筑信息模型的輕量化。
模型輕量化;二次開發(fā);Revit API;網格簡化;點重要度
我國首個真正意義上的建筑生命周期管理(product lifecycle management,PLM)實驗室在2004年成立于哈爾濱工業(yè)大學,自此以后,建筑信息模型(building information modeling,BIM)技術在我國逐步得到發(fā)展,其發(fā)展大致分為3個階段,2005年前后為導入期;2006-2011年為BIM1.0時期;2012年至今為BIM2.0階段[1]。在BIM2.0階段,住房和城鄉(xiāng)建設部發(fā)布的《關于推進建筑信息模型應用的指導意見》中提出對BIM技術發(fā)展的展望:“到2020年末,建筑行業(yè)甲級勘察、設計單位以及特級、一級房屋建筑工程施工企業(yè)應掌握并實現(xiàn)BIM與企業(yè)管理系統(tǒng)和其他信息技術的一體化集成應用,新立項以國有資金投資為主的大中型建筑、申報綠色建筑的公共建筑和綠色生態(tài)示范小區(qū),項目勘察設計、施工、運營維護中,集成應用BIM的項目比率達到90%?!?/p>
BIM技術能夠貫穿建筑的規(guī)劃、設計、施工以及運維等全生命周期,實現(xiàn)各階段數(shù)據的共享。建筑運維階段的管理可以通過BIM技術與運營維護系統(tǒng)相結合,對建筑的空間、設備資產等進行科學管理,對可能發(fā)生的災害進行預防,降低運營維護成本[2],其主要包括空間管理、資產管理、維護管理、公共安全管理和能耗管理[3]。運維階段需要對建筑的實時數(shù)據進行收集,進而進行更好地管理。建筑全生命周期信息模型為運維階段提供了龐大的數(shù)據支持,通過對前期數(shù)據進行查詢和理解,能夠使運營維護人員更好地預見和解決運維階段所面臨的問題。
BIM的建模需要建筑、結構、水、暖、電各專業(yè)進行協(xié)同工作,可在工作集模式或模型鏈接模式運行。模型鏈接模式是比較常用的協(xié)同方式,即將模型進行分階段、分專業(yè)編輯和保存,并使用鏈接實現(xiàn)信息的協(xié)同,但是模型鏈接模式很顯然增加了信息使用的復雜度,降低了運行效率。理論上,工作集模式是最理想的工作方式,能夠通過中心模型,很容易進行參照和協(xié)同工作,但由于中心模型擁有龐大的數(shù)據信息,從而對計算機硬件性能要求較高。因此,在BIM2.0階段,輕量化應用的概念被提出,由于模型過大而產生的劣勢,通過輕量化處理,能夠降低工作集模式助推工作集模式的實際應用。
在建筑的全生命周期中,運維階段占其絕大部分,會產生大量的運維信息。而模型在使用過程中,由于對數(shù)據的實時更新程度要求較高,所以運行速度將是一個關鍵因素。因此對運維階段的BIM進行輕量化研究,不但能夠突出運行速度提高、使用成本降低等核心優(yōu)勢,也同樣能夠以此為例探尋其他階段的輕量化應用,助推BIM在國內的發(fā)展。本文通過Revit軟件建立BIM模型,從內外兩方面對模型進行輕量化處理。
對建筑的運維階段信息模型進行內部輕量化處理,就是對模型數(shù)據庫中冗余數(shù)據進行刪除操作。BIM在移交到運維階段之前,施工階段會根據施工的需要,在設計的基礎上對信息模型進行相應的優(yōu)化和完善,以實現(xiàn)施工階段的提質增效、降低成本,比如管線排布的優(yōu)化、鋼結構節(jié)點的深化等,這些被完善的信息涵括了很多方面,形成一個可供查詢和使用的巨大數(shù)據庫,但是對于運維階段而言,這個數(shù)據庫中存在的一部分信息可能會不使用或者使用頻率極低,這部分信息對于建筑運維階段信息模型的使用是冗余的。通過對數(shù)據庫中的信息進行篩選,舍去相對而言不重要的數(shù)據,以達到減輕數(shù)據庫的目的,從而實現(xiàn)模型的內部輕量化。
Revit系列軟件是Autodesk公司在建筑工程領域實現(xiàn)BIM技術的核心產品,Revit作為一款強大的建筑行業(yè)設計軟件,提供了非常強大和完善的三維建模能力,支持創(chuàng)建大型的復雜項目。本文選取Revit軟件所建BIM模型作為研究對象,對于一個完整的建筑信息模型而言,手動進行刪除操作,將會是一件沒有效率且勞動量十分巨大的事情,鑒于Autodesk公司為了滿足用戶的個體需求,提供了非常方便的二次開發(fā)功能,因此本節(jié)內部輕量化的內容通過Revit軟件的二次開發(fā)來完成,基于軟件Autodesk Revit2014,主要開發(fā)工具為Visual Studio2012和Revit SDK。
Revit軟件二次開發(fā)的主要方式包括:其一,外部命令方式(external command),調用DLL文件載入一個Revit命令,用戶通過點擊附加模塊中外部工具的Add-In Manager按鈕進行執(zhí)行;其二,外部應用方式(external application),能夠在Revit啟動或關閉時實現(xiàn)自動運行。本文采用的是第一種方式,其具體步驟如下:
(1) 建立項目。打開Visual Studio2014,新建C#類庫,對其進行命名,并為生成的class1.cs文件進行重命名;
(2) 添加外部引用并引用命名空間。選擇Revit2014目錄下的RevitAPI.dll和RevitAPIUI.dll文件進行引用,并在命名空間代碼區(qū)添加Autodesk. Revit.DB、Autodesk.Revit.UI等相應語句,對RevitAPI中相關的命名空間進行引用;
(3) 新建類、重載Execute()方法。選擇文件事物、更新等模式,創(chuàng)建一個從IExternalCommand派生的類。在類中載用Execute()方法,添加用戶程序,編譯代碼;
(4) 運行。代碼編譯成功后生成DLL文件,在Revit中使用附加模塊中的外部工具(Add-In Manager),選擇相應的加載方式運行DLL文件,查看程序功能是否滿足要求。
基于無用性刪除的觀念,在Revit模型中進行冗余信息的清除操作,主要步驟包括:第一步為確定冗余構件,可以通過在運維階段構件的使用頻率確定構件的權重,定義小于設定權重的構件為冗余構件;第二步對冗余構件進行刪除。重點探討第二步的刪除操作,其核心分為兩步:①獲取所需要刪除的對象合集;②對獲取的合集進行刪除。
1.2.1 獲取冗余構件合集
Revit提供一個用于搜索、過濾和迭代元素的類FilteredElementCollector Class,能夠實現(xiàn)對文檔中的元素對象進行過濾的所有功能,添加過濾條件后,滿足條件的對象就可以從這個類進行訪問,Revit可以通過3種用法實現(xiàn)FilteredElementCollector過濾,過濾的方法、條件、范圍、特點及實例見表1。
表1 FilteredElementCollector的3種方法[2]
以窗為例,通過窗構件工作集獲取建筑中窗戶的數(shù)量,部分代碼如下:
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為通過運行代碼獲得的窗戶總數(shù)量,該建筑物中共有6扇窗戶。
1.2.2 對獲取的集合進行刪除
借助過濾器FilteredElementCollector獲得所需要的構件集合,并對集合中的元素進行刪除。從Revit幫助文檔中獲得對象刪除函數(shù)Delete(),因此在對獲取的幾何進行刪除時,通過枚舉Ienumerator()和刪除Delete()實現(xiàn)對集合中元素的逐一刪除。
圖1 篩選后工作集中窗構件的數(shù)量
同樣以窗為例,已知需刪除的集合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,可以實現(xiàn)對建筑物中窗戶構件直接刪除的操作,運行結果如圖2所示。
圖2 運行外部應用文件對窗構件進行刪除
在內部輕量化的過程中,擬設定門、窗兩個建筑構件作為冗余構件進行結果檢驗,使用FilteredElementCollector Class對Revit模型中所有的構件進行遍歷,Delete()函數(shù)進行刪除,運行數(shù)據見表2。
表2 Revit模型簡化前后數(shù)據對比
從表2中可以看出,通過對冗余構件進行刪除,模型文件大小變化幅度較為明顯,并且運行時間在可接受范圍之內。通過上述方法能夠對運維階段不需要的冗余數(shù)據進行快速刪除操作,實現(xiàn)運維階段模型的內部輕量化,達到減少模型占用內存、提高模型使用效率的目的,并為下一步運維階段模型的外部輕量化打下基礎。
在建筑運維階段信息模型的輕量化過程中,對Revit模型進行冗余構件刪減操作以形成內部輕量化運維模型之后,還需考慮對模型進行更進一步的外部輕量化操作,即對運維階段建筑信息的模型通過數(shù)學方法進行簡化處理,以更少的三角面片保證建筑模型外觀相似性。
網格模型輕量化國內外諸多學者都已進行過深入地研究,并且在這方面取得了不少成果,其研究的3D模型通常形狀較為復雜,比如劉曉利等[3]、紀慶革等[4]在此方面的相關論文中引用的實例Bunny、Cow或部分影像方向的論文中引用的人體某器官模型等。但是在建筑信息模型中,模型內部涉及構配件譬如水、暖、電等許多方面,這些構配件通常形狀比較規(guī)則,模型外部涉及建筑外表面形狀相比較人體器官等模型而言平坦區(qū)域占比也更大,因此在建筑信息模型中的網格模型輕量化更加強調邊緣與輪廓。網格模型簡化算法有多種分類,大致可以分為靜態(tài)和動態(tài)兩種化簡方法,動態(tài)化簡是靜態(tài)化簡的延續(xù),很多基本操作都采用的是靜態(tài)化簡的方法[5]。靜態(tài)化簡方法中幾何元素刪除法是應用較為廣泛的一種方法,其中包含頂點刪除法、邊折疊法和三角形折疊簡化方法,本文外部輕量化方法是在邊折疊算法的基礎上提出一種改進思路,即對點重要性進行測度,通過推遲折疊次序,達到強調模型邊界的目的。
邊折疊算法[6]是幾何元素刪除法中比較常用的一種方法,其算法的核心思路是:首先通過計算每條邊進行折疊時所需的代價,并對其進行排序,從代價最小的邊開始對邊進行折疊,直至所有邊不能折疊為止。如圖3所示,將1、2兩點之間的直線退化成一個新點,將點1移動到新點的位置上,并將所有與2相關的邊與新點相連接,最后將退化的三角形與邊刪除。
圖3 邊折疊操作示意圖
二次誤差度量(quadric error metrics,QEM)是由GARLAND和HECKBERT[7]在1997年提出的,利用頂點到其所連邊的另一端點有序三角形環(huán)的距離平方和作為邊折疊簡化的度量方法,即根據邊折疊后的簡化模型與原始模型之間的誤差來衡量其中的某一邊是否能夠被折疊簡化。定義折疊后的簡化模型與原始模型之間的誤差為Δ(),則
其中,(vvv1)T;為三維空間中的一個平面0,其中222=1;()為包含與點相關聯(lián)的所有三角面片所構成的集合;K為平面的二次誤差測度
在對建筑運維階段信息模型進行輕量化邊折疊的過程中,邊折疊的順序是通過二次誤差進行測度,并進行排序的。因此,在誤差測度的過程中加入點重要度權重的因素,不改變二次型的基本性質,通過加權來改變邊折疊的順序,避免網格分布過于均勻的缺陷,加強模型輪廓部分的特征。
2.2.1 方向向量
與法向量不同,網格頂點的方向向量定義為由該頂點指向與該頂點相連的周圍頂點所形成的多邊形(一般為空間多邊形)的重心[8],如圖4所示,點與相連接的頂點1,2,–1,,+1,組成多邊形,其中,點為該多邊形的重心;為點的方向向量。
圖4 V0點方向向量
在此定義所求點的方向向量為:以為頂點所形成的空間多邊形中每條邊方向向量的平均值,對于任意點、所構成的邊,其方向向量=(–,–,–),則頂點的方向向量可表示為
其中,()是與相鄰點的集合;是點與點所形成邊的方向向量;()是與相鄰點的數(shù)量。
2.2.2 點重要度
圖5 方向向量與法向量示意圖
因為平面的法向量與平面內任何一條直線都垂直,因此在向量,與圖中虛線構成的三角形中=π/2,可推導出
π
π–π2(4)
從圖5可知,隨著角度的增大,即向量,所形成的夾角越大,三角面△越平緩。當角90°,即180°時,三角面△最為平緩,其角重要度為=1–cos=0;當角0°,即90°時,三角面△最為尖銳,其重要度為=1–cos=1,因此通過角重要度的定義,能夠反映點附近三角面片變化情況。通過角重要度定義點的點重要度為:點與其相接三角面片角度重要性的均值
其中,為三角面△的角重要度;(N)為與點i相交的三角面片;(m)為與點相交的三角面片的數(shù)量。
2.2.3 改進算法
為了加強模型特征、避免網格分布過于均勻,需要將點重要度作為權值嵌入到二次誤差的度量之中,因此基于點重要度的二次誤差測度可表示為
在誤差測度中引入點重要度,使得在對誤差值進行測度時,不但考慮了距離偏差,也同時考慮了周圍表面的變化偏差,使得尖銳區(qū)域和平緩區(qū)域的代價差距將進一步擴大,從而加強平緩區(qū)域優(yōu)先進行邊折疊、尖銳區(qū)域推后折疊的思想,突出模型特點,能夠較好地保持模型效果。
本方法以某別墅模型作為實驗數(shù)據,實驗環(huán)境為Visual Studio2012,在配置為core i3,內存4 GB的PC機上對本算法進行運行實驗。模型初始網格面數(shù)量為56 930,簡化結果如圖6所示。
圖6通過本方法,在三角面片減少的情況下,能夠很好地保持建筑模型的細節(jié)特征以及外觀的相似度。運行數(shù)據見表3。
表3 模型簡化不同程度數(shù)據對比
表3顯示別墅模型面片數(shù)量從56 930簡化到40 858或簡化到37 522時,別墅模型的文件大小也隨之產生變化,隨著面片數(shù)量的減少文件大小表現(xiàn)出遞減的趨勢,并且輕量化操作的運行速度符合模型的應用要求。
本文提出了一種新的建筑運維階段信息模型的輕量化方法,不僅考慮到對建筑物網格模型進行外部輕量化,同時對于由施工階段移交到運維階段的BIM進行輕量化?;谟杏眯员A舻睦砟?,對模型內部的冗余構件進行刪除,使BIM盡可能輕量化,減少運維階段在配套硬件設施方面的成本,并同時提高模型的運行速度。
通過實驗,本方法能夠在不影響使用的前提下,減少模型的數(shù)據量,從而實現(xiàn)對運維階段BIM進行輕量化的目的。從算法所花費的時間來看,除去由Revit模型導出為網格模型的過程花費時間較長以外,無論是內部輕量化或外部輕量化所用時間均屬可接受范圍。在實際使用過程中,由于Revit模型不需要頻繁進行導出網格操作,因此對后續(xù)使用產生的影響較小,同時本文提出的方法具有很好的靈活性,能夠根據情況進行實時修改,對于在運維階段有特殊要求的模型也同樣適用。
[1] 郝瑩. 輕量化BIM應用打造數(shù)字化建造的嶄新未來——訪廣聯(lián)達軟件股份有限公司副總裁、BIM中心總經理汪少山[J]. 中國勘察設計, 2015(10): 46-51.
[2] 錢海, 馬小軍, 來侃. 基于Revit二次開發(fā)的電氣設備族平臺的搭建[J]. 土木建筑工程信息技術, 2015, 7(4): 60-64.
[3] 劉曉利, 劉則毅, 高鵬東, 等. 基于尖特征度的邊折疊簡化算法[J]. 軟件學報, 2005, 16(5): 669-675.
[4] 紀慶革, 洪炳熔, 王東木. 非均勻抽樣網格簡化[J]. 計算機研究與發(fā)展, 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]. 系統(tǒng)仿真學報, 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–),男,陜西咸陽人,教授,博士,碩士生導師。主要研究方向為信息管理與信息系統(tǒng)。E-mail:908511933@qq.com