从以前发布的两个文章可得,获取选择对象或引用对象后再获取组件路径Asmcomppath,由组件路径可获取父对象以及任意阶层模型对象,代码如下:
ProError test1()
{ProError status; //接受错误码ProSelection* sels = NULL; //ProSelection 结构数组指针,用于存放选择的模型int n_sels; //选择集的数量ProModelitem item; //模型项status = ProSelect((char*)"prt_or_asm", 1, NULL, NULL, NULL, NULL, &sels, &n_sels); //选择模型if (status != PRO_TK_NO_ERROR || sels == NULL) return PRO_TK_GENERAL_ERROR; //如果获取失败或没有选择,则返回错误码ProAsmcomppath p_cmp_path; //组件路径ProSelectionAsmcomppathGet(sels[0], &p_cmp_path); //从选择对象获取组件路径int a = p_cmp_path.table_num; //获取标识符数量ProUtilMessageDisplay(1, a); //输出标识符数量//假设上面获取的数量为4,则修改标识符数量为3就是它的父对象p_cmp_path.table_num = 3; //修改标识符数量ProMdl model; //模型对象status = ProAsmcomppathMdlGet(&p_cmp_path, &model); //获取组件路径的模型对象,即选择的模型对象if (status != PRO_TK_NO_ERROR) return PRO_TK_GENERAL_ERROR; //如果获取失败,则返回错误码return PRO_TK_NO_ERROR;
}