NX二次开发-读取图纸表格注释与部件属性关联的名字

  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日

原文地址:https://www.cnblogs.com/nxopen2018/p/12044437.html