NX二次開發-UFUN獲得裝配樹根tag UF_ASSEM_ask_root_part_occ
阿新 • • 發佈: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];//座標系矩陣 doubletransform[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日