NX secondary development -UFUN read drawing annotation UF_DRF_ask_text_data

  1 //NX9_NXOpenCPP_Wizard1
  2 
  3 // Mandatory UF Includes
  4 #include <uf.h>
  5 #include <uf_object_types.h>
  6 
  7 // Internal Includes
  8 #include <NXOpen/ListingWindow.hxx>
  9 #include <NXOpen/NXMessageBox.hxx>
 10 #include <NXOpen/UI.hxx>
 11 
 12 // Internal+External Includes
 13 #include <NXOpen/Annotations.hxx>
 14 #include <NXOpen/Assemblies_Component.hxx>
 15 #include <NXOpen/Assemblies_ComponentAssembly.hxx>
 16 #include <NXOpen/Body.hxx>
 17 #include <NXOpen/BodyCollection.hxx>
 18 #include <NXOpen/Face.hxx>
 19 #include <NXOpen/Line.hxx>
 20 #include <NXOpen/NXException.hxx>
 21 #include <NXOpen/NXObject.hxx>
 22 #include <NXOpen/Part.hxx>
 23 #include <NXOpen/PartCollection.hxx>
 24 #include <NXOpen/Session.hxx>
 25 
 26 #include <uf.h>
 27 #include <uf_ui.h>
 28 #include <uf_drf.h>
 29 
 30 // Std C++ Includes
 31 #include <iostream>
 32 #include <sstream>
 33 
 34 using namespace NXOpen;
 35 using std::string;
 36 using std::exception;
 37 using std::stringstream;
 38 using std::endl;
 39 using std::cout;
 40 using std::cerr;
 41 
 42 
 43 //------------------------------------------------------------------------------
 44 // NXOpen c++ test class 
 45 //------------------------------------------------------------------------------
 46 class MyClass
 47 {
 48     // class members
 49 public:
 50     static Session *theSession;
 51     static UI *theUI;
 52 
 53     MyClass();
 54     ~MyClass();
 55 
 56     void do_it();
 57     void print(const NXString &);
 58     void print(const string &);
 59     void print(const char*);
 60 
 61 private:
 62     Part *workPart, *displayPart;
 63     NXMessageBox *mb;
 64     ListingWindow *lw;
 65     LogFile *lf;
 66 };
 67 
 68 //------------------------------------------------------------------------------
 69 // Initialize static variables
 70 //------------------------------------------------------------------------------
 71 Session *(MyClass::theSession) = NULL;
 72 UI *(MyClass::theUI) = NULL;
 73 
 74 //------------------------------------------------------------------------------
 75 // Constructor 
 76 //------------------------------------------------------------------------------
 77 MyClass::MyClass()
 78 {
 79 
 80     // Initialize the NX Open C++ API environment
 81     MyClass::theSession = NXOpen::Session::GetSession();
 82     MyClass::theUI = UI::GetUI();
 83     mb = theUI->NXMessageBox();
 84     lw = theSession->ListingWindow();
 85     lf = theSession->LogFile();
 86 
 87     workPart = theSession->Parts()->Work();
 88     displayPart = theSession->Parts()->Display();
 89     
 90 }
 91 
 92 //------------------------------------------------------------------------------
 93 // Destructor
 94 //------------------------------------------------------------------------------
 95 MyClass::~MyClass()
 96 {
 97 }
 98 
 99 //------------------------------------------------------------------------------
100 // Print string to listing window or stdout
101 //------------------------------------------------------------------------------
102 void MyClass::print(const NXString &msg)
103 {
104     if(! lw->IsOpen() ) lw->Open();
105     lw->WriteLine(msg);
106 }
107 void MyClass::print(const string &msg)
108 {
109     if(! lw->IsOpen() ) lw->Open();
110     lw->WriteLine(msg);
111 }
112 void MyClass::print(const char * msg)
113 {
114     if(! lw->IsOpen() ) lw->Open();
115     lw->WriteLine(msg);
116 }
117 
118 
119 
120 
121 //------------------------------------------------------------------------------
122 // Do something
123 //------------------------------------------------------------------------------
124 void MyClass::do_it()
125 {
126 
127     // TODO: add your code here
128     
129     UF_initialize();
130 
131     //创建注释
132     char* TextString[] = {"Caesar卢尚宇"};
133     double Origin3d[3] = {100,100,100};
134     tag_t NoteTag = NULL_TAG;
135     UF_DRF_create_note(1, TextString, Origin3d, 0 , & NoteTag);
 136  
137      // challenge data annotation objects. Ann_data array can be read by transmitting to UF_DRF_ask_text_data annotated text data (old function with uc5574 read) 
138      int search_mask [ . 4 ];
 139      int cycle_flag = 0 ;
 140      int ann_data [ 10 ];
 141 is      int ann_data_type = 0 ;
 142      int ann_data_form = 0 ;
 143      int to NUM_SEGMENTS = 0 ;
 144      Double ann_origin [ 2 ];
145     double radius_angle = 0;
146     UF_DRF_ask_ann_data(&NoteTag, search_mask, &cycle_flag, ann_data, &ann_data_type, &ann_data_form, &num_segments, ann_origin, &radius_angle);
147 
148     //读取注释
149     int ip1 = 1;
150     char* cr3;
151     int ir4 = 0;
152     int ir5 = 0;
153     UF_DRF_ask_text_data(ip1, ann_data, &cr3, &ir4, &ir5);
154 
155     //打印
156     uc1601(cr3,1);
157 
158     UF_terminate();
159 }
160 
161 //------------------------------------------------------------------------------
162 // Entry point(s) for unmanaged internal NXOpen C/C++ programs
163 //------------------------------------------------------------------------------
164 //  Explicit Execution
165 extern "C" DllExport void ufusr( char *parm, int *returnCode, int rlen )
166 {
167     try
168     {
169         // Create NXOpen C++ class instance
170         MyClass *theMyClass;
171         theMyClass = new MyClass();
172         theMyClass->do_it();
173         delete theMyClass;
174     }
175     catch (const NXException& e1)
176     {
177         UI::GetUI()->NXMessageBox()->Show("NXException", NXOpen::NXMessageBox::DialogTypeError, e1.Message());
178     }
179     catch (const exception& e2)
180     {
181         UI::GetUI()->NXMessageBox()->Show("Exception", NXOpen::NXMessageBox::DialogTypeError, e2.what());
182     }
183     catch (...)
184     {
185         UI::GetUI()->NXMessageBox()->Show("Exception", NXOpen::NXMessageBox::DialogTypeError, "Unknown Exception.");
186     }
187 }
188 
189 
190 //------------------------------------------------------------------------------
191 // Unload Handler
192 //------------------------------------------------------------------------------
193 extern "C" DllExport int ufusr_ask_unload()
194 {
195     return (int)NXOpen::Session::LibraryUnloadOptionImmediately;
196 }
197 
198 
199 Caesar卢尚宇
200 2019年10月3日

Guess you like

Origin www.cnblogs.com/nxopen2018/p/11619880.html