当前位置: 首页 > 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() 释放此参数。

http://www.lryc.cn/news/479038.html

相关文章:

  • 深入浅出 Spring Boot 与 Shiro:构建安全认证与权限管理框架
  • 外包干了三年,精神严重内耗...
  • ruoyi-vue集成tianai-captcha验证码
  • Django安装
  • Ubuntu 20.04 安装 QGC v4.3 开发环境
  • WPF+MVVM案例实战(二十一)- 制作一个侧边弹窗栏(AB类)
  • linux中怎样登录mysql数据库
  • 深入理解 Linux 内存管理:free 命令详解
  • 指针万字超级最强i解析与总结!!!!!
  • 告别生硬电子音,这款TTS软件让语音转换更自然动听
  • CORS(跨域资源共享)和SOP(同源策略)
  • 【系统设计】数据库压缩技术详解:从基础到实践(附Redis内存优化实战案例)
  • 基于SpringBoot的“乐校园二手书交易管理系统”的设计与实现(源码+数据库+文档+PPT)
  • debian11安装最新rabbitmq
  • 三十三、Python基础语法(面向对象其他语法-下)
  • 简单又便宜的实现电脑远程开机唤醒方法
  • Flutter鸿蒙next 状态管理框架对比分析
  • Vue Router进阶详解
  • 进程的控制
  • 基于C语言实现的图书管理系统
  • 删除 需要来自XXXX的权限才能对此文件夹进行更改 文件的解决办法
  • ARM base instruction -- ccmp (immediate)
  • 高德 阿里231滑块 分析
  • Unity 的 WebGL 构建中资源图片访问方式
  • WinForms 中使用 MVVM 模式构建应用:实现登录页面、页面导航及 SQLite 数据库连接完整框架搭建过程
  • Chrome调试工具(查看CSS属性)
  • MQTT从入门到精通之MQTT入门
  • Hadoop生态系统主要包括哪些组件以及它们的作用
  • OpenResty 1.27.1.1 已经正式发布
  • 定高虚拟列表:让大数据渲染变得轻松