分享免费的编程资源和教程

网站首页 > 技术教程 正文

干货分享!CATIA BIM模型底层数据获取

goqiw 2024-10-30 03:42:37 技术教程 31 ℃ 0 评论

随着计算机网络的逐渐普及,互联网应用到了人类活动的方方面面,各行各业纷纷借助互联网思维推动行业发展,建筑施工行业也不例外,最具代表性的就是BIM技术的应用。通过BIM技术手段,可将现实世界中的建筑物以精确的数字化虚拟建筑模型的形式呈现出来,同时整合建筑物的图形以及其他信息,可实现对建筑工程全生命周期管理的数字化管理。但随着BIM应用逐步走向深入,依靠单一的技术手段已经难以满足现有的需求,更多的是将BIM与其他先进技术集成或与应用系统集成,以期发挥更大的综合价值,如BIM+PM、BIM+GIS、BIM+云计算、BIM+物联网等等。

一般而言,3D模型以三角面为基本单位,所有东西都是由三角面拼凑出来的,三角面越多,模型显示越精细,也就越接近现实物体。利用 CATIA 进行建模,就是在不断创建点、线、面等基础图形要素,并进行一定的布尔计算、拓扑操作,最后得到三维可视化 BIM 模型。如何能够取得这些构建该模型的底层数据,以在其他平台环境中应用,而避免重新构建底层数据呢?

通过网上查找资源及 CATIA 二次开发的学习,我尝试了三种方法,现将试验过程中的一些细节及结果提供出来,大家一起学习交流。

1、.CATPart 文档另存为 stl 文件

CATIA Part 文件可直接另存为 ASCII 格式的 STL 文件,可利用记事本直接查看。

STL 是用三角网格来表现 3D CAD 模型,其格式简单,只能描述三维物体的几何信息,不支持颜色材质等信息,是计算机图形学处理 CG,数字几何处理如CAD, 数字几何工业应用,如三维打印机支持的最常见文件格式,也是快速原型系统所应用的标准文件类型。

ASCII 码格式的 STL 文件逐行给出三角面片的几何信息,每一行以1个或2个关键字开头。在 STL 文件中的三角面片的信息单元 facet 是一个带矢量方向的三角面片,STL 三维模型就是由一系列这样的三角面片构成。整个 STL 文件首行给出了文件路径及文件名。在一个 STL 文件中,每一个 facet 由 7 行数据组成,facet normal 是三角面片指向实体外部的法矢量坐标,outer loop 说明随后的3行数据分别是三角面片的 3 个顶点坐标,3 顶点沿指向实体外部的法矢量方向逆时针排列。

解析生成的 stl 文件,即可得到顶点坐标、法线坐标及拓扑关系等底层数据,利用这些数据可在其他平台如 GIS 中重构可视化模型,实现“BIM+GIS”数据集成应用。该方式得到的模型比较精细,三角面片数较多,不支持属性、颜色、材质等信息。

2、Tessellation(三角细分)

将三维实体离散化为一系列的三角面片,从细分结果中取得顶点、法线及索引信息等基础数据。详见 CAA 技术文章及示例代码。该方式的话,数据量的大小与细分参数有关,合理设置参数,可在不影响可视化效果的基础上,降低 BIM 模型的精细程度,显著减少模型的三角面片数,同时可取的材质属性等信息,信息完整度较高。

将细分结果中的数据按照不同文件格式的规则以文件流的方式输出,便可得到其他三维格式文件,可在其他平台应用。如图是输出 obj 格式文件,并在 3D MAX 中展示效果。

3、CATI3DGeoVisu 接口获取

CAA 百科全书 CAAGemBrowser 示例中,系通过细分结果获取顶点、法线、索引等数据后重新创建几何,并在视窗中显示出来,代码截图:

所以我猜想是否可以逆向而为,由 CATProduct 或 CATPart 文档获取三维可视化接口,从而获得实体模型的几何表达,进而得到模型的底层数据。

基于此,做了部分尝试,虽可获得可视化接口,但获取到的数据有误。主要步骤如下:

a.从 CATProduct 文档获取3维可视化接口 CATI3DGeoVisu。

b.CATI3DGeoVisu 获取几何表达 CAT3DRep,由几何表达中获取顶点、法线等数据,结果没有获取到正确数据,但将获取到的几何表达加载到自定义窗口,是可以显示,说明其中是有数据。

如上所述,该方式虽未通过,但有可深入研究的余地,待后续。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表