creo toolkit二次开发学习之程序集(ProAsmcomp)和装配体组件路径对象(ProAsmcomppath)
程序集ProAsmcomp可以理解为装配体组件对象。
对象ProAssembly
是ProSolid
的一个实例,并共享相同的声明。因此,ProAssembly
对象可以作为适用于装配体的任何ProSolid
和ProMdl
函数的输入。特别是,因为你可以使用函数ProSolidFeatVisit()
来遍历特征,所以你可以像处理零件一样提取装配基准特征及其几何形状(在 “核心:3D 几何” 部分中有详细描述)。
然而,装配体除了基准中的那些之外不包含活动的几何项 —— 也就是说,没有像 “核心:3D 几何” 和 “元素树:特征创建原理” 部分中所描述的 “实体” 几何形状。因此,函数ProSolidSurfaceVisit()
将找不到任何曲面,并且诸如孔和槽之类的实体装配特征将不包含活动的曲面或边。
装配体的实体几何形状完全包含在其组件中。每个组件是类型为PRO_FEAT_COMPONENT
的特征,它是对一个零件或另一个装配体的引用,加上一组用于确定其在父装配体中的几何位置的参数约束。(可以理解为组件下的零件相当于这个组件的特征,类型为PRO_FEAT_COMPONENT,加上参数约束构建成一个装配体
)
诸如孔和槽之类的实体装配特征,并且因此影响装配层次结构中零件的实体几何形状,它们本身并不包含描述那些修改的几何项。这些项总是包含在其几何形状被修改的零件中,在为此目的创建的类型为PRO_FEAT_ASSEM_CUT
的局部特征中。
对于装配体来说,最重要的 Creo Parametric TOOLKIT 函数是那些对装配体的组件进行操作的函数。为此目的定义了对象ProAsmcomp
,它是ProFeature
的一个实例,并共享其DHandle
声明。每个装配体组件都被视为一种特征,并且组件的整数标识符也是特征标识符。
一个装配体组件可以是另一个装配体。因此,一般来说,一个装配体可以在多个级别上包含装配体和零件的层次结构,其中一些装配体和零件可能会出现多次。为了在根装配体的上下文中确定任何数据库项的作用,仅拥有该项的整数标识符以及对其所属零件或装配体的句柄是不够的,就像其ProFeature
或ProGeomitem
描述所提供的那样。还必须给出从根装配体到拥有数据库项的零件或装配体的装配体组件引用的完整路径。对象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 对象。
1. 为根装配体的每个零部件调用 ProAsmcompMdlGet() 以查找该零部件的模型。
2. 调用 ProMdlTypeGet() 以确定模型是零件还是装配体。
3. 如果模型是装配体,请再次调用 ProSolidFeatVisit() 遍历每个零部件。
• PRO_ASM_COMP_TYPE_WORKPIECE - 工件 |
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文档:http://doc.captcha.tianai.cloud/#%E4%BD%BF%E7%94%A8demo 我的完整代码:https://gitee.com/Min-Duck/RuoYi-Vue.git 主pom.xml 加入依赖 <!-- 滑块验证码 --><dependency><groupId>cloud.tianai.captc…...

Django安装
在终端创建django项目 1.查看自己的python版本 输入对应自己本机python的版本,列如我的是3.11.8 先再全局安装django依赖包 2.在控制窗口输入安装命令: 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) 是一个开源地面站,基于QT开发的,有跨平台的功能。可以在Windows,Android,MacOS或Linux上运行。它可以将PX4固件加…...

WPF+MVVM案例实战(二十一)- 制作一个侧边弹窗栏(AB类)
文章目录 1、案例效果1、侧边栏分类2、AB类侧边弹窗实现1.文件创建2、样式代码与功能代码实现3、功能代码实现 3 运行效果4、源代码获取 1、案例效果 1、侧边栏分类 A类 :左侧弹出侧边栏B类 :右侧弹出侧边栏C类 :顶部弹出侧边栏D类 …...
linux中怎样登录mysql数据库
在Linux中登录MySQL数据库,可以使用以下命令: mysql -u username -p 其中,username是你的MySQL用户名。运行该命令后,系统会提示你输入密码。 如果MySQL服务器不在本地主机或者你需要指定不同的端口,可以使用以下命…...
深入理解 Linux 内存管理:free 命令详解
在 Linux 系统中,内存是关键的资源之一,管理和监控内存的使用情况对系统的稳定性和性能至关重要。free 命令是 Linux 中用于查看内存使用情况的重要工具,它可以让我们快速了解系统中物理内存和交换分区(Swap)的使用状态…...

指针万字超级最强i解析与总结!!!!!
文章目录 1.内存和地址1.1内存1.2究竟该如何理解编址 2.指针变量和地址2.1 取地址操作符(&)2.2指针变量和解引用操作符(*)2.2.1指针变量2.2.2如何拆解指针类型2.2.3解引用操作符 2.3 指针变量的大小 3.指针变量类型的意义3.1指…...

告别生硬电子音,这款TTS软件让语音转换更自然动听
Balabolka是一款革新性的文本语音转换工具,为用户提供了极其灵活和个性化的阅读体验。这款软件不仅仅是简单的文字朗读器,更是一个智能的语音助手,能够将各类文本瞬间转化为生动自然的语音输出。 软件的核心优势在于其卓越的文件兼容性和多样…...
CORS(跨域资源共享)和SOP(同源策略)
CORS(跨域资源共享)和SOP(同源策略)不是同一个东西,但它们紧密相关,并且常常一起讨论,因为 CORS 是为了解决同源策略带来的跨域问题而引入的。 同源策略(Same-Origin Policy&#x…...
【系统设计】数据库压缩技术详解:从基础到实践(附Redis内存优化实战案例)
概述 在现代数据库系统中,压缩技术对于提高存储效率和加速查询性能至关重要。特别是在处理大规模数据时,压缩能够极大地减少存储空间,并优化查询性能。本文将总结几种常见的压缩方式,并通过详细的解释和示例清晰地展示每种压缩方…...

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

debian11安装最新rabbitmq
1、使用官网提供系统对应的安装脚本 安装 版本说明: 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.类属性 类属性:类属性就是类对象具有的属性,一般写法在类内部、方法的外部定义的变量,就是类属性,类属性在内存中只有一份。可以通过类名直接访问,也可通过实例访问。 class Circle:# 类属性,定义圆…...

简单又便宜的实现电脑远程开机唤醒方法
现有的远程开机方案 1)使用向日葵开机棒 缺点是比较贵一点,开机棒要一百多,而且查了评论发现挺多差评说不稳定,会有断联和无法唤醒的情况,而且设置也麻烦,还需要网卡支持WOL 2)使用远程开机卡 …...
Flutter鸿蒙next 状态管理框架对比分析
在 Flutter 开发中,状态管理是一个非常重要且关键的主题。Flutter 中的应用状态管理直接影响着应用的性能、可维护性和开发效率。随着 Flutter 生态的成熟,已经出现了许多不同的状态管理方案,各具特色,适用于不同的开发场景。本文…...

Vue Router进阶详解
导航守卫 若依框架登录鉴权详解(动态路由)_若依鉴权-CSDN博客 完整的导航解析流程 导航被触发: 当用户点击页面中的链接、使用编程式导航(如router.push或router.replace)或手动输入URL时,导航流程被触发。…...

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

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...