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