1 NX11+VS2013 2 3 #include <uf.h> 4 #include <uf_ui.h> 5 #include <uf_tabnot.h> 6 #include <NXOpen/Part.hxx> 7 #include <NXOpen/PartCollection.hxx> 8 #include <NXOpen/Session.hxx> 9 #include <NXOpen/Annotations_TableSectionCollection.hxx> 10 #include <NXOpen/Annotations_AnnotationManager.hxx> 11 #include <NXOpen/FontCollection.hxx> 12 13 14 15 UF_initialize(); 16 17 //創建表格注釋 18 Annotations::TableSection *nullAnnotations_TableSection(NULL); 19 Annotations::TableSectionBuilder *tableSectionBuilder1; 20 tableSectionBuilder1 = workPart->Annotations()->TableSections()->CreateTableSectionBuilder(nullAnnotations_TableSection); 21 NXOpen::Point3d TablePoint(194.0, 17.0, 0.0); 22 tableSectionBuilder1->Origin()->SetOriginPoint(TablePoint); 23 tableSectionBuilder1->SetNumberOfColumns(2); 24 tableSectionBuilder1->SetNumberOfRows(2); 25 tableSectionBuilder1->SetRowHeight(20.0); 26 tableSectionBuilder1->SetColumnWidth(50); 27 tableSectionBuilder1->Commit(); 28 NXObject *nXObject1; 29 nXObject1 = tableSectionBuilder1->Commit(); 30 tableSectionBuilder1->Destroy(); 31 32 //section轉tag 33 tag_t TabularNote = NULL_TAG; 34 UF_TABNOT_ask_tabular_note_of_section(nXObject1->Tag(), &TabularNote); 35 36 //獲取第一行的Tag 37 tag_t Row0Tag = NULL_TAG; 38 UF_TABNOT_ask_nth_row(TabularNote, 0, &Row0Tag); 39 40 //獲取第二行的Tag 41 tag_t Row1Tag = NULL_TAG; 42 UF_TABNOT_ask_nth_row(TabularNote, 1, &Row1Tag); 43 44 //獲取第一列的Tag 45 tag_t Column0Tag = NULL_TAG; 46 UF_TABNOT_ask_nth_column(TabularNote, 0, &Column0Tag); 47 48 //獲取第二列的Tag 49 tag_t Column1Tag = NULL_TAG; 50 UF_TABNOT_ask_nth_column(TabularNote, 1, &Column1Tag); 51 52 //得到第一行第一列單元格的Tag 53 tag_t Cell0Tag = NULL_TAG; 54 UF_TABNOT_ask_cell_at_row_col(Row0Tag, Column0Tag, &Cell0Tag); 55 56 //得到第一行第二列單元格的Tag 57 tag_t Cell1Tag = NULL_TAG; 58 UF_TABNOT_ask_cell_at_row_col(Row0Tag, Column1Tag, &Cell1Tag); 59 60 //得到第二行第一列單元格的Tag 61 tag_t Cell2Tag = NULL_TAG; 62 UF_TABNOT_ask_cell_at_row_col(Row1Tag, Column0Tag, &Cell2Tag); 63 64 //得到第二行第二列單元格的Tag 65 tag_t Cell3Tag = NULL_TAG; 66 UF_TABNOT_ask_cell_at_row_col(Row1Tag, Column1Tag, &Cell3Tag); 67 68 //寫文本 69 UF_TABNOT_set_cell_text(Cell0Tag, "<WRef2*0@SBA>"); 70 UF_TABNOT_set_cell_text(Cell1Tag, "盧尚宇"); 71 72 //合並最底下的單元格 73 UF_TABNOT_merge_cells(Cell2Tag, Cell3Tag); 74 75 //獲取合並單元格的行Tag 76 tag_t MergeRowTag = NULL_TAG; 77 UF_TABNOT_ask_nth_row(TabularNote, 1, &MergeRowTag); 78 79 //獲取合並單元格的列Tag 80 tag_t MergeColumnTag = NULL_TAG; 81 UF_TABNOT_ask_nth_column(TabularNote, 0, &MergeColumnTag); 82 83 tag_t MergeCellTag = NULL_TAG; 84 UF_TABNOT_ask_cell_at_row_col(MergeRowTag, MergeColumnTag, &MergeCellTag); 85 86 //寫文本 87 UF_TABNOT_set_cell_text(MergeCellTag, "版本號:xxxxxxxxxx"); 88 89 //檢索默認單元格首選項 90 UF_TABNOT_cell_prefs_t cell_prefs; 91 UF_TABNOT_ask_default_cell_prefs(&cell_prefs); 92 93 //設置單元格首選項 94 int fontIndex1 = workPart->Fonts()->AddFont("chinesef_fs", NXOpen::FontCollection::TypeNx);//更改字體 95 cell_prefs.text_font = fontIndex1; //字體 96 UF_TABNOT_set_cell_prefs(Cell0Tag, &cell_prefs); 97 UF_TABNOT_set_cell_prefs(Cell1Tag, &cell_prefs); 98 UF_TABNOT_set_cell_prefs(MergeCellTag, &cell_prefs); 99 100 //讀取單元格內容 101 char* cell_text; 102 UF_TABNOT_ask_cell_text(Cell0Tag, &cell_text); 103 104 //分割字符串 105 string strCellText = cell_text; 106 string strRight = (strCellText.substr(strCellText.find("@") + 1, strCellText.find(" ")));//提取右值 107 string strLift = (strRight.substr(0, strRight.find(">")));//提取左值 108 109 //打印 110 char msg[256]; 111 sprintf_s(msg, "此單元格關聯的部件屬性為:%s", strLift); 112 uc1601(msg, 1); 113 114 UF_terminate(); 115 Caesar盧尚宇 116 2019年12月15日