基於threejs如何將兩個模型進行對比?

2021-10-01 10:22:34 字數 1864 閱讀 2845

模型對比是從構件級來比較模型不同版本之間的差異。模型對比功能可以對比兩個不同版本模型之間的差異,這些差異包含構件關係的差異、構件資訊的差異以及模型中構件的增加與刪除等改動。構件資訊的差異是指匹配構件的屬性資訊、基本資訊、幾何資訊的差異;構件關係的差異是指構件父子節點關係的變化,管道系統中連線關係的變化;構件的增刪情況是指非匹配構件的新增/刪除、管道系統的增加與刪除以及系統中構件的新增與刪除。

模型對比可以在建築全生命週期中起到很大的作用,它可以應用於建築設計、施工和運維階段的bim模型版本更替中。

在建築的設計階段,設計師往往會因為需求的改變,對bim模型做出修改,導致不同版本的模型出現。模型對比功能可以快速準確地得出不同版本模型之間修改的內容,並將對比結果直接與相應構件進行繫結,避免人工檢查的不準確性,節省了人工檢查所花費的人力物力。

在建築的施工階段,施工方可以通過模型對比功能得到模型的具體修改內容,並根據修改內容對施工方案進行調整與優化,從而避免後續返工帶來的人力、財力損失。

在建築的運維階段,模型對比功能可以得出bim模型在設計、施工階段中不同需求下的差異,生成的比對結果可以為運維人員提供決策支援。

與此同時,在建築施工的全生命週期中,各專業間的協同作業是不可避免的。在團隊共同完成多維度任務時,版本管理就顯得尤為重要,而模型對比功能是版本管理的核心功能之一。通過模型對比,可以清楚地展示出各個版本之間的變化,從而控制版本迭代。

根據資料介面,發起模型對比的請求。

//發起模型對比請求

fetch(`

$/models/compare?model=58052122&model2=24158336&name=

$&enforce=true&devcode=$`

)

根據資料介面獲取模型對比的結果。

// 獲取模型對比結果介面

const

fetchmodelcomparedresults=(

)=>

/models/

$/compare/results?devcode=$`

).then

(result => result.

json()

).catch

(e => console.

log(e));

}

獲取到模型對比結果以後,顯示結果並繫結對應的操作事件。

// 獲取模型對比資料,拿到資料後建立左側展示面板

fetchmodelcomparedresults()

.then

(data =>);

});/**

* 載入修改後的模型,載入完後

* 飛躍到設定好的模型視角

* 將新增加的構件置色綠色,將修改的模型置色黃色

* 刪除沒有geometry的構件列表

*/viewer3d2.

addview

(modelkey2, devcode)

;// 監聽模型載入完成

.viewer3d2.

getviewerimpl()

.modelmanager

.addeventlistener

(bimwinner

.bos3d

.events

.on_load_complete

,function

(event));

modelcomparedresult.attributes.

foreach

(item =>);

});}

else})

;

如何將兩個hex檔案合併

question 由於分散載入檔案設定的原因,工程生成的 hex檔案被分成兩部分,一般情況下使用 flash magic answer 本文只介紹如何將 hex檔案合併的問題 以附件的兩個 hex檔案為例,該程式執行在 easyarm2131 開發板上,通過串列埠向外傳送資料。rom exec1 檔...

如何將兩個有序鍊錶合併成乙個鍊錶

具體思想就是新建乙個鍊錶,然後比較兩個鍊錶中的元素值,把較小的那個鏈到新鍊錶中,由於兩個輸入鍊錶的長度可能不同,所以最終會有乙個鍊錶先完成插入所有元素,則直接將另乙個未完成的鍊錶直接鏈入新鍊錶的末尾。1 遞迴演算法 也容易理解,但是它的弊端也很明顯時間空間開銷都很大,效率低 2 非遞迴演算法 1 兩...

如何將Excel中兩個單元格或兩列中的資料合併

如果資料分別在兩個單元格中,而您希望將它們合併到乙個單元格內,就可以使用乙個帶 操作符的公式。例如,a 列是姓氏列表,b 列是名字列表,那麼可以在儲存格 c1 中輸入以下公式 a1 b1 如果 a1 中是 李 而 b1 中是 小明 則 c1 將顯示 李小明 若要在姓和名中間新增乙個空格,可以使用以下...