【干货分享】3D模型格式转换工具HOOPS Exchange与Parasolid集成指南

发布时间 : 2024-11-12 10:05:27.163|阅读 3 次

概述:HOOPS Exchange通过Parasolid连接器,支持CAD数据高质量导入Parasolid会话,并提供API和映射表以维护数据间的双向链接。

HOOPS Exchange包含一个Parasolid连接器,允许Parasolid开发人员轻松将CAD数据导入活动的Parasolid会话。如果源数据是基于Parasolid的(NX、Solid Edge或SolidWorks),则数据将原封不动地导入。这意味着您可以假设数据的质量与您在SolidWorks、Solid Edge或NX中获得的数据完全相同。如果数据来自非Parasolid系统(例如CATIA、Creo或STEP等),则我们的连接器会利用Parasolid和可选的PS/BodyShop来确保以最高质量导入模型。Parasolid模型与其他数据(例如PMI、装配结构和元数据)之间的连接在映射表中维护。

使用Parasolid连接器的API是:func:A3DAsmModelFileTranslateToPkParts:struct:A3DRepresentationItemTranslateToPkParts。在这两种情况下,可以导出到Parasolid会话的所有内容都会被传输,并且Exchange提供了一个映射( :struct:A3DMiscPKMapper )来保持PRC数据和生成的PK_ENTITY之间的双向链接。例如:

  • A3DAsmProductOccurrence <-> PK_ASSEMBLY
  • A3DRiRepresentationItem <-> PK_BODY
  • A3DTopoFace <-> PK_FACE

即使面或边在桥接中缝合或合并,此方法也有效。在“完全集成”中,零件会逐个传输,整个装配结构会传输到场景图中,让您可以管理可见性、视图和其他元数据。

下图是基于Parasolid的应用程序的屏幕截图,显示了导入的CATIAV5模型,其中保留了语义PMI

 

一、先决条件

HOOPS Exchange和Parasolid独立运行。因此,为了使用任何与Parasolid相关的Exchange功能,您需要一个有效的Parasolid会话。HOOPS Exchange不会自动初始化Parasolid会话-会话管理由您决定。此外,请考虑以下事项:

  • Parasolid的最低版本在Windows上为24.1,在Linux上为27.0。对于Parasolid收敛建模(多面数据),您至少需要28.1。
  • 执行环境必须有一个名为P_SCHEMA的定义环境变量,该变量扩展为Parasolid Schema文件夹的路径。

iOS环境的特定配置

iOS版HOOPS Exchange仅作为静态库( libA3DLIBS.a )提供。Parasolid桥接器是一个名为libhepb.a的附加静态库,可在我们的软件包中使用。如果您想在应用程序中使用我们的Parasolid桥接器,则必须将其链接到libhepb.a。如果您不使用它,它的功能将被替换为假功能。必须通过定义A3DAPI_NO_IOS_HEPB_STUB`来禁用此默认行为。因此,对于要在iOS上使用Parasolid Bridge运行HOOPS Exchange的客户端应用程序,必须满足以下条件:

  • 您的应用程序必须与libA3DLIBS.a和libhepb.a链接。
  • 代码在加载API时必须定义A3DAPI_NO_IOS_HEPB_STUB

二、映射

翻译后,了解PRC中的哪些拓扑实体对应于Parasolid实体以及反之亦然可能会很有用。此外,匹配并不总是“一对一”,因为处理是在以下过程中进行的:

缝纫过程可能会根据提供的缝纫公差将两个闭合的边缘合并为一个。

太小的边缘可能会从生成的拓扑中删除

三、将模型加载到Parasolid会话中

以下代码片段演示了如何使用:func:A3DAsmModelFileTranslateToPkParts将模型加载到Parasolid会话中:

 A3DRWParamsExportParasolidData sExportOptions;
A3D_INITIALIZE_DATA(A3DRWParamsExportParasolidData, sExportOptions);
// ... set your desired export options here
int iNbPkParts;
PK_PART_t* pPkParts;
A3DAsmModelFileTranslateToPkParts(sHoopsExchangeLoader.m_psModelFile,
&sOptions, // Parasolid options structure
&pParamsTranslateToPkPartsData, // Parasolid translation structure
&iNbPkParts, // [out] length of pPkParts
&pPkParts); // [out] PK_PART_t entity IDs 

重要提示:Parasolid建模器使用米作为其默认单位。将文件导出到Parasolid会话时,Exchange会将模型中的比例转换为米。

四、在Exchange中设置Parasolid属性

拓扑实体中唯一可转换为Parasolid的属性是标题以H3DX_BRIDGE_*开头的字符串属性。这些属性将转换为名称以H3DX_BRIDGE/*开头的Parasolid。

例如,标题为H3DX_BRIDGE_MyAttributeName的字符串属性将转换为名称为H3DX_BRIDGE/MyAttributeName的Parasolid 。

以下是在Exchange中设置Parasolid属性的方法:

A3DMiscAttribute* pAttribute = 0;
A3DMiscAttributeData sAttributeData;
A3D_INITIALIZE_DATA(A3DMiscAttributeData, sAttributeData);
sAttributeData.m_pcTitle = "Parasolid attributes."; // will create Parasolid attribute: H3DX_BRIDGE/MyAttributeName

A3DMiscSingleAttributeData sSingleAttributeData;
A3D_INITIALIZE_DATA(A3DMiscSingleAttributeData, sSingleAttributeData);
sSingleAttributeData.m_bTitleIsInt = false;
sSingleAttributeData.m_eType = kA3DModellerAttributeTypeString;
sSingleAttributeData.m_pcTitle = (char*) "H3DX_BRIDGE_MyAttributeName";
sSingleAttributeData.m_pcData = (char*) "My string attribute.";

sAttributeData.m_uiSize = 1;
sAttributeData.m_pSingleAttributesData = &sSingleAttributeData;

A3DMiscAttributeCreate(&sAttributeData, &pAttribute);

sBaseData.m_uiSize = 1;
sBaseData.m_ppAttributes = (A3DMiscAttribute**) malloc(sBaseData.m_uiSize * A3DUns32(sizeof(A3DMiscAttribute*)));
sBaseData.m_ppAttributes = &pAttribute;

CHECK_RET(A3DRootBaseSet(pEntity, &sBaseData));

在这个例子中,pEntity是您想要定义属性的A3DEntity



慧都科技已经为100+企业提供一站式的3D开发解决方案,负责3D ACIS ModelerParasolidHOOPS CEETRON3D产品的销售、试用、技术支持,赋能航空航天、建筑工程、船舶制造、机械加工、汽车等客户成功构建工程应用!欢迎咨询:023-6866168

↓↓扫码关注“HOOPS技术”,及时获取更多3D资讯↓↓


扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP