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() 释放此参数。

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

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

相关文章

【启程Golang之旅】深入理解 Protocol Buffers 及其应用

如果你是 Go 语言的开发者,理解如何在 Go 中使用 Protobuf,将帮助你大幅提升数据传输的效率,并实现更高性能的系统设计。 本篇文章将深入探讨 Go 语言中使用 Protobuf 的基础知识、常见应用以及最佳实践,带你一步步了解如何在项目…

linux同步执行命令脚本 (xcall)

linux同步执行命令脚本 (xcall) 1、在/usr/local/bin目录下 创建xcall文件 vim /usr/local/bin/xcall2、输入内容 #!/bin/bash # 获取控制台指令 判断指令是否为空 pcount$# if((pcount0)); thenecho "command can not be null !"exit fifor host in bigdata01 …

Intent介绍#1

Intent 它是Android里非常重要的角色,基本上是核心人物。 能做的 startActivity --> 启动activitybroadcastIntent -> BroadcastContext.startService(Intent) Context.bindService(Intent, BindServiceFlags, Executor, ServiceConnection) -> Service…

VUEX的介绍和使用方式

Vuex 简介 Vuex 是专为 Vue.js 应用设计的状态管理模式,它可以帮助开发者在组件之间更方便地共享数据。Vuex 使用集中化的方式来管理应用的状态,将应用中所有共享的状态存储在一个 store 中。这样可以避免组件之间因为数据共享而产生的复杂交互&#xf…

鸿蒙开发案例:七巧板

【1】引言(完整代码在最后面) 本文介绍的拖动七巧板游戏是一个简单的益智游戏,用户可以通过拖动和旋转不同形状的七巧板块来完成拼图任务。整个游戏使用鸿蒙Next框架开发,利用其强大的UI构建能力和数据响应机制,实现了…

(61)使用LMS算法估计线性预测器并计算估计误差的MATLAB仿真

文章目录 前言一、仿真说明二、仿真代码三、仿真结果1.LMS自适应滤波器权向量更新曲线2.LMS自适应滤波器算法学习曲线3.期望信号与LMS自适应滤波器输出信号 前言 本文介绍了LMS自适应滤波器对线性预测器系统权系数的估计,进行100次独立实验,计算平均估计…

313页电力集团大数据应用支撑平台技术支撑服务项目技术投标方案

▲关注智慧方案文库,学习9000多份最新解决方案,其中 PPT、WORD超过7000多份 ,覆盖智慧城市多数领域的深度知识社区,稳定更新4年,日积月累,更懂行业需求。 313页Word大型电力集团大数据应用支撑平台 技术支…

rabbitMq怎么保证消息不丢失?消费者没有接收到消息怎么处理

在使用RabbitMQ时,保证消息不丢失以及处理消费者未接收到消息的情况可以通过以下几个方法: 1. 确保消息的持久化 队列持久化:在声明队列时将其设置为持久化(durabletrue),这样RabbitMQ在重启后也会保留队…

极狐GitLab 签约足下科技,加速国产智驾操作系统的发展与普及

客户背景 足下科技是一家致力于成为智能汽车软件平台、产品与服务领导者的高科技企业,成立于 2022年 3 月,总部位于深圳市。足下科技自主研发的智能驾驶操作系统 Earth 和 Air 工具链,协助OEM和Tier1厂商降低算法和软件开发难度,…

在 MacOS 上跑 kaldi

categories: [asr] tags: C asr kaldi 在MacOS 下跑 kaldi brew install automake llvm cmake sox libtool subversion基本安装 Common build problems pyenv/pyenv Wiki; brew install pyenv pyenv install -v 2.7.18# Set the python version.pyenv global 2.7.18 # Expor…

【C#】Thread.CurrentThread的用法

Thread.CurrentThread 是 System.Threading.Thread 类的一个静态属性,它返回当前正在执行的线程对象。通过 Thread.CurrentThread,可以访问和修改当前线程的各种属性和方法。 下面是一些常见的用法和示例: 1. 获取当前线程的信息 使用 Thr…

使用 Javascript 停用外部集成的 Javascript 文件

优质博文&#xff1a;IT-BLOG-CN 问题 我已将以下内容包含在我的标题代码&#xff08;Google AdSense&#xff09;中。 现在我正在寻找一种通过 Javascript 停用此行的方法&#xff1a; <script type"text/javascript" src"https://domain.tld/javascrip…

Node.js 模块详解

模块的概念 Node.js 运行在 V8 JavaScript 引擎上&#xff0c;通过 require() 函数导入相关模块来处理服务器端的各种进程。一个 Node.js 模块可以是一个函数库、类集合或其他可重用的代码&#xff0c;通常存储在一个或多个 .js 文件中。 例如&#xff0c;启动一个 Node.js 服…

6款IntelliJ IDEA插件,让Spring和Java开发如虎添翼

文章目录 1、SonarLint2、JRebel for IntelliJ3、SwaggerHub插件4、Lombok插件5、RestfulTool插件6、 Json2Pojo插件7、结论 对于任何Spring Boot开发者来说&#xff0c;两个首要的目标是最大限度地提高工作效率和确保高质量代码。IntelliJ IDEA 是目前最广泛使用的集成开发环境…

标准IO的应用

1、使用这fscanf和fprintf两个函数实现文件的拷贝。 #include<myhead.h> int main(int argc, const char *argv[]) {FILE *fp;if((fpfopen("./1.txt","w"))NULL){perror("fopen");return -1;}int num100;printf("num%d\n",num…

CPU Study - Instructions Fetch

参考来源&#xff1a;《超标量处理器设计》—— 姚永斌 N-Way CPU 取指问题 如果CPU可以在每个周期内同时解码N条指令&#xff0c;则此类CPU为N-Way超标量处理器。 N-Way超标量处理器需要每个周期从I-Cache中至少取得N条指令&#xff0c;这N条指令成为一组Fetch Group。 为了…

蓝桥杯真题——三角回文数(C语言)

问题描述 对于正整数 n, 如果存在正整数 k 使得 n123⋯kk(k1)2n123⋯kk(k1)/2​, 则 n 称为三角数。例如, 66066 是一个三角数, 因为 66066123⋯36366066123⋯363 。 如果一个整数从左到右读出所有数位上的数字, 与从右到左读出所有数位 上的数字是一样的, 则称这个数为回文数…

string模拟实现构造+析构

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 string模拟实现构造 方案1&#xff08;初始化列表的实现&#xff09;&#xff1a; 这…

【java】实战-力扣题库:移除元素

问题描述 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要通过此题&#xff0c;您需要执行以下操作&#x…

【LeetCode】【算法】416. 分割等和子集

LeetCode 416. 分割等和子集 题目描述 给你一个 只包含正整数的非空数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 思路 和LeetCode 494.目标和很相似&#xff0c;这道题也是用动态数组可以求解的。 对nums的所有元素求个…