NX二次開發-UFUN遍歷裝配樹根下面的所有子元件UF_ASSEM_ask_part_occ_children
阿新 • • 發佈:2020-09-19
NX9+VS2012
#include <uf.h>
#include <uf_assem.h>
#include <uf_ui.h>
#include <uf_part.h>
//遞迴遍歷所有裝配
void ASSEM_cycle_all_part(tag_t parent_part_occ)
{
//遍歷根的子元件
tag_t* child_part_occs = NULL_TAG;
int part_num = UF_ASSEM_ask_part_occ_children(parent_part_occ, &child_part_occs);
for (int i = 0; i < part_num; i++)
{
//獲取裝配部件的相關資訊
char part_name[MAX_FSPEC_BUFSIZE];//零件名稱
char refset_name[UF_OBJ_NAME_BUFSIZE];//引用集名稱
char instance_name[UF_CFI_MAX_FILE_NAME_BUFSIZE];//例項名稱
double originA[3];//元件的位置
double csys_matrix[9];//座標系矩陣
double transform[4][4];//轉換矩陣
UF_ASSEM_ask_component_data(child_part_occs[i], part_name, refset_name, instance_name, originA, csys_matrix, transform);
UF_UI_write_listing_window(part_name);
UF_UI_write_listing_window("\n");
ASSEM_cycle_all_part(child_part_occs[i]);
}
//釋放
UF_free(child_part_occs);
}
UF_initialize();
//獲得裝配樹根
tag_t RootTag = UF_ASSEM_ask_root_part_occ(UF_PART_ask_display_part());
UF_UI_open_listing_window();
//遍歷根的子元件
tag_t* child_part_occs = NULL_TAG;
int part_num = UF_ASSEM_ask_part_occ_children(RootTag, &child_part_occs);
for (int i = 0; i < part_num; i++)
{
//獲取裝配部件的相關資訊
char part_name[MAX_FSPEC_BUFSIZE];//零件名稱
char refset_name[UF_OBJ_NAME_BUFSIZE];//引用集名稱
char instance_name[UF_CFI_MAX_FILE_NAME_BUFSIZE];//例項名稱
double originA[3];//元件的位置
double csys_matrix[9];//座標系矩陣
double transform[4][4];//轉換矩陣
UF_ASSEM_ask_component_data(child_part_occs[i], part_name, refset_name, instance_name, originA, csys_matrix, transform);
UF_UI_write_listing_window(part_name);
UF_UI_write_listing_window("\n");
//進入遞迴
ASSEM_cycle_all_part(child_part_occs[i]);
}
//釋放
UF_free(child_part_occs);
UF_terminate();
Caesar盧尚宇
2020年9月19日