当前位置: 首页 > news >正文

creo toolkit二次开发学习之程序集(ProAsmcomp)和装配体组件路径对象(ProAsmcomppath)

程序集ProAsmcomp可以理解为装配体组件对象。

对象ProAssemblyProSolid的一个实例,并共享相同的声明。因此,ProAssembly对象可以作为适用于装配体的任何ProSolidProMdl函数的输入。特别是,因为你可以使用函数ProSolidFeatVisit()来遍历特征,所以你可以像处理零件一样提取装配基准特征及其几何形状(在 “核心:3D 几何” 部分中有详细描述)。

然而,装配体除了基准中的那些之外不包含活动的几何项 —— 也就是说,没有像 “核心:3D 几何” 和 “元素树:特征创建原理” 部分中所描述的 “实体” 几何形状。因此,函数ProSolidSurfaceVisit()将找不到任何曲面,并且诸如孔和槽之类的实体装配特征将不包含活动的曲面或边。

装配体的实体几何形状完全包含在其组件中。每个组件是类型为PRO_FEAT_COMPONENT的特征,它是对一个零件或另一个装配体的引用,加上一组用于确定其在父装配体中的几何位置的参数约束。(可以理解为组件下的零件相当于这个组件的特征,类型为PRO_FEAT_COMPONENT,加上参数约束构建成一个装配体

诸如孔和槽之类的实体装配特征,并且因此影响装配层次结构中零件的实体几何形状,它们本身并不包含描述那些修改的几何项。这些项总是包含在其几何形状被修改的零件中,在为此目的创建的类型为PRO_FEAT_ASSEM_CUT的局部特征中。

对于装配体来说,最重要的 Creo Parametric TOOLKIT 函数是那些对装配体的组件进行操作的函数。为此目的定义了对象ProAsmcomp,它是ProFeature的一个实例,并共享其DHandle声明。每个装配体组件都被视为一种特征,并且组件的整数标识符也是特征标识符。

一个装配体组件可以是另一个装配体。因此,一般来说,一个装配体可以在多个级别上包含装配体和零件的层次结构,其中一些装配体和零件可能会出现多次。为了在根装配体的上下文中确定任何数据库项的作用,仅拥有该项的整数标识符以及对其所属零件或装配体的句柄是不够的,就像其ProFeatureProGeomitem描述所提供的那样。还必须给出从根装配体到拥有数据库项的零件或装配体的装配体组件引用的完整路径。对象ProAsmcomppath用作 Creo Parametric TOOLKIT 装配体函数的输入,实现了这个目的。(可以理解为ProAsmcomppath是每个组件或者零件对象在根装配体下的路径信息

ProAsmcomppath的声明如下:

typedef struct pro_comp_path
{ProSolid    owner;ProIdTable  comp_id_table;int         table_num;
} ProAsmcomppath;

数据结构字段如下:

  • owner(所有者)—— 标识根装配体,即当前窗口模型顶级对象,如果是组件,则是当前窗口最大组件模型,零件下获取不到模型对象,只会返回随机内存中的东西。
  • comp_id_table(组件标识符表)—— 一个整数数组,包含形成从根装配体向下到被引用的组件零件或装配体的路径的组件的标识符。
  • table_num—— 指定comp_id_table数组中组件标识符的数量。

下图 “示例装配层次结构” 展示了一个装配层次结构,以及两个ProAsmcomppath对象内容的示例。

在上图中,子装配 C 是装配 A 中的元件标识符 11,零件 B 是装配 AB 中的元件标识符 3,然后打开。 子装配体 AB 出现两次。要引用 B 部分的两个实例,请使用以下内容:

Component B’           Component B"
table_num = 5          table_num = 4
comp_id_tab[0] = 2     comp_id_tab[0] = 11
comp_id_tab[1] = 2     comp_id_tab[1] = 6
comp_id_tab[2] = 5     comp_id_tab[2] = 12
comp_id_tab[3] = 2     comp_id_tab[3] = 3
comp_id_tab[4] = 3

table_num设置为 1 的 ProAsmcomppath 结构包含与 ProAsmcomp 对象相同的信息。

对象 ProAsmcomppath 是 ProSelection 对象中的主要成分之一,如 Selection 对象中所述。

装配体的每个零部件也是该装配体的一个特征。因此,要访问组件,请使用 ProSolidFeatVisit() 访问特征,并使用函数 ProFeatureTypeGet() 查找类型为 PRO_FEAT_COMPONENT 的特征。可以通过强制转换将每个组件的 ProFeature 对象转换为 ProAsmcomp 对象。

        要为组件创建 ProAsmcomppath 对象,请使用函数 ProAsmcomppathInit() 并将组件标识符表设置为仅包含单个组件标识符。
        函数 ProAsmcompMdlMdlnameGet() 检索组件的模型名称和类型。如果在检索时缺少装配体零部件,则函数 ProAsmcompMdlMdlnameGet() 仍提供有关该零部件的信息,而函数 ProAsmcompMdlGet() 无法检索有效的模型句柄。
        函数 ProAsmcompMdlGet() 为零部件所引用的零件或装配体提供 ProMdl 句柄。遍历装配体中所有级别的零部件 层次结构中,创建一个递归函数来执行以下步骤:
1.    为根装配体的每个零部件调用 ProAsmcompMdlGet() 以查找该零部件的模型。
2.    调用 ProMdlTypeGet() 以确定模型是零件还是装配体。
3.    如果模型是装配体,请再次调用 ProSolidFeatVisit() 遍历每个零部件。
函数 ProAsmcomppathMdlGet() 检索由 ProAsmcomppath 指定的模型,在分析引用程序集的 ProSelection 对象时非常有用。
函数 ProAsmcompTypeGet() 生成装配体零部件的类型。可能类型的示例如下:

•    PRO_ASM_COMP_TYPE_WORKPIECE - 工件
•    PRO_ASM_COMP_TYPE_REF_MODEL - 参考模型
•    PRO_ASM_COMP_TYPE_FIXTURE - 夹具
•    PRO_ASM_COMP_TYPE_MOLD_BASE - 模架
•    PRO_ASM_COMP_TYPE_MOLD_COMP - 模具元件
•    PRO_ASM_COMP_TYPE_MOLD_ASSEM - 模具组件
•    PRO_ASM_COMP_TYPE_GEN_ASSEM - 总装
•    PRO_ASM_COMP_TYPE_CAST_ASSEM - 铸造组件
•    PRO_ASM_COMP_TYPE_DIE_BLOCK - 模具块
•    PRO_ASM_COMP_TYPE_DIE_COMP - 模具元件
•    PRO_ASM_COMP_TYPE_SAND_CORE - 砂芯
•    PRO_ASM_COMP_TYPE_CAST_RESULT - 强制转换结果
•    PRO_ASM_COMP_TYPE_FROM_MOTION () - 供 Creo Simulate 使用的元件。
•    PRO_ASM_COMP_TYPE_NO_DEF_ASSUM () - Creo Parametric 无法为其应用默认假设的元件。

函数 ProAsmcompMdldataGet() 将程序集组件的句柄作为其输入参数,并检索以下信息:

r_mdl_type - 使用枚举数据类型 ProMdlType 指定模型的类型。

r_mdl_filetype () - 使用枚举数据类型 ProMdlfileType 指定元件的文件类型。

r_mdl_name () - 指定元件的名称。您必须使用函数 ProWstringFree() 释放此参数。

相关文章:

creo toolkit二次开发学习之程序集(ProAsmcomp)和装配体组件路径对象(ProAsmcomppath)

程序集ProAsmcomp可以理解为装配体组件对象。 对象ProAssembly是ProSolid的一个实例,并共享相同的声明。因此,ProAssembly对象可以作为适用于装配体的任何ProSolid和ProMdl函数的输入。特别是,因为你可以使用函数ProSolidFeatVisit()来遍历特…...

深入浅出 Spring Boot 与 Shiro:构建安全认证与权限管理框架

一、Shiro框架概念 (一)Shiro框架概念 1.概念: Shiro是apache旗下一个开源安全框架,它对软件系统中的安全认证相关功能进行了封装,实现了用户身份认证,权限授权、加密、会话管理等功能,组成一…...

外包干了三年,精神严重内耗...

前段时间我同事(做测试的一个妹子)跟我讲,感觉早上起来十分的疲惫,不想上班,问我们这是什么样的现象,其实有时候我也有这种感觉,虽然我卷,但我也是肉体凡胎啊!不是机器人…...

ruoyi-vue集成tianai-captcha验证码

后端代码 官方使用demo文档&#xff1a;http://doc.captcha.tianai.cloud/#%E4%BD%BF%E7%94%A8demo 我的完整代码&#xff1a;https://gitee.com/Min-Duck/RuoYi-Vue.git 主pom.xml 加入依赖 <!-- 滑块验证码 --><dependency><groupId>cloud.tianai.captc…...

Django安装

在终端创建django项目 1.查看自己的python版本 输入对应自己本机python的版本&#xff0c;列如我的是3.11.8 先再全局安装django依赖包 2.在控制窗口输入安装命令&#xff1a; pip3.11 install django 看到Successflully 说明我们就安装成功了 python的Scripts文件用于存…...

Ubuntu 20.04 安装 QGC v4.3 开发环境

Ubuntu 20.04 安装 QGC开发环境 1. 准备安装 Qt 5.15.2安装依赖获取源码 2. 编译参考 前言 QGC ( QGroundControl) 是一个开源地面站&#xff0c;基于QT开发的&#xff0c;有跨平台的功能。可以在Windows&#xff0c;Android&#xff0c;MacOS或Linux上运行。它可以将PX4固件加…...

WPF+MVVM案例实战(二十一)- 制作一个侧边弹窗栏(AB类)

文章目录 1、案例效果1、侧边栏分类2、AB类侧边弹窗实现1.文件创建2、样式代码与功能代码实现3、功能代码实现 3 运行效果4、源代码获取 1、案例效果 1、侧边栏分类 A类 &#xff1a;左侧弹出侧边栏B类 &#xff1a;右侧弹出侧边栏C类 &#xff1a;顶部弹出侧边栏D类 &#xf…...

linux中怎样登录mysql数据库

在Linux中登录MySQL数据库&#xff0c;可以使用以下命令&#xff1a; mysql -u username -p 其中&#xff0c;username是你的MySQL用户名。运行该命令后&#xff0c;系统会提示你输入密码。 如果MySQL服务器不在本地主机或者你需要指定不同的端口&#xff0c;可以使用以下命…...

深入理解 Linux 内存管理:free 命令详解

在 Linux 系统中&#xff0c;内存是关键的资源之一&#xff0c;管理和监控内存的使用情况对系统的稳定性和性能至关重要。free 命令是 Linux 中用于查看内存使用情况的重要工具&#xff0c;它可以让我们快速了解系统中物理内存和交换分区&#xff08;Swap&#xff09;的使用状态…...

指针万字超级最强i解析与总结!!!!!

文章目录 1.内存和地址1.1内存1.2究竟该如何理解编址 2.指针变量和地址2.1 取地址操作符&#xff08;&&#xff09;2.2指针变量和解引用操作符&#xff08;*&#xff09;2.2.1指针变量2.2.2如何拆解指针类型2.2.3解引用操作符 2.3 指针变量的大小 3.指针变量类型的意义3.1指…...

告别生硬电子音,这款TTS软件让语音转换更自然动听

Balabolka是一款革新性的文本语音转换工具&#xff0c;为用户提供了极其灵活和个性化的阅读体验。这款软件不仅仅是简单的文字朗读器&#xff0c;更是一个智能的语音助手&#xff0c;能够将各类文本瞬间转化为生动自然的语音输出。 软件的核心优势在于其卓越的文件兼容性和多样…...

CORS(跨域资源共享)和SOP(同源策略)

CORS&#xff08;跨域资源共享&#xff09;和SOP&#xff08;同源策略&#xff09;不是同一个东西&#xff0c;但它们紧密相关&#xff0c;并且常常一起讨论&#xff0c;因为 CORS 是为了解决同源策略带来的跨域问题而引入的。 同源策略&#xff08;Same-Origin Policy&#x…...

【系统设计】数据库压缩技术详解:从基础到实践(附Redis内存优化实战案例)

概述 在现代数据库系统中&#xff0c;压缩技术对于提高存储效率和加速查询性能至关重要。特别是在处理大规模数据时&#xff0c;压缩能够极大地减少存储空间&#xff0c;并优化查询性能。本文将总结几种常见的压缩方式&#xff0c;并通过详细的解释和示例清晰地展示每种压缩方…...

基于SpringBoot的“乐校园二手书交易管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“乐校园二手书交易管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页界面图 用户注册界面图 二手…...

debian11安装最新rabbitmq

1、使用官网提供系统对应的安装脚本 安装 版本说明&#xff1a; Debian Buster代表Debian 10 Debian Bullseye代表Debian 11 Debian Bookworm代表Debian 12 ‌Debian Trixie代表Debian 13 Debian Sid代表Debian unstable版本 2、新建脚本文件 vim rabbitMq.sh将脚本内容复制到…...

三十三、Python基础语法(面向对象其他语法-下)

一、属性划分 1.类属性 类属性&#xff1a;类属性就是类对象具有的属性&#xff0c;一般写法在类内部、方法的外部定义的变量,就是类属性&#xff0c;类属性在内存中只有一份。可以通过类名直接访问&#xff0c;也可通过实例访问。 class Circle:# 类属性&#xff0c;定义圆…...

简单又便宜的实现电脑远程开机唤醒方法

现有的远程开机方案 1&#xff09;使用向日葵开机棒 缺点是比较贵一点&#xff0c;开机棒要一百多&#xff0c;而且查了评论发现挺多差评说不稳定&#xff0c;会有断联和无法唤醒的情况&#xff0c;而且设置也麻烦&#xff0c;还需要网卡支持WOL 2&#xff09;使用远程开机卡 …...

Flutter鸿蒙next 状态管理框架对比分析

在 Flutter 开发中&#xff0c;状态管理是一个非常重要且关键的主题。Flutter 中的应用状态管理直接影响着应用的性能、可维护性和开发效率。随着 Flutter 生态的成熟&#xff0c;已经出现了许多不同的状态管理方案&#xff0c;各具特色&#xff0c;适用于不同的开发场景。本文…...

Vue Router进阶详解

导航守卫 若依框架登录鉴权详解&#xff08;动态路由&#xff09;_若依鉴权-CSDN博客 完整的导航解析流程 导航被触发&#xff1a; 当用户点击页面中的链接、使用编程式导航&#xff08;如router.push或router.replace&#xff09;或手动输入URL时&#xff0c;导航流程被触发。…...

进程的控制

进程 task_struct mm_struct(虚拟地址空间) 页表 代码和数据 。 新建进程先有管理系统&#xff0c;然后才有代码和数据。 fork()函数&#xff1a;子进程返回0&#xff0c;父进程返回的是子进程的pid - - - 方便父进程对子进程标识。 进程终止&#xff1a;释放代码和数据占…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...