CATIA与Revit模型数据转换研究

2023-09-21 01:02刘立峰
西北水电 2023年4期
关键词:二次开发轻量化材质

蒲 晏,黄 平,刘 源,刘立峰

(1. 中国电建集团西北勘测设计研究院有限公司,西安 710065;2. 西安市清洁能源数字化技术重点实验室,西安 710065)

0 前 言

随着“数字中国”战略不断推进,工程数字化和信息化快速发展,BIM技术,数字孪生,AR/VR,3D打印等技术愈发成熟[1]。三维模型作为这些技术的载体也变得非常重要,产生这些三维模型的三维设计环节成为工程中非常重要的一环,在整个工程数字化和信息化中起到至关重要的作用[2],数字化设计已经成为设计发展的新方向[3]。

当前在三维设计领域,达索公司的CATIA[4]、3DExperience,AutoDesk公司的Revit[5]、Civil3D[6]和美国Bentley公司的MicroStation[7]、Prostructures等各有所长,在水电设计行业因为专业众多,在实际生产过程中为了充分发挥各设计软件的优势[8-9],经常采用CATIA与Revit混合设计的模式。三维协同设计时经常需要使用其它专业模型做为建模参考[10],因此需要转换模型数据进入对应的平台,但是CATIA与Revit中并不具有该功能。目前已有刘立峰等提出通过Inventor和CAD来做CATIA与Revit数据转换[11],但是该方案需要安装Inventor和CAD软件并且转换操作繁琐复杂,整个转换过程显得非常臃肿,使用起来比较麻烦。

近年来随着BIM技术在工程行业中的不断应用[12],模型轻量化技术愈发成熟,轻量化模型在剖切[13]、碰撞检查等应用上已有非常成熟的方案,CATIA和Revit提供了丰富的二次开发接口供用户来获取数据和创建模型。因此本文提出一种基于CATIA和Revit二次开发,通过SDK接口读取模型数据后,对数据进行轻量化处理并保存为自定义格式的轻量化文件,在对应的平台中导入并解析文件后,通过二次开发接口创建模型和属性实现模型重构的方法,实现CATIA与Revit平台间的数据转换。

1 技术路线

本文提出一种基于BIM轻量化模型的CATIA与Revit数据转换方法。该方法将CATIA二次开发技术、Revit二次开发技术和模型轻量化技术相融合通过二次开发调用设计软件接口API解析模型几何信息和非几何信息,对提取的数据信息进行数据解析并重构后保存为自定义格式的轻量化文件,再在对应平台中通过二次开发的方式解析轻量化模型,获得模型几何和非几何数据,调用创建模型和属性的API对模型进行重构,最终实现两个平台间模型数据相互转换引用。具体数据转换技术路线如图 1 所示。

图1 数据转换技术路线

1.1 CATIA二次开发技术

达索系统为CATIA提供了丰富的二次开发方式,因其开发方式基于COM的特性,所以几乎所有编程语言都可以用以进行CATIA二次开发。比较常见的是使用宏和使用组件应用架构CAA(Component Application Architecture)进行CATIA二次开发,本次技术研究选用基于组件应用架构CAA-C++ Extended Development的开发方式[14]。

CAA-C++ Extended Development二次开发技术是基于CAA-RADE集成环境,在Visual Studio中集成并提供一个CAA框架的C++程序编译器。通过调用API函数调用CATIA的核心程序,创建与CATIA风格一致的界面,实现客户程序和原系统的紧密集成。

1.2 Revit二次开发技术

Revit二次开发是通过.Net语言对Revit功能实现扩展。所有支持.Net的语言(C#,VB.Net、托管C++等)都可用于进行Revit二次开发。Revit二次开发通过安装Revit SDK搭建Revit二次开发环境,环境搭建完成后,即可在Revit对应版本的Visual Studio中进行程序编写,通过引入动态链接库实现对RevitAPI的调用。开发完成后生成插件dll文件,配置.addin文件实现对插件的自动加载。本次研究选用的是Revit2019、Visual Studio 2017使用C#语言进行Revit二次开发。

1.3 模型轻量化技术

模型轻量化在BIM届是共知的概念,但是至今没有一个明确的定义。本文探索的轻量化技术是针对CATIA和Revit模型,废除设计模型数据中庞大的设计过程内容数据,使用抽壳技术仅保留模型几何结果和所需要的参数及属性信息,最终实现减小模型体量的效果[15]。本次研究中模型几何结果采用三维三角网格进行保存,每个模型都是由三角网格构成,三角网的疏密程度根据模型精度控制。三角网格数据包括顶点数据、顶点索引数据、顶点UV坐标数据和顶点Normal数据构成。

2 程序设计及实现方法

2.1 轻量化文件定义

此次研究中轻量化文件定义为本地数据库文件,包括模型结构数据、模型几何参考数据、 模型几何实例数据、模型材质数据、模型属性数据5个数据表采用二进制方式存储模型对应数据内容,其中表与表之间通过ID建立关联关系实现数据关联。

轻量化模型数据结构如图2所示。由图2可知,模型结构数据记录模型的组织结构,并记录每个模型节点包含的几何信息和属性信息的关联关系。模型几何参考数据记录模型几何经过离散后的三角面片(Triangle)数据。模型几何实例数据记录每个实例的几何关联与坐标偏移矩阵(Matrix)。模型材质数据记录模型的颜色(Color)、材质(Material)、可见性(Visibility)等数据。模型属性数据记录模型的参数等属性数据(Parameter、Properties),如CATIA中的设计参数、设计属性,Revit中的参数等,此次技术研究中定义轻量化格式为“B3D”文件格式。

图2 轻量化模型数据结构

2.2 CATIA数据转为Revit数据

通过CATIA-CAA二次开发方式对CATIA当前激活文档中模型几何、结构、属性信息进行提取,经过数据处理后保存为轻量化文件,通过Revit二次开发对轻量化文件数据进行解析,解析完成后调用RevitAPI在Revit中依据数据重构模型。

2.2.1CATIA模型数据轻量化

(1) 模型结构数据提取通过文档容器CATFrmEditor接口类获得当前文档,使用CATIDescendants接口类遍历CATIA中结构树获得模型结构数据存入结构数据表中。

(2) 当遍历到最下层Body节点时,使用GetBody()方法取的模型拓扑信息后,使用CATICGMCellTessellator接口类对拓扑几何信息进行离散计算获得离散三角面片数据,对三角面片数据进行组织后存入几何引用表。

CATICGMCellTessellator是达索为二次开发用户提供的一个模型离散接口类,类中具体方法函数如图3所示。通过SetOutputMode()和SetStep()方法设置离散参数,通过AddFace()方法添加需要离散的面对象,通过Run()方法进行数据离散操作;通过GetFace()方法获得离散后的三角面片数据。

图3 CAA离散几何数据接口

(3) 模型偏移矩阵提取使用CATIMovable接口类获得装配和零件节点偏移坐标保存至模型几何实例表。

(4) 模型属性提取使用CATIParmPublisher和CATIAttributesDescription接口类获得模型上添加的参数信息以及装配节点和零件节点的属性信息保存至模型属性表。

(5) 模型颜色提取使用CATIVisProperties接口类获得模型的颜色和透明度信息;颜色和透明度信息可以通过装配、零件、body节点向下继承;保存这些信息至模型材质数据表中。

获得所有数据后,对模型数据进行优化重组并更新数据表,保存为自定义的“b3d”格式。

2.2.2Revit导入轻量化模型

在Revit中加载轻量化模型文件后,解析轻量化模型数据为结构化数据,在Revit中根据属性表数据在Revit中创建共享参数。根据材质数据在Revit中创建材质。根据模型几何引用数据和坐标偏移矩阵在Revit中创建几何形状,最终通过几何形状与参数和材质关联实现在Revit中重构模型。

(1) 通过ExternalDefinitionCreationOptions创建共享参数后,使用InstanceBinding将共享参数与Revit常规模型绑定。

(2) 通过Material接口类传入材质表中颜色、透明度等参数信息后创建Revit材质。

(3) 使用TessellatedShapeBuilder接口类传入离散几何三角面片数据,生成几何形状,通过DirectShape接口类创建常规模型对象,通过唱过常规模型与共享参数的关联关系为创建的模型对象设置属性值信息和材质信息。

2.3 Revit数据转为CATIA数据

通过Revit二次开发调用RevitAPI对当前窗口模型三维视图中的模型几何、结构、属性信息进行提取,经过数据处理后保存为轻量化文件,利用CAA二次开发对轻量化文件数据进行解析,解析完成后调用API在CATIA中依据数据重构模型。

2.3.1Revit模型数据轻量化

(1) Revit模型导出

IExportContext接口类是Revit SDK为二次开发用户提供的一个模型信息提取的接口类,具体类方法如图4所示。通过继承该类后重写类中方法实现自定义导出,通过OnElementBegin()实现对模型构件的遍历,可以读取构件名称、分类等信息,通过OnInstanceBegin()实现对Revit族库实例进行遍历,通过OnMaterial()实现对构件材质颜色的读取, 通过OnPolymesh()方法模型离散数据的读取。

图4 Revit导出模型接口类

(2) Revit模型属性导出

通过Element中Parameter方法实现对模型构件参数读取。

2.3.2CATIA中导入Revit模型

在CATIA中加载轻量化模型后,解析读取轻量化模型数据为结构化数据;使用CATIMechanicalRootFactory工厂类在CATIA中创建结构树节点;使用CATICkeParmFactory工厂类为相应节点创建参数并设置相关参数值;使用CATGeoFactory类根据轻量化模型中三角面片信息创建Mesh模型;然后使用开发的Mesh转曲面的工具把Mesh转为对应曲面;使用CATIVisProperties接口设置颜色后完成Revit模型数据导入CATIA。

3 测试与分析

本文设计的基于轻量化模型的CATIA与Revit数据转换方法可以解决以往需要安装Inventor和CAD来进行CATIA与Revit数据转换的过程繁琐的问题。通过CATIA和Revit二次开发,实现轻量化模型文件的导入与导出功能,依托轻量化模型文件实现数据转换操作。结合实际测试情况对该方法进行介绍和分析。

3.1 测试准备

为保证项目设计整体位置正确,在创建项目时需要统一定义坐标系,不论在Revit还是在CATIA中均使用统一的坐标系进行三维设计。在建模时,可以根据相应设计软件精度问题对模型进行一定程度的偏移,在模型轻量化转换时在根据偏移结果进行还原设置。

3.2 CATIA模型导为Revit模型

CATIA数据转Revit步骤如图5所示。CATIA模型导为Revit模型具体包括如下步骤:

图5 CATIA数据转Revit步骤

(1) 在CATIA中打开CATIA模型,使用基于CAA二次开发技术开发的CATIA轻量化转换工具,设置导出规则,属性规则等相关转换设置后,导出模型为轻量化模型文件;

(2) 在Revit中使用开发的链接B3D工具,选择第1步导出的轻量化模型后,轻量化模型以链接的形式被导入至Revit中。

此时模型已经成功从CATIA转换为Revit模型,但是因为是链接模型,所以对于协同设计时需要的捕捉等功能无法满足。经研究,模型可以应用于捕捉等三维协同设计操作,具体操作如下:

(1) 选择链接进来的模型,在Revit界面选择“绑定链接”命令,点击确定,绑定模型链接;

(2) 选择绑定的模型链接,点击“解组”命令,等待解组操作完成后,模型可以被应用于辅助建模。

CATIA模型转Revit模型结果如图6所示。由图6可见CATIA中模型成功被转换为Revit模型,并且颜色、属性、几何形状等关键信息未丢失。

图6 CATIA模型转Revit模型结果

3.3 Revit模型导为CATIA模型

Revit 模型导为CATIA模型步骤如图7所示。Revit模型导为CATIA模型主要包含如下步骤:

图7 Revit 模型导为CATIA模型步骤

(1) 在Revit中打开模型,使用开发的Revit模型导出工具,在列表中选择需要导出的三维视图,设置坐标偏移、属性等转换信息后转换Revit模型为轻量化模型;

(2) 在CATIA中使用开发的B3D导入工具,选择上一步导出的轻量化模型后,模型被导入至CATIA中(见图8)。

图8 Revit模型导入CATIA结果

此时导入的模型为Mesh体模型,由三角面片构成,在出图应用时会存在部分问题,可以经过Mesh转为曲面进行相关处理。使用开发的Mesh转曲面工具,选择需要转换为曲面的Mesh体,经程序内部运行计算后,将Mesh转换为曲面。

3.4 测试结果分析

测试完成后,对测试结果进行了统一分析见表1。

表1 测试结果分析

(1) 数据转换后模型坐标正确无误差,所有模型属性和参数等均成功在对应的设计工具中重建并保持原值;

(2) 三维模型颜色等正确无误差,但是因为两个设计平台差异性,对应的材质贴图丢失,只能保证颜色正确;

(3) 通过开发的导入导出工具导入轻量化模型后创建的模型距离三维协同设计应用还存在一定的差距,还需要2~3步的人工操作后才能将模型应用于三维协同设计;

(4) 转换结果数据仅能供参考位置信息和属性信息等,如果需要进行剖切投图等后续操作也存在很大的问题,需要进一步深入研究。

4 结 语

针对CATIA与Revit模型相互转换这一问题,本文提出一种基于BIM轻量化模型为中间数据格式的数据转换方法,首先自定义轻量化格式数据文件,可以存储模型的结构、几何、属性数据;通过CATIA和Revit二次开发技术在CATIA和Revit中开发模型导出和模型导入插件,实现快速导出和导入BIM轻量化模型。测试结果表明,该方法能够完整的提取模型的信息从而实现数据转换,并且转换后模型的属性、颜色等信息得以保留,能够在对应的平台中作为参考模型被使用,提高了跨平台混合三维协同设计的效率,为设计人员提供更多的选择。

因为轻量化模型本身是三角面片构成,使用该方法转换的数据结果对于剖切投图存在一定的问题,在未来的工作中可以继续深入研究通过模型Brep信息进行数据交换来解决处理这一问题。另外目前仅研究了CATIA与Revit间数据转换,未来的工作中也可以继续深入研究CATIA、Revit、MicroStation等多平台间数据转换过程。

猜你喜欢
二次开发轻量化材质
汽车轻量化集成制造专题主编
浅谈基于Revit平台的二次开发
浅谈Mastercam后处理器的二次开发
一种轻量化自卸半挂车结构设计
一种轻量化自卸半挂车结构设计
衣服材质大揭秘
西门子Easy Screen对倒棱机床界面二次开发
瞄准挂车轻量化 锣响挂车正式挂牌成立
外套之材质对比战
针织衫之材质对比战