概述
HOOPS Exchange包括一个 Parasolid 连接器,它允许 Parasolid 开发人员轻松地将 CAD 数据导入到活动的 Parasolid 会话中。如果源数据基于 Parasolid(NX、Solid Edge 或 SolidWorks),则数据将按原样导入。
这意味着您可以假设数据的质量与您在 SolidWorks、Solid Edge 或 NX 中获得的数据完全相同。如果数据源自非 Parasolid 系统(例如 Catia、Creo 或 STEP 等),那么我们的连接器会利用 Parasolid 和可选的 PS/BodyShop 来确保模型以最高质量导入。
Parasolid 模型与附加数据(例如 PMI、装配结构和元数据)之间的连接维护在映射表中。
HOOPS中文网http://techsoft3d.evget.com/
使用 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
加载选项
中的加载选项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 版 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 会话中:
<span style="color:#000000">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
</span>
重要提示: Parasolid 建模器使用米作为默认单位。将文件导出到 Parasolid 会话时,Exchange 会将模型中的比例转换为米。
在 Exchange 中设置 Parasolid 属性
转换为 Parasolid 的拓扑实体的唯一属性是标题以 H3DX_BRIDGE_* 开头的字符串属性。这些属性将被转换为 Parasolid,其名称以H3DX_BRIDGE/*开头。例如,标题为H3DX_BRIDGE_MyAttributeName的字符串属性将被转换为名称为H3DX_BRIDGE/MyAttributeName 的Parasolid 。
以下是在 Exchange 中设置 Parasolid 属性的方法:
<span style="color:#000000">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))
</span>
在此示例中,pEntity是您要为其定义属性的A3DEntity 。
点击申请HOOPS试用http://x7pfmmn259623uby.mikecrm.com/l9292M9