BIM轻量化之路(二)

您所在的位置:网站首页 revit能出结构图吗 BIM轻量化之路(二)

BIM轻量化之路(二)

2023-07-01 14:42| 来源: 网络整理| 查看: 265

前言

上文提到如果项目需求的业务管理功能多、集成度高,那么就建议使用webgl的技术方向进行模型轻量化。 目前市面上有不少成熟的模型轻量化工具,比如广联达BIMFace、葛兰岱尔的GLWebGLBIMEngine、e建筑等,都是在平台转换,在线、离线式使用,基本都使用的threejs实现模型的展示,其中bimface的通讯格式为二进制,猜测为自定义的数据格式,GLWebGLBIMEngine和e建筑使用的是gltf。还见过一家使用silverlight结合unity做模型展示,但是这并不是主流趋势,很多浏览器已经不支持。

一、轻量化流程

经过多种途径的试探,结合目前的资源,决定全面转向threejs实现轻量化,实现的大概流程: 实现流程 理想中轻量化应该是上传RVT文件后,服务器自动对各版本的文件进行解析处理,将相应的数据及文件存入数据库及文件服务器。模型的展示应该是组件化模块化,对于其他应用模块提供标准开放接口,方便外部调用。所以应该本着文件尽可能小、展示真实、操作流畅的原则进行开发。

二、数据提取 1.revit分类

首先要大概了解revit类别结构 在这里插入图片描述

Category:类别,比如梁、板、柱、门、窗等大的分类。Family:族,子分类。FamilySymbol:族类型,个人理解是体现子类的规格。FamilyInstance:实例化出新的对象,体现在revit中就是创建了一个新的构件,这个构件属于Category、Family、FamilySymbol一种,熟悉面向对象的编程语言应该很容易理解这个概念 所以简单的理解revit的数据存储结构是树状结构 2.revit分类编码规则

Revit 分类编码采用的是国际行业标准的Omniclass编码,是对建筑全生命周期进行编码,印象中总共有30多个table,revit主要使用的是第23个table中的编码,例如:23.25.30.11.14.11,在表中可以查到对应的解释。Revit内置大约有1000多种族分类。

3.插件开发

环境的搭建可以参照 https://blog.csdn.net/qq_36754364/article/details/86724985

提取数据需要依赖revti的sdk, c#引用链接库RevitAPI.dll、RevitDBAPI.dll,实现IExportContext接口,方法流程: IExportContext 方法执行流程图 注:获取的element包含了场景数据,如相机。也包括轻量化不需要的元素,如中心线、洞等,执行插件只获取当前视图view的元素,也支持链接rvt的进一步遍历。

4.导出gltf

使用GITF格式作为模型文件,一是它的目标是成为模型界的通用格式,类似图片界的jpeg。二是对OpenGL的兼容性好,数据格式清晰简单,三是自己对计算机图形学不了解,自定义格式难度大,还是考虑成熟的数据格式。 GLTF文件格式 GITHUB上有开源的导出GLTF的代码,地址: https://github.com/McCulloughRT/Revit2glTF

public struct glTF { public glTFVersion asset; public List scenes; public List nodes; public List meshes; public List buffers; public List bufferViews; public List accessors; public List materials; }

这里是对GLTF的文件格式定义,按照revit二次开发规范实现IExternalCommand,IExportContext接口生成dll和addin文件,然后关联到revit上即可导出文件: 在这里插入图片描述 导出结果: 在这里插入图片描述

4.文件大小优化

对模型进一步优化可以使用谷歌开源的Draco,大幅加速 3D 数据的编码、传输和解码。 gltf-pipeline:https://github.com/CesiumGS/gltf-pipeline,依赖NODE.JS,通过命令行窗口可以对模型进行优化:

转换GLB:gltf-pipeline -i NewProject.gltf -o NewProject.glb转换Draco:gltf-pipeline -i NewProject.gltf -o buildDraco.gltf –d 在这里插入图片描述 源文件大小为6M,压缩完后为1M,压缩比接近6:1,对于管线、精装修等mesh多的情况达不到这种压缩比。 总结

提取的算法优化空间还很大,比如移除重复顶点和重复面、三角网简化等,只不过自己的能力不足,需要继续学习,感兴趣的同学可以进一步优化。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3