Loading
0

3D模型格式转换工具如何与Parasolid集成?

概述

HOOPS Exchange包括一个 Parasolid 连接器,它允许 Parasolid 开发人员轻松地将 CAD 数据导入到活动的 Parasolid 会话中。如果源数据基于 ParasolidNXSolid Edge SolidWorks),则数据将按原样导入。这意味着您可以假设数据的质量与您在 SolidWorksSolid Edge NX 中获得的数据完全相同。如果数据源自非 Parasolid 系统(例如 CatiaCreo 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

../../_images/ParasolidDemoViewer.png

加载选项

中的加载选项A3DRWParamsTranslateToPkPartsData会对性能和模型质量产生重大影响,因此下面对每个选项进行回顾。

场地

类型

描述

m_eHealing

A3DETranslateToPkParts修复

枚举来控制愈合。修复控制拓扑公差的调整、消除几何不连续性、消除切片器面等。可以启用、禁用此选项,或仅对非 Parasolid 文件启用此选项。

m_eComputeAccurateEdges

A3DETranslateToPkPartsAccurate

枚举来控制精确的边缘计算。可以启用、禁用此选项,或仅对非 Parasolid 文件启用此选项。

m_bDisjoinIfFaceFaceError

A3D布尔

如果为 TRUE,则具有面-面错误的实体将被分离。这意味着当检测到错误时,有问题的人脸将与模型的其余部分隔离。仅在 PK_FACE_state_bad_face_face_c 错误的情况下才将面视为分离:自相交体。

m_bSew

A3D布尔

控制是否启用缝纫。

m_dSewingTolerance

A3D双

缝纫算法的公差。

m_eSimplifyGeometry

A3DETranslateToPkPartsSimplifyGeometry

通过尽可能将曲线数据转换为相应的分析形式(例如圆锥体、平面或球体)来简化几何和拓扑。可以启用、禁用此选项,或仅对非 Parasolid 文件启用此选项。

m_eMergeEntities

A3DETranslateToPkPartsMergeEntities

删除多余的边缘和表面,以减少内存占用并提高性能。可以启用、禁用此选项,或仅对非 Parasolid 文件启用此选项。

m_pcPSBodyShopPath

A3DUTF8Char*

PSBodyshop DLL 的路径。Exchange 将使用 PSBodyshop 来提高非 Parasolid 模型的导出质量。也就是说,更多的实体被近似为分析,并且更多的实体被合并。这是一个可选字段:仅当您想提供自己的库时才可以考虑设置它。

m_pMapper

A3DMiscMapper**

Mapper 用于检索 PRC 和 Parasolid 实体之间的链接。请参阅下面的部分。

m_bUseColour2Attribute

A3D布尔

使用 SDL/TYSA_COLOUR_2 Parasolid 属性

m_bUseUNameAttribute

A3D布尔

使用 SDL/TYSA_UNAME Parasolid 属性。

m_bUseLayerAttribute

A3D布尔

使用 SDL/TYSA_LAYER Parasolid 属性。

m_uiNbProc

A3D布尔

仅适用于 A3DAsmModelFileTranslateToPkParts:使用它来决定使用的进程数。如果为 0 1 或 A3DAsmModelFileTranslateToPkParts 将仅在当前进程中运行。对于任何其他值,操作将使用请求的进程数执行。如果系统不支持,该字段可能会自动限制为较低的值。

先决条件

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

  • Parasolid 的最低版本在 Windows 上为24.1 ,在 Linux 上为27.0。对于 Parasolid 收敛建模(多面数据),您至少需要28.1。

  • 执行环境必须有一个名为P_SCHEMA的已定义环境变量,该变量扩展为 Parasolid Schema文件夹的路径。

  • Parasolid 桥在 macOS 上不可用。

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 会话中:

A3DRWParamsExportParasolidDatasExportOptions;A3D_INITIALIZE_DATA(A3DRWParamsExportParasolidData,sExportOptions);// ... set your desired export options hereintiNbPkParts;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_* 开头的字符串属性。这些属性将被转换为 Parasolid,其名称以H3DX_BRIDGE/*开头。例如,标题为H3DX_BRIDGE_MyAttributeName的字符串属性将被转换为名称为H3DX_BRIDGE/MyAttributeName 的Parasolid 。

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

A3DMiscAttribute*pAttribute=0;A3DMiscAttributeDatasAttributeData;A3D_INITIALIZE_DATA(A3DMiscAttributeData,sAttributeData);sAttributeData.m_pcTitle="Parasolid attributes.";// will create parasolid attribute: H3DX_BRIDGE/MyAttributeNameA3DMiscSingleAttributeDatasSingleAttributeData;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 。


慧都科技Tech Soft 3D-HOOPS在中国区的唯一增值服务商,负责HOOPS试用,咨询,销售,技术支持,售后,旨在为企业提供一站式的3D开发解决方案。如果您的企业目前也有3D数据格式转换3D web轻量化渲染的需求,需要获得3D 轻量化引擎HOOPS的60天免费试用,欢迎咨询在线客服或直接拨打023-68661681。

扫码关注“HOOPS”微信公众号,及时获取更多hoops技术资讯

--------------------------------------------------------------------------------------------------------------------------