從零開始實現基於BIM的建築設計碰撞檢查
碰撞檢查實現方案調研
1. 現成開源方案
舊版BIMserver曾支持過碰撞檢查[1],現在已經不提供下載了[2],但是可以通過下載整個開發代碼庫[3](基於git代碼管理工具)回滾到過去的版本[4]去學習其代碼實現。
2. 現成閉源方案
Navisworks[5]、Tekla Structures[6]、Solibri Model Checker[7]等一系列BIM工具均支持碰撞檢查(構件細度的硬碰撞、軟碰撞、4D模擬碰撞等)。針對預製混凝土構件,尤其是鋼筋相關的碰撞,Tekla Structures更合適。此外,Navisworks有開放碰撞檢查的API[8]。而Tekla Structures有二次開發API[9],但是相關開發文檔匱乏。
3. 自行開發方案
若現成的碰撞檢查方案不能滿足具體需求,可考慮自行開發。
3.1. 基於IFC的開發方案
目前IFC相關工具[10]中,可用作開發工具、仍在更新且可解析幾何數據的工具有三個。理論上,只要能支持幾何數據的布爾運算就能實現硬碰撞檢查。在不考慮運算效率的情況下,給定A、B兩個實體,若A∩B為體積為0的實體,則不碰撞;反之,則碰撞。
表 1 IFC Engine DLL、IfcOpenShell、xBIM Toolkit比較(表略)
IFC Engine DLL可解析出構件的三角網格數據,也有私有三維引擎進行幾何數據的布爾運算。官方也有論文描述碰撞檢查的演算法實現[15],但是在官網上下載的IFC Viewer沒有該功能。
IfcOpenShell計劃在0.8版實現碰撞檢查功能[16],目前為0.5預發布版。可用IfcOpenShell來導出.obj、.dae等格式幾何數據[17],再按計算機圖形學中的常規碰撞檢查來實現硬碰撞的檢測[18][19]。
xBIM Toolkit的子項目XbimAnalysis中有對空間的分析示例框架代碼[19],但是僅實現了簡易情形下的分析,完整分析仍需要參考計算機圖形學中的演算法來實現。
3.2. 基於其他閉源平台的開發方案
也可考慮基於Revit、Navisworks、Tekla Structures等的API讀取構件的幾何數據開發。
PS:上文是從Word粘過來的,感覺知乎這編輯器還沒Word好用。
PSS:起因是老闆讓我幫師兄找一下碰撞檢查的開發方案,幹了半天發過去,應該就沒有下文了。發知乎能漲粉騙點零花錢不?
PSSS:這樣算不算泄漏課題組(半天)研究成果?有點方,在線等,挺急的……
參考資料
[1]. First release candidate version 1.2
[2]. https://github.com/opensourceBIM/BIMserver/issues/238
[3]. https://github.com/opensourceBIM/BIMserver
[4]. https://git-scm.com/docs/git-checkout
[5]. http://www.autodesk.com/products/navisworks/features/all
[6]. https://teklastructures.support.tekla.com/2016i/en/mod_detecting_clashes
[7]. https://www.solibri.com/products/solibri-model-checker/
[8]. http://adndevblog.typepad.com/aec/2012/05/accessing-clash-report-information-using-net-api.html
[9]. https://www.tekla.com/us/tekla-open-api-connect-applications-tekla-structures
[10].http://www.buildingsmart-tech.org/implementation/implementations/plominoview.allapplications
[11].http://www.ifcbrowser.com/
[12].http://ifcopenshell.org/
[13].https://www.opencascade.com/
[14].http://docs.xbim.net/
[15].http://www.engineering.nottingham.ac.uk/icccbe/proceedings/pdf/pf91.pdf
[16].https://sourceforge.net/p/ifcopenshell/discussion/1782718/thread/b5e3ee85/?limit=25
[17].http://ifcopenshell.org/ifcconvert.html
[18].https://github.com/jslee02/awesome-collision-detection
[19].https://unity3d.com/learn/tutorials/topics/physics/detecting-collisions-oncollisionenter
[20].https://github.com/xBimTeam/XbimAnalysis/blob/master/Xbim.Analysis/Spatial/XbimSpatialAnalyser.cs
推薦閱讀:
※現在國內機電BIM建模的深度怎樣?方便的話能否展示一下您見過的、做過的好的模型細節
※BIM學習 | 從2600萬年前的故事說起
※BIM 該怎麼做才能做到它最終的狀態?
※沒有 i 就不是BIM
※2016年是BIM概念牛皮徹底吹破的一年么?
TAG:BIM |