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

概述

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

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

<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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/70550.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应用在汽车前照灯系统中的环境光传感芯片

为了保证行车照明的安全性和方便性&#xff0c;减轻驾驶员的劳动强度。近年来&#xff0c;出现了许多新的照明控制系统&#xff0c;例如用于日间驾驶的自动照明系统、光束调节系统、延迟控制等。尤其是汽车自适应前照灯系统&#xff0c;它是一种能够自动改变两种以上的光型以适…

网络通信原理IP头部格式(第四十二课)

字段作用解析:1)版本: 指的IP地址的版本 (IPv4 或 IPV6)2)首部长度: 次数据包的首部长度一共是多少,没有加可选项3)优先级与服务类型:表示****数据包是否需要优选传递4)总长度: 表示的是整个数据包的大小,也就****是首部+数据5)标识符、标志、段偏移量:的作用将拆开的…

深入理解 Flutter 图片加载原理

作者&#xff1a;京东零售 徐宏伟 来源&#xff1a;京东云开发者社区 前言 随着Flutter稳定版本逐步迭代更新&#xff0c;京东APP内部的Flutter业务也日益增多&#xff0c;Flutter开发为我们提供了高效的开发环境、优秀的跨平台适配、丰富的功能组件及动画、接近原生的交互体验…

聊聊火车的发展

目录 1.火车的概念 2.火车的发展历史 3.火车对战争的影响 4.火车对人们出行造成的影响 1.火车的概念 火车是一种由机械动力驱动的陆上交通工具&#xff0c;通常用来运输人员和货物。它由一列或多列的连接在一起的车厢组成&#xff0c;有轨道作为其行驶的基础&#xff0c;并通…

深入理解Java中的Object类的equals()和hashCode()

文章目录 1. equals()方法和hashCode()方法的联系1.1 equals()方法1.2 hashCode()方法 2. equals()、hashCode()和集合类的关系2.1 equals()方法的影响2.2 hashCode()方法的影响 3. 示例&#xff1a;重写equals()和hashCode()结论 &#x1f389;欢迎来到Java面试技巧专栏~深入理…

uniapp 官方扩展组件 uni-combox 实现:只能选择不能手写(输入中支持过滤显示下拉列表)

uniapp 官方扩展组件 uni-combox 实现&#xff1a;只能选择不能手写&#xff08;输入中支持过滤显示下拉列表&#xff09; uni-comboxuni-combox 原本支持&#xff1a;问题&#xff1a; 改造源码参考资料 uni-combox uni-combox 原本支持&#xff1a; 下拉选择。输入关键字&am…

什么文件传输协议才能保障跨国文件传输安全又稳定

在当今的全球化时代&#xff0c;跨国文件传输是一种常见而又重要的需求&#xff0c;无论是个人还是企业&#xff0c;都需要通过网络来分享和交换各种类型和大小的文件。但是&#xff0c;跨国文件传输也面临着许多挑战和风险&#xff0c;如何选择一个合适的文件传输协议&#xf…

性能测试—Jmeter工具

文章目录 性能测试1. 术语介绍2. 方法3. 应用场景4. 工具&#xff08;Jmeter&#xff09;4.1 介绍4.2 元件和组件4.2.2 元件4.2.1 组件 4.3 作用域4.4 参数化4.5 执行脚本 性能测试 1. 术语介绍 响应时间(Response time)&#xff1a;对请求作出响应所需要的时间。 在互联网上对…

【简单认识zookeeper+kafka分布式消息队列集群的部署】

文章目录 一、zookeeper1、定义2、工作机制3、Zookeeper 特点4、Zookeeper 数据结构5、Zookeeper 应用场景6、Zookeeper 选举机制&#xff08;1&#xff09;第一次启动选举机制&#xff08;2&#xff09;非第一次启动选举机制 7、部署zookeeper群集 二、消息队列概述1、为什么需…

C语言实现将字典dict.txt上传到数据库中

代码 #include <stdio.h> #include <string.h> #include <unistd.h> #include <sqlite3.h>int do_insert(sqlite3 *db,char *word,char *mean);int main(int argc, const char *argv[]) {//以读的方式打开文件FILE* fpfopen("./dict.txt",&…

好用的安卓手机投屏到mac分享

工具推荐&#xff1a;scrcpy github地址&#xff1a;https://github.com/Genymobile/scrcpy/tree/master mac使用方式 安装环境&#xff0c;打开terminal&#xff0c;执行以下命令&#xff0c;没有brew的先安装brew brew install scrcpy brew install android-platform-too…

Java Vue Uniapp MES生产执行管理系统

本MES系统是一款B/S结构、通用的生产执行管理系统&#xff0c;功能强大&#xff01; 系统基于多年离散智造行业的业务经验组建&#xff0c;主要目的是为国内离散制造业的中小企业提供一个专业化、通用性、低成本的MES系统解决方案。 联系作者获取