李棟 王宇杰
摘? 要:建筑信息模型技術(shù)在現(xiàn)今建筑行業(yè)中有著廣泛應(yīng)用,但在技術(shù)應(yīng)用上仍有一些問題亟待解決,比如把BIM通過Web端展示將極大提高便攜性和跨平臺性。針對上述問題,提出一種基于Revit API的相對高效的BIM模型數(shù)據(jù)和材質(zhì)信息的提取方法。通過Revit API提供的函數(shù)對對象的信息結(jié)構(gòu)和獲取方法進(jìn)行研究,形成基于類型過濾的數(shù)據(jù)提取方案。所述方法實現(xiàn)了.rvt文件BIM模型和材質(zhì)信息的數(shù)據(jù)提取,可供前端展示時進(jìn)行數(shù)據(jù)庫的信息查詢、模型渲染、材質(zhì)數(shù)據(jù)顯示。
關(guān)鍵詞:BIM;三維可視化;Revit;二次開發(fā);數(shù)據(jù)庫;數(shù)據(jù)提取
Abstract:Building information modeling technology is widely used in todays construction industry. However,there are still some problems to be solved in the technical application. For example,displaying BIM through Web terminal will greatly improve portability and cross-platform. To address the above problems,a relatively efficient extraction method of BIM model data and material information based on Revit API is proposed. The information structure and acquisition method of the object are researched through the functions provided by the Revit API to form a data extraction scheme based on type filtering. The method implements data extraction of BIM model and material information from .rvt files,which can be used for database query,model rendering and material data display in front-end display.
Keywords:BIM;3D visualization;Revit;secondary development;database;data extraction
0? 引? 言
20世紀(jì)70年代,喬治亞理工學(xué)院的教授Chuck Eastman引入了BIM(建筑信息建模)的概念。中國也非常重視BIM技術(shù)的發(fā)展和應(yīng)用,國務(wù)院辦公廳2017年《關(guān)于促進(jìn)建筑業(yè)持續(xù)健康發(fā)展的意見》中也明確闡述了BIM的重要性。
BIM涉及的行業(yè)非常廣泛,不僅應(yīng)用于建筑領(lǐng)域,水利、交通等行業(yè)也得到了基本普及。作為建筑設(shè)計的新技術(shù),BIM技術(shù)使用現(xiàn)代信息技術(shù)統(tǒng)一各種資源,和實際操作聯(lián)系在一起,并將各種信息整合在三維模型數(shù)據(jù)庫的設(shè)計、建設(shè)、運(yùn)營和完成建筑的整個過程中,從而有效地解決了建筑從設(shè)計、建設(shè)到運(yùn)營、維護(hù)的整體協(xié)同工作的問題。
中國的BIM技術(shù)應(yīng)用起步較晚,直到2005年,歐特克為推廣其軟件在國內(nèi)宣傳BIM進(jìn)入中國,BIM的概念才逐漸在國內(nèi)得到認(rèn)知?!?010中國商業(yè)地產(chǎn)BIM應(yīng)用研究報告》和《2011中國工程建設(shè)BIM應(yīng)用研究報告》在一定程度上說明了BIM在中國工程建筑行業(yè)的發(fā)展現(xiàn)狀。根據(jù)這兩份報告,國內(nèi)建筑行業(yè)對于BIM的認(rèn)知水平從2010年的60%上升到2011年的87%。2011年,共有39%的單位表示他們使用過BIM相關(guān)的軟件,其中大部分是設(shè)計單位。到2020年底,甲級勘察、設(shè)計單位以及特級、一級房屋建筑工程施工企業(yè)應(yīng)掌握和實現(xiàn)BIM與企業(yè)管理系統(tǒng)的集成應(yīng)用程序和其他信息技術(shù)。建筑信息模型技術(shù)是建筑業(yè)信息化的體現(xiàn),BIM技術(shù)可將施工周期所有數(shù)據(jù)信息整合,為施工過程做好前期工作,同時,電子內(nèi)容減少了信息格式與紙質(zhì)文件轉(zhuǎn)換,可極大方便人員作業(yè),因此BIM技術(shù)也越來越受到行業(yè)重視。
但在上述背景和實際項目需求下,BIM作為一項快速發(fā)展的技術(shù),仍有一些問題亟待解決。例如,眾多BIM以Autodesk公司的Revit軟件為工具進(jìn)行制作,其保存的.rvt格式文件只能在Revit軟件內(nèi)查看,便攜性較差,存在客戶端軟件固有的缺點。
若使用B/S架構(gòu)將BIM置于Web端進(jìn)行展示,則能夠極大方便設(shè)計和施工人員查看。故本文提出一種方法,可將.rvt格式模型文件的關(guān)鍵數(shù)據(jù)提取出來以供Web端展示所用。
本課題小組隸屬于成都理工大學(xué)信息科學(xué)與技術(shù)學(xué)院軟件工程系,在合作項目的建筑施工設(shè)計階段遇到設(shè)計溝通煩瑣、效率低下等問題,故開展此項研究,以解決BIM展示方式單一等問題,從而節(jié)省時間的目的。項目整體流程大致為“數(shù)據(jù)提取-信息持久化-渲染展示”。前期任務(wù)主要是確定提取方法和信息持久化數(shù)據(jù)結(jié)構(gòu),即所述研究內(nèi)容,并為課題小組內(nèi)其他后續(xù)研究如“Revit幾何模型提取與Web可視化研究”提供基礎(chǔ)。
1? 基于Revit API數(shù)據(jù)提取方法介紹
1.1? Revit API簡介
Revit API是Autodesk公司為開發(fā)者提供的Revit應(yīng)用程序的開發(fā)接口,為開發(fā)者基于Revit軟件的二次開發(fā)工作提供了強(qiáng)有力的支持。Revit為開發(fā)者提供了豐富而強(qiáng)大的.net API,可用于自動化重復(fù)性的任務(wù),擴(kuò)展Revit的核心功能。Revit提供的.net API允許用戶使用VB.NET、C#和C++/CLI等任何.net兼容的語言進(jìn)行編程。
1.2? Revit API的優(yōu)點
通過Revit API可以極大程度地將Revit的強(qiáng)大功能應(yīng)用在其他平臺上,可以更高效的二次開發(fā),實現(xiàn)性能、便捷等方面需求。它使用兩種方式來擴(kuò)展Revit功能:一種是Revit自帶的,使用Revit API中直接為開發(fā)者提供的函數(shù);另一種是開發(fā)者自行編寫。本文所述方法利用Revit API使用數(shù)據(jù)名稱進(jìn)行查找訪問所需數(shù)據(jù)。
1.3? 數(shù)據(jù)提取方法
在Revit中有一個重要概念——族(family)。本文所述的方法即使用Revit API依次確定族類別、族類型、族實例。
首先使用類型過濾,即可得到每種數(shù)據(jù)類型。根據(jù)得到數(shù)據(jù)類型的不同,使用相應(yīng)的用于獲取數(shù)據(jù)的Revit API函數(shù)進(jìn)行數(shù)據(jù)提取。程序運(yùn)行過程中函數(shù)返回的結(jié)果存放于內(nèi)存中,待模型信息和顏色信息提取完成寫入JSON文件持久化保存,材質(zhì)預(yù)算等信息在提取完成后存入搭建好相應(yīng)表結(jié)構(gòu)的MySQL數(shù)據(jù)庫。兩部分?jǐn)?shù)據(jù)在Web端展示時可由系統(tǒng)同時調(diào)用組合展示。
2? 數(shù)據(jù)提取主要方法
2.1? 設(shè)計思路
本小節(jié)介紹數(shù)據(jù)提取的思路要點和注意事項。主要思路為使用Revit API提供方法提取BIM中的數(shù)據(jù)屬性信息和模型信息,存放在已建立完整數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)庫表中。實現(xiàn)過程需要注意以下要點:
(1)一般的BIM模型材質(zhì)信息都十分復(fù)雜、細(xì)節(jié)較多,所以對于建筑模型中的各項具體構(gòu)件,將其在數(shù)據(jù)庫中按一定規(guī)則進(jìn)行存放;
(2)將模型的圖形構(gòu)建信息和模型各材質(zhì)的參數(shù)屬性信息分開提取,模型文件變?yōu)榧儓D形文件,不帶任何參數(shù)信息,存放在本地或服務(wù)器中。各構(gòu)件屬性信息通過其ID訪問,由其對應(yīng)的Revit API獲取其材質(zhì)參數(shù)(若是在Revit API中沒有對應(yīng)的參數(shù),需要先在該文件中寫好),提取后放入各構(gòu)件所對應(yīng)的數(shù)據(jù)表中;
(3)構(gòu)件的信息除自身擁有的由數(shù)據(jù)提取所需的ID外還映射對應(yīng)模型的ID及對其信息文件的操作所需的ID,并為所有的映射建立一個映射表。
2.2? 數(shù)據(jù)庫設(shè)計
以建筑的詞匯按照規(guī)定的建筑語法進(jìn)行構(gòu)建設(shè)計的建筑能給人們帶來更為直觀的感受,所以在龐大的建筑詞匯中,有必要歸納總結(jié)出一些常用的詞匯,便于設(shè)計和使用,從而提高工作效率。故根據(jù)Revit自身元素參數(shù)進(jìn)行分類,以常用參數(shù)舉例,如:墻體(wall)、樓板(floor)、柱(column)、屋頂(roof)等常用結(jié)構(gòu)構(gòu)件以及門(door)、窗(window)、家具(elseelement)、植物(plant)等附著構(gòu)件。本文提出的方法需要對數(shù)據(jù)庫進(jìn)行設(shè)計實現(xiàn),將整理設(shè)計好的建筑詞匯制作成數(shù)據(jù)庫表的形式添加所需數(shù)據(jù)列,其數(shù)據(jù)結(jié)構(gòu)如圖1所示。
運(yùn)用Revit API將需提取的元素參數(shù)數(shù)據(jù)存入數(shù)據(jù)庫中并標(biāo)記所屬模型ID和所屬用戶ID以實現(xiàn)多用戶和多模型數(shù)據(jù)。
由于Revit二次開發(fā)是以C#進(jìn)行代碼編程的,因此本課題選取了SqlSugar ORM作為數(shù)據(jù)庫連接訪問庫,其優(yōu)勢在于以下幾點:
(1)高性能,達(dá)到原生最高水準(zhǔn),比SqlHelper性能要高,比Dapper快30%,比EF快50%;
(2)支持多種數(shù)據(jù)庫,可以在多種數(shù)據(jù)庫中用一種編程方式;
(3)支持.netCore;
(4)支持多庫并行計算;
(5)帶有實體生成函數(shù)和T4模版生成實體;
(6)無須任何配置,主鍵可為若干個;
(7)輕量級,一個DLL只有150 kB,一個EFDLL有5 MB,一個EF擴(kuò)展DLL有500多kB。
因此在眾多.NET框架中,SqlSugar ORM是較為容易使用的數(shù)據(jù)庫訪問庫。運(yùn)用所給出的API可以很好地實現(xiàn)本文中所述方法對數(shù)據(jù)的處理。
2.3? 實現(xiàn)過程
為實現(xiàn)數(shù)據(jù)的分別提取,并盡可能減少程序運(yùn)行時的負(fù)擔(dān),提高數(shù)據(jù)存取速度,實現(xiàn)對Revit API高效二次開發(fā)的目的,該小節(jié)設(shè)計實現(xiàn)了一個將基本功能進(jìn)行封裝的插件。插件的工作流程如圖2所示。
圖2? 插件工作流程圖
對于自動和手動兩套工作流程需要以下兩點說明:
(1)使用自動模式和手動模式兩種方式對應(yīng)不同的功能,自動模式下插件自動與客戶端建立連接并由客戶發(fā)送命令完成相應(yīng)操作,手動模式下需要用戶自行操作;
(2)插件的輸入數(shù)據(jù)為Revit文件地址,輸出數(shù)據(jù)通過寫入導(dǎo)出新的JSON文件所存放的地址確定(自動模式下文件的訪問路徑和生成JSON文件的路徑都是默認(rèn)選擇路徑)。導(dǎo)出方式可提供僅數(shù)據(jù)導(dǎo)出、僅模型導(dǎo)出、全部導(dǎo)出三種導(dǎo)出方式。
2.4? 提取效果
對數(shù)據(jù)進(jìn)行分別提取后,可以將模型的Web端展示。在Web端展示的三維模型可以通過對構(gòu)件的點擊選擇查看對應(yīng)的參數(shù)信息,如圖3所示。
3? 結(jié)? 論
通過對Revit API的二次開發(fā)可以有效地將BIM模型的材質(zhì)屬性數(shù)據(jù)與三維圖形數(shù)據(jù)分離,并分別保存,關(guān)系型數(shù)據(jù)庫能夠?qū)崿F(xiàn)各屬性值相互關(guān)聯(lián)的存儲辦法。數(shù)據(jù)部分可單獨用于數(shù)據(jù)分析,模型部分可結(jié)合屬性參數(shù)用于網(wǎng)頁端快速展示。該提取技術(shù)在一定程度上提高了BIM模型的加載速度,簡化了參數(shù)信息的獲取,模型信息和參數(shù)信息既單獨存儲用又同步加載展示,在智能建造領(lǐng)域有引鑒之處。
參考文獻(xiàn):
[1] 陶婉婉.基于二次開發(fā)方法的BIM模型數(shù)據(jù)提取方法研究 [J].價值工程,2019,38(8):159-161.
[2] 鐘輝,李馳,孫紅,等.面向BIM模型二次開發(fā)數(shù)據(jù)提取與應(yīng)用技術(shù) [J].沈陽建筑大學(xué)學(xué)報(自然科學(xué)版),2019,35(3):560-566.
[3] 伍丹琪,陳俊濤,肖明.基于Revit二次開發(fā)的泵站廠房參數(shù)化BIM解決方案 [J].水電與新能源,2019,33(4):15-18+68.
[4] 陳志楊,羅飛.基于WebGL的Revit三維建筑模型重建 [J].浙江工業(yè)大學(xué)學(xué)報,2016,44(6):608-613.
[5] 陳寧.試析Revit三維顯示技術(shù)的開發(fā)與應(yīng)用 [J].數(shù)字技術(shù)與應(yīng)用,2019,37(1):117-118.
[6] 王鳳起.BIM技術(shù)應(yīng)用發(fā)展研究報告 [J].建筑技術(shù),2017,48(11):1124-1126.
[7] 包行健.BIM技術(shù)在建筑設(shè)計中運(yùn)用和發(fā)展趨勢 [J].中國室內(nèi)裝飾裝修天地,2019(24):177.
作者簡介:李棟(1998.11—),男,漢族,河北保定人,本科在讀,研究方向:軟件工程。