怎么可能从零开始……
碰撞检查实现方案调研
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/
[13].https://www.opencascade.com/
[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
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...