我也沒想到,BIM數據處理一下拖了這麼久纔有個交代。咱們照例先放圖c++
最近和不少作bim的同行聊天,業內公認,目前 revit 在國內的BIM軟件佔有率大約在80%~99% ,也就是說搞定rvt模型,基本知足了絕大部分的需求。最開始可選的幾種方案:c#
1,revit 導出 ifc,cesiumlab處理ifc格式;學習
此方案很快被否,緣由是ifc並不能很好的保持revit內的相關屬性,並且revit對ifc的導出和導入極度不友好。測試
2,revit 導出dae,obj等模型格式;優化
這個方案部分模型基本沒有問題,可是對於大模型,基本沒有幾個插件能成功導出。另外這些格式不能保存bim屬性,因此也被否決。插件
3,revit直接導出3dtiles; 3d
這個方案對大多數用戶來講是比較方便的。可是這種一步到位的方案,對個人開發帶來極大的工做量,涉及到大量c#到c++之間的接口封裝,短時間內是不可完成的,遂放棄。調試
4,revit導出自定義格式;orm
這就是目前用的方式,我導出的中間格式有三種文件:索引
1) .lab 模型索引文件,引用了element文件
2) .ele element定義文件,包含了element的bim屬性以及 三角網數據
3).ins instance定義文件,包含了instance的三角網數據。對部分rvt模型,裏面有大量重複的instance標示不一樣位置的elements,這個文件會被多個ele文件共享引用,這樣大大加速導出過程。
注意:由於實在精力有限,目前插件僅僅支持 revit 2018版本,請不要問我低版本怎麼辦,解決辦法你懂的。
ok,你們是等不及了吧,咱們來講說怎麼作。
一,安裝revit插件
把這三個文件拷貝到以下圖所示位置
二,打開revit 2018
第一次會提示是否加載插件,請選擇 老是加載。
打開你準備的rvt模型,切換到3d視圖
自上而下:
第一行:方便我調試的功能,請忽略。
第二行:導出元素,【所有】就是全部element,【導出選中】就是導出當前選中的element。第三個調試使用,請忽略。
第三行:LOD,revit 經過Lod 來控制當前模型顯示的精細程度,由於沒有找到相關資料,大概測試這個LOD的範圍是 0~15
0 表示最粗略,15表示最精細。對於一些超大模型,建議LOD選低一些。
第四行:右側按鈕選擇一個待輸出的.lab文件。
第五行:進度條 和 【導出】按鈕
三,cesiumlab內處理
這個界面基本和場景處理沒有任何區別。就不在贅述了。
處理結束後,同樣能夠發佈爲3dtiles服務,並預覽。
後記:
此次耗時超過預期的主要緣由是:
1,從小白開始學習revit二次開發,加上不斷的修改導出格式,加快導出速度,時間就多了一些。
2,在作bim的同時,其實也在優化場景處理。底層場景處理和bim處理目前基本是一致的,只是輸入不一樣。
最後感謝在開發過程當中給我提供過幫助的 @李仙偉 @豐,兩位無私的分享加快了開發的速度,謝謝。也同時感謝提供我測試數據的各位朋友,以及一直在使用cesiumlab的朋友們,沒有大家,就不會有cesiumlab的進步。