我也没想到,BIM数据处理一下拖了这么久才有个交代。我们照例先放图
Revit官方的示例数据
隐藏屋顶+俯视
曾经因为太大而无法导出无法处理的医院模型
室内装修方案模型
最近和很多做bim的同行聊天,业内公认,目前 revit 在国内的BIM软件占有率大约在80%~99% ,也就是说搞定rvt模型,基本满足了绝大部分的需求。最开始可选的几种方案:
1,revit 导出 ifc,cesiumlab处理ifc格式;
此方案很快被否,原因是ifc并不能很好的保持revit内的相关属性,而且revit对ifc的导出和导入极度不友好。
2,revit 导出dae,obj等模型格式;
这个方案部分模型基本没有问题,但是对于大模型,基本没有几个插件能成功导出。另外这些格式不能保存bim属性,所以也被否决。
3,revit直接导出3dtiles;
这个方案对大多数用户来说是比较方便的。但是这种一步到位的方案,对我的开发带来极大的工作量,涉及到大量c#到c++之间的接口封装,短期内是不可完成的,遂放弃。
4,revit导出自定义格式;
这就是目前用的方式,我导出的中间格式有三种文件:
1) .lab 模型索引文件,引用了element文件
2) .ele element定义文件,包含了element的bim属性以及 三角网数据
3).ins instance定义文件,包含了instance的三角网数据。对部分rvt模型,里面有大量重复的instance标示不同位置的elements,这个文件会被多个ele文件共享引用,这样大大加速导出过程。
注意:因为实在精力有限,目前插件仅仅支持 revit 2018版本,请不要问我低版本怎么办,解决办法你懂的。
ok,大家是等不及了吧,我们来说说怎么做。
一,安装revit插件
cesiumlab安装目录下的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的进步。
中国最专业的Cesium开发者社区