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