国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Revit幾何模型提取與Web可視化研究

2020-02-22 03:10羅文任玉春胡耀文
現(xiàn)代信息科技 2020年17期
關(guān)鍵詞:二次開發(fā)

羅文 任玉春 胡耀文

摘? 要:BIM技術(shù)是建筑產(chǎn)業(yè)信息化的關(guān)鍵性技術(shù),Revit以其提供豐富的二次開發(fā)API等特點(diǎn),在市場中占有絕對(duì)優(yōu)勢。在瀏覽器中展示Revit三維模型有利于開發(fā)公司對(duì)于項(xiàng)目的設(shè)計(jì)、施工、運(yùn)維等的掌控,因此該方向的研究對(duì)建筑行業(yè)很有意義。文章通過對(duì)Revit API的解析與二次開發(fā)進(jìn)行研究,實(shí)現(xiàn)將三維建筑模型的幾何模型與數(shù)據(jù)模型的分離,將數(shù)據(jù)模型存儲(chǔ)于MySQL數(shù)據(jù)庫,幾何模型存儲(chǔ)為JSON文件,在Web端使用Three.js對(duì)JSON文件解析渲染,從而在瀏覽器端實(shí)現(xiàn)三維模型的重建。

關(guān)鍵詞:BIM;WebGL;Revit;二次開發(fā);Three.js

中圖分類號(hào):TP391.7? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)17-0017-03

Abstract:BIM Technology is the key technology of construction industry informatization. With its rich secondary development API and other characteristics,Revit has an absolute advantage in the market. Displaying the 3D model of Revit in the browser is conducive to the development companys control over the design,construction,operation and maintenance of the project,so the research in this direction is of great significance to the construction industry. Through the research on the analysis and secondary development of the Revit API,the geometric model and data model of 3D building model are separated. The data model is stored in MySQL database,and the geometric model is stored as JSON file,which is used on the Web Three.js by parsing and rendering the JSON file,the 3D model can be reconstructed in the browser.

Keywords:BIM;WebGL;Revit;secondary development;Three.js

0? 引? 言

BIM(建筑信息模型)技術(shù)是指利用BIM的特征改進(jìn)建筑工程從設(shè)計(jì)到施工以及運(yùn)維等一系列過程的技術(shù),其在建筑設(shè)計(jì)領(lǐng)域內(nèi)被廣泛討論。建筑產(chǎn)業(yè)升級(jí)和高質(zhì)量發(fā)展的根本途徑是信息化和工業(yè)化的深度融合,BIM技術(shù)是建筑產(chǎn)業(yè)信息化的關(guān)鍵性基礎(chǔ)技術(shù),其被廣泛認(rèn)為是21世紀(jì)建筑產(chǎn)業(yè)創(chuàng)新發(fā)展的關(guān)鍵技術(shù),是現(xiàn)代和未來建筑行業(yè)從業(yè)者需要學(xué)習(xí)和掌握的基本技能[1]。

Revit Architecture是由Autodesk公司開發(fā)的針對(duì)建筑行業(yè)的BIM工具,其因圖形化創(chuàng)建參數(shù)化構(gòu)件和模型信息高度一致性的兩大特色,再加上其強(qiáng)大的API接口便于開發(fā)者能根據(jù)自身項(xiàng)目進(jìn)行不同功能開發(fā)等優(yōu)點(diǎn),在市場中占有絕對(duì)優(yōu)勢,國內(nèi)從央企到地方企業(yè)對(duì)于Revit的應(yīng)用也是非常普遍的[2-4]。

但是,Revit模型文件只能在Revit軟件中進(jìn)行瀏覽和編輯,而很多時(shí)候人們需要通過網(wǎng)絡(luò)共享和顯示Revit模型,如果能將模型與復(fù)雜的建模軟件分離,用輕便的網(wǎng)頁形式將其展現(xiàn)出來并保證信息的完整性,同時(shí)提供實(shí)現(xiàn)Web程序與模型之間信息交互的接口,這樣開發(fā)和運(yùn)維工作就可以充分利用Web技術(shù)的普及性和強(qiáng)大功能,大大提高了BIM開發(fā)和運(yùn)維工作的效率,目前已有一些基于Web的Revit展示平臺(tái)[5-7]。

為了滿足建筑行業(yè)內(nèi)部不同細(xì)分領(lǐng)域的需求,Revit Architecture軟件提供了大量的API,供開發(fā)者針對(duì)當(dāng)前項(xiàng)目的實(shí)際情況進(jìn)行自主研發(fā),自主研究和開發(fā)Revit模型展示平臺(tái)有利于開發(fā)公司對(duì)于項(xiàng)目設(shè)計(jì)、施工、運(yùn)維等步驟的掌控,能極大地提高工作效率。

因此,筆者通過對(duì)Revit API的解析與二次開發(fā)以及對(duì)對(duì)象的信息結(jié)構(gòu)和獲取方法進(jìn)行研究,通過對(duì)Revit API的解析與二次開發(fā)以及對(duì)對(duì)象的信息結(jié)構(gòu)和獲取方法進(jìn)行研究,形成基于類型過濾的數(shù)據(jù)提取方法,從而實(shí)現(xiàn)幾何模型重建,并且通過數(shù)據(jù)庫連通前后端,實(shí)現(xiàn)自定義的交互功能。

1? 基于WebGL的幾何模型重建

1.1? 幾何模型與數(shù)據(jù)模型分離

1.1.1? Revit文件插件處理流程

Revit API是Autodesk公司為開發(fā)者提供的Revit應(yīng)用程序的開發(fā)接口,支持C#的二次開發(fā),供開發(fā)者根據(jù)項(xiàng)目實(shí)際情況進(jìn)行自主研發(fā)。Revit API通過兩種方式來擴(kuò)展Revit功能:一種是Revit自帶的,使用Revit API中直接為開發(fā)者提供的函數(shù);另一種是開發(fā)者自行編寫的。本文結(jié)合了兩種方式,共同實(shí)現(xiàn)插件的開發(fā)。

整個(gè)插件運(yùn)行過程如圖1所示,Revit文件處理插件通過手動(dòng)添加處理文件的方式將需處理Revit文件信息傳至后臺(tái)。后臺(tái)在接收到文件后,可通過文件地址、名稱、處理方式等信息自動(dòng)讀取Revit文件,通過判斷所選擇的處理方式,調(diào)用不同的導(dǎo)出函數(shù)dataexporter.Execute()(圖中a)或jsonexport.Execute()(圖中b)。另外,當(dāng)選擇同時(shí)導(dǎo)出方式時(shí)(圖中c),利用多線程的形式使得兩部分?jǐn)?shù)據(jù)可同時(shí)導(dǎo)出。

需要注意的是,一般的BIM模型材質(zhì)信息都十分復(fù)雜、細(xì)節(jié)較多,所以對(duì)于建筑模型中的各項(xiàng)具體構(gòu)件,需將其在數(shù)據(jù)庫中按一定規(guī)則進(jìn)行存放;此外,將模型的幾何構(gòu)建信息與構(gòu)件的數(shù)據(jù)信息分離,幾何模型只包含圖形等文件,不帶任何參數(shù)信息。

1.1.2? Revit數(shù)據(jù)模型提取流程

本文設(shè)計(jì)的屬性數(shù)據(jù)提取方式可分為三步操作:

第一步,對(duì)Revit元素進(jìn)行分類,通過分類整理的數(shù)據(jù)列,本文可很好地依次進(jìn)行元素參數(shù)的提取;

第二步,運(yùn)用Revit API提供的各種過濾器將本文需要導(dǎo)出的數(shù)據(jù)過濾出來,并進(jìn)入具體的參數(shù)提取函數(shù);

第三步,進(jìn)行具體的元素參數(shù)獲取,通過API實(shí)現(xiàn)具體參數(shù)數(shù)值的導(dǎo)出入庫,從而完成對(duì)數(shù)據(jù)的獲取。

1.2? 幾何模型存儲(chǔ)成JSON文件

在進(jìn)行三維幾何模型數(shù)據(jù)的提取時(shí),考慮到其中間文件既需要能夠保存Revit文件中幾何模型的數(shù)據(jù),又需要是能被WebGL接受的數(shù)據(jù)格式[8,9],本文選擇使用JSON格式的中間文件進(jìn)行幾何模型數(shù)據(jù)的存儲(chǔ)。

1.2.1? 幾何模型的構(gòu)建

由于導(dǎo)出的幾何模型是以JSON格式文件進(jìn)行數(shù)據(jù)存儲(chǔ),并用于后期Three.js的讀取,因此需要遵照Three.js的標(biāo)準(zhǔn)格式進(jìn)行生成。依據(jù)此標(biāo)準(zhǔn)格式并結(jié)合Revit內(nèi)部數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)了符合需求的JSON模板,其內(nèi)部主要包含有以下四類數(shù)據(jù):

(1)Metadata:當(dāng)前模型的相關(guān)信息以及生成的工具信息。

(2)Geometries:存儲(chǔ)當(dāng)前模型所包含的頂點(diǎn)信息與拓?fù)湫畔ⅰ?/p>

(3)Materials:存儲(chǔ)當(dāng)前模型所使用的材質(zhì)的數(shù)組。

(4)Object:當(dāng)前模型的結(jié)構(gòu)以及標(biāo)示所應(yīng)用到的材質(zhì)和幾何體標(biāo)示。

1.2.2? 導(dǎo)出功能實(shí)現(xiàn)

首先,Revit API實(shí)例在進(jìn)行格式轉(zhuǎn)換后需要以字符串的形式存儲(chǔ)在JSON文件中以便于Three.js加載,而Revit API提供了對(duì)渲染輸出渠道訪問的類:自定義導(dǎo)出程序類(CustomExporter Class)、導(dǎo)出語境接口(IExportContext)、節(jié)點(diǎn)渲染類(RenderNode Classes)、照相信息(CameraInfo)等。

表1提供了JSONExportContext接口部分函數(shù)及實(shí)現(xiàn)的功能。

通過將JSON文件格式化后發(fā)現(xiàn),其文件數(shù)據(jù)是符合Three.js自定義的JSON文件的內(nèi)容與格式。

1.3? Three.js解析JSON并渲染

1.3.1? Three.js特性

Three.js庫是JavaScript編寫的WebGL第三方庫,實(shí)現(xiàn)了基本的圖像算法,并提供了攝像機(jī)控制、燈光設(shè)置、加載模型和繪制3D物體等多種功能,是目前十分流行的圖形圖像渲染庫。

1.3.2? Revit-Three.js處理過程

JSON格式文件中的Geometries儲(chǔ)存的是幾何圖形構(gòu)件信息,Three.js通過使用parseGeometries()函數(shù)查找儲(chǔ)存在該集合下的類型(type)屬性,不同的處理函數(shù)處理不同類型屬性參數(shù),例如柱體處理屬性CylinderGeometry、參數(shù)幾何體處理屬性ParametricGeometry、圓形處理屬性CircleGeometry等。在JSON格式文件中,為了存儲(chǔ)參數(shù)的便捷,type對(duì)象的存儲(chǔ)值統(tǒng)一為Geometry。

JSON格式文件中的Materials儲(chǔ)存的是模型的材質(zhì)、顏色等信息,Three.js通過使用parseMaterials()函數(shù)遍歷整個(gè)材料屬性集,將其中的所有信息提取傳輸給Three.MaterialLoader類,該類將材料屬性中的紋理、顏色等信息進(jìn)行整合打包最后提交到scene對(duì)象中進(jìn)行顯示。

JSON格式文件中的Children存儲(chǔ)的是Geometries和Materials的UUID、Name以及相關(guān)聯(lián)的屬性參數(shù)的UUID。通過不斷的循環(huán)遍歷集合,將其中的UUID與Geometries和Materials屬性相結(jié)合,讓兩個(gè)模塊中的數(shù)據(jù)結(jié)合在一起;同時(shí)通過相關(guān)聯(lián)屬性參數(shù)的UUID實(shí)現(xiàn)鼠標(biāo)拾取以獲取屬性參數(shù)數(shù)據(jù)的功能。

最后使用Three.js的渲染器將處理得到的scene場景在畫布(Canvas)上進(jìn)行構(gòu)建,使三維網(wǎng)頁呈現(xiàn)出所需的Revit三維建筑模型。

2? Web端展示效果

平臺(tái)通過Revit插件將三維建筑模型中的幾何模型數(shù)據(jù)和參數(shù)數(shù)據(jù)進(jìn)行導(dǎo)出并存于服務(wù)器中,用戶可以登錄前端管理系統(tǒng)平臺(tái)實(shí)現(xiàn)資源的遠(yuǎn)程獲取和顯示。圖2為谷歌瀏覽器端重建的模型建筑三維視圖,可以看出在瀏覽器中構(gòu)建的三維模型,除了光照、模型顏色和植物外觀上有些許不同外,其余基本沒有變化。同時(shí),借助于數(shù)據(jù)庫中所提取到的數(shù)據(jù),幾何模型的屬性參數(shù)在瀏覽器中也能夠查看。至此,平臺(tái)實(shí)現(xiàn)了在Web瀏覽器上瀏覽Revit三維建筑模型而不依賴Revit軟件的功能。

3? 結(jié)? 論

本文通過對(duì)Revit API的二次開發(fā),實(shí)現(xiàn)Revit幾何模型和數(shù)據(jù)模型的分離和分別存儲(chǔ)。圍繞幾何模型的Web端展示展開探討,闡述了幾何信息存儲(chǔ)并寫入JSON文件的過程,以及運(yùn)用Three.js對(duì)JSON進(jìn)行解析并渲染的辦法,在Web端實(shí)現(xiàn)了模型重建。這種方法在數(shù)據(jù)上使幾何信息與數(shù)據(jù)信息既獨(dú)立又互相關(guān)聯(lián),在實(shí)際情況中彌補(bǔ)了Revit軟件本身的笨重性,使模型在網(wǎng)頁端易于觀看。

參考文獻(xiàn):

[1] 何善能.BIM技術(shù)在建筑工程項(xiàng)目中的應(yīng)用價(jià)值 [J].居業(yè),2018(4):86-87.

[2] 張平.基于BIM技術(shù)的三維監(jiān)控系統(tǒng)應(yīng)用研究 [J].鐵路技術(shù)創(chuàng)新,2019(4):97-101+110.

[3] 儲(chǔ)偉偉,華玉艷,田章華.BIM模型網(wǎng)頁端展示交互技術(shù)及其在隧道運(yùn)維管理中的應(yīng)用 [J].土木建筑工程信息技術(shù),2018,10(1):60-64.

[4] 劉佳,張慶彬,梁秋麗.BIM模型的輕量化展示平臺(tái)研究 [J].建筑技術(shù),2019,50(7):791-793.

[5] 楊喆,付功云,袁文祥,等.基于WebGL三維引擎的軌道交通工程BIM+GIS平臺(tái)研究 [C]// 第七屆BIM技術(shù)國際交流會(huì)——智能建造與建筑工業(yè)化創(chuàng)新發(fā)展論文集.廣州:《土木建筑工程信息技術(shù)》編輯部,2020:7.

[6] 李獻(xiàn)忠,張社榮,王超,等.基于BIM+GIS的長距離引調(diào)水工程運(yùn)行管理集成平臺(tái)設(shè)計(jì)與實(shí)現(xiàn) [J].水電能源科學(xué),2020,38(9):91-95.

[7] 張海濱,王興龍,張曉娜,等.基于BIM與精益建造的數(shù)據(jù)驅(qū)動(dòng)式項(xiàng)目管理平臺(tái)的探索與應(yīng)用 [C]//第七屆BIM技術(shù)國際交流會(huì)——智能建造與建筑工業(yè)化創(chuàng)新發(fā)展論文集.廣州:《土木建筑工程信息技術(shù)》編輯部,2020:590-596.

[8] 趙菲.基于WebGL的古建筑BIM模型輕量化研究與實(shí)現(xiàn) [D].西安:西安建筑科技大學(xué),2018.

[9] 羅飛.RevitArchitecture三維建筑模型WebGL顯示及優(yōu)化 [D].杭州:浙江工業(yè)大學(xué),2016.

作者簡介:羅文(1999.07—),男,漢族,四川成都人,本科在讀,研究方向:軟件工程。

猜你喜歡
二次開發(fā)
初中生物教材插圖的分類及二次開發(fā)
例談對(duì)高中數(shù)學(xué)教材中習(xí)題的二次開發(fā)
淺談CAD軟件二次開發(fā)的方法及工具
例談?wù)n本習(xí)題的“二次開發(fā)”
高中物理教材導(dǎo)入的“二次開發(fā)”