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.mzph.cn/news/40941.shtml

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

相关文章

主数据管理案例-某政务

1、 背景介绍及难点分析 近年来&#xff0c;我国在大数据发展方面持续发力&#xff0c;取得了明显成效。但也要看到&#xff0c;目前我国大数据发展还存在“孤岛化”“碎片化”等问题&#xff0c;无序参与过度与创新参与不足并存&#xff0c;导致大数据资源配置统筹不&#xff…

【C++】list容器

1.list基本概念 2.list构造函数 #include <iostream> using namespace std;#include<list> //链表list容器构造函数//输出list链表 void printList(const list<int>& L) {for (list<int>::const_iterator it L.begin(); it ! L.end(); it){cout &…

STM32入门学习之定时器PWM输出

1.脉冲宽度调制PWM(Pulse Width Modulation)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。PWM可以理解为高低电平的占空比&#xff0c;即输出高电平时间与低电平时间的比值。PWM的应用是否广泛&#xff0c;比如在步进电机的控制中&#xff0c;可以通过P…

【MySQL系列】-回表、覆盖索引真的懂吗

【MySQL系列】-回表、覆盖索引真的懂吗 文章目录 【MySQL系列】-回表、覆盖索引真的懂吗一、MYSQL索引结构1.1 索引的概念1.2 索引的特点1.3 索引的优点1.4 索引的缺点 二、B-Tree与BTree2.1 B-Tree2.2 BTree2.3 B-Tree 与BTree树的区别2.4 那么为什么InnoDB的主键最好要搞成有…

【软件测试】接口测试工具APIpost

说实话&#xff0c;了解APIpost是因为&#xff0c;我的所有接口相关的文章下&#xff0c;都有该APIpost水军的评论&#xff0c;无非就是APIpost是中文版的postman&#xff0c;有多么多么好用&#xff0c;虽然咱也还不是什么啥网红&#xff0c;但是不知会一声就乱在评论区打广告…

【力扣每日一题】2023.8.14 合并二叉树

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们合并两棵二叉树&#xff0c;合并的方式就是把对应位置的节点的值相加&#xff0c;最后把合并后的二叉树的根节点返回出去。 这类二…

一文看尽R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD详解

一文看尽R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD详解 以下六篇文章总结详细&#xff1a; 1. 一文读懂目标检测&#xff1a;R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD 2. 【深度学习】R-CNN 论文解读及个人理解 3、R-CNN论文详解 4、一文读懂Faster RCNN 5、学一百遍都…

JAVA基础知识(六)——异常处理

异常 一、异常概述与异常体系结构二、常见异常三、异常处理机制一&#xff1a;try-catch-finally四、异常处理机制二&#xff1a;throws五、手动抛出异常&#xff1a;throw六、用户自定义异常类七、开发中如何选择使用try-catch-finally还是使用throws八、如何看待代码中的编译…

goland插件推荐Rider UI Theme Pack

推荐一个goland配色插件Rider UI Theme Pack&#xff0c;里面自带visual assist配色&#xff0c;配色截图如下&#xff1a; 直接在plugins里面进行搜索或者在插件home page下载后进行安装&#xff0c; 然后按照下图进行设置即可。 此插件还适用于Jetbrains旗下的Clion和Pycharm…

WX1860- ngbe-1.2.5 xdp程序在路由模式下,使用iperf工具测试数据包不转发,用jmeter可以

本地验证时重定向iperf包有出现calltrace错误&#xff0c;经推断&#xff0c;系统PAGE_SIZE<8k时可能出现&#xff08;getconf PAGE_SIZE指令可查看&#xff09;&#xff0c;按下图将ngbe_main.c的2350行ngbe_rx_bufsz改为ngbe_rx_pg_size可修复。其次&#xff0c;需要将加载…

Linux多线程【初识线程】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、什么是线程&#xff1f;1.1、基本概念1.2、线程理解1.3、进程与线程的关系…

分布式事务与解决方案

一、什么是分布式事务 首先我们知道本地事务是指事务方法中的操作只依赖本地数据库&#xff0c;可保证事务的ACID特性。而在分布式系统中&#xff0c;一个应用系统被拆分为多个可独立部署的微服务&#xff0c;在一个微服务的事务方法中&#xff0c;除了依赖本地数据库外&#…

【深入理解ES6】块级作用域绑定

1. var声明及变量提升机制 提升&#xff08;Hoisting&#xff09;机制&#xff1a;通过关键字var声明的变量&#xff0c;都会被当成在当前作用域顶部生命的变量。 function getValue(condition){if(condition){var value "blue";console.log(value);}else{// 此处…

代码随想录算法训练营第三十六天 | 435. 无重叠区间,763.划分字母区间,56. 合并区间

代码随想录算法训练营第三十六天 | 435. 无重叠区间&#xff0c;763.划分字母区间&#xff0c;56. 合并区间 435. 无重叠区间:eyes:题目总结:eyes: 763.划分字母区间:eyes:题目总结:eyes: 56. 合并区间:eyes:题目总结:eyes: 435. 无重叠区间 题目链接 视频讲解 给定一个区间的…

并发编程系列-Semaphore

Semaphore&#xff0c;如今通常被翻译为"信号量"&#xff0c;过去也曾被翻译为"信号灯"&#xff0c;因为类似于现实生活中的红绿灯&#xff0c;车辆是否能通行取决于是否是绿灯。同样&#xff0c;在编程世界中&#xff0c;线程是否能执行取决于信号量是否允…

8.10 用redis实现缓存功能和Spring Cache

什么是缓存? 缓存(Cache), 就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码。 通过Redis来缓存数据&#xff0c;减少数据库查询操作; 逻辑 每个分类的菜品保存一份缓存数据 数据库菜品数据有变更时清理缓存数据 如何将商品数据缓存起…

p-级数的上界(Upper bound of p-series)

积分判别法-The Integral Test https://math.stackexchange.com/questions/2858067/upper-bound-of-p-series https://courses.lumenlearning.com/calculus2/chapter/the-p-series-and-estimating-series-value/ 两个重要级数&#xff08;p级数和几何级数&#xff09; ht…

WPF显示初始界面--SplashScreen

WPF显示初始界面–SplashScreen 前言 WPF应用程序的运行速度快&#xff0c;但并不能在瞬间启动。当第一次启动应用程序时&#xff0c;会有一些延迟&#xff0c;因为公共语言运行时&#xff08;CLR&#xff09;首先需要初始化.NET环境&#xff0c;然后启动应用程序。 对于WPF中…

高忆管理:股票T+0交易是什么意思?t+0交易有什么好处?

股票的买卖准则有很多种&#xff0c;T0买卖便是其中之一。那么股票T0买卖是什么意思&#xff1f;t0买卖有什么优点&#xff1f;高忆管理也为大家预备了相关内容&#xff0c;以供参考。 股票T0买卖是什么意思&#xff1f; T0买卖准则是指出资者当天买入的股票能够在当天卖出&am…

SpringBoot 异步、邮件任务

异步任务 创建一个Hello项目 创建一个类AsyncService 异步处理还是非常常用的&#xff0c;比如我们在网站上发送邮件&#xff0c;后台会去发送邮件&#xff0c;此时前台会造成响应不动&#xff0c;直到邮件发送完毕&#xff0c;响应才会成功&#xff0c;所以我们一般会采用多线…