PLM之家PLMHome-工业软件与AI结合践行者

[二次开发源码] NX二次开发源码:使用NX Open C++选取注释

[复制链接]

2013-10-30 14:00:47 4596 0

admin 发表于 2013-10-30 14:00:47 |阅读模式

admin 楼主

2013-10-30 14:00:47

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
NX二次开发源码:使用NX Open C++选取注释3 U/ J& @9 m3 g" i# }( b' C5 E' P
  1. #include <uf.h>
    ; y" q0 v9 j& t. p! }$ D8 Q9 v+ \
  2. #include <uf_object_types.h>2 I( V: A8 \3 Y* K, s: u9 n9 q

  3. 3 s& l& x% o- D) s) z! b0 E
  4. #include <NXOpen/Annotations.hxx>
    ( O2 U5 o6 n3 p
  5. #include <NXOpen/Annotations_Note.hxx>1 A, h" G. J2 k% }+ s2 h$ _
  6. #include <NXOpen/NXException.hxx>
    1 S4 Y; Z0 q/ }! `  Q
  7. #include <NXOpen/NXMessageBox.hxx> // as of NX5
    ; a4 H% j4 [0 |  T3 r* I
  8. #include <NXOpen/NXObject.hxx>
    1 w2 U7 }. j9 A+ I) ?
  9. #include <NXOpen/Selection.hxx>0 Z9 d+ a- N; Q; m, ~4 x8 r
  10. #include <NXOpen/Session.hxx>% `2 Q* i* t3 D) |
  11. #include <NXOpen/UI.hxx>* Q% y7 z, B' r
  12. ' |7 n" h, ?0 E' g$ M4 J
  13. using namespace NXOpen;
    & \3 {7 E: t' ~* g
  14. using namespace std;3 A& `7 V8 x' v$ W! i

  15. , j9 F. L3 ^/ n% P. ^
  16. /*****************************************************************************
    / {* X% m: e& [7 M
  17. **  Activation Methods6 N  P4 C. `0 u
  18. *****************************************************************************/  @  K# i/ K- M4 u
  19. /*  Explicit Activation
    2 x& U- w, ^$ ~7 M5 c) |* o
  20. **      This entry point is used to activate the application explicitly, as in
    2 [0 N7 c- |  h( `5 E7 z
  21. **      "File->Execute UG/Open->User Function..." */$ K1 b& A! |3 ^' X3 ]
  22. extern DllExport void ufusr( char *parm, int *returnCode, int rlen )  _( ?2 J( ]* s$ `" y* s
  23. {. i7 z2 h- |0 r: X
  24.     /* Initialize the API environment */3 s4 [  j1 y3 ~& |+ V
  25. 2 D& t4 m- F( H; F. N* R& W+ F  E
  26.     Session* theSession = NXOpen::Session::GetSession();& B  U, V6 ^$ @5 F) f  Q' b
  27. 7 ]) A8 T$ Y8 y* ?- q# d( k4 L
  28.     try
    * H! {" U0 [" h5 S
  29.     {
    3 z6 ?& i/ h5 S( b5 V
  30. ! K) v. Q2 A+ u: X; R) A& w
  31.         // ask user to select text
    ( ?; }7 T, N) D2 ^1 W
  32.         UI *ui = UI::GetUI();
    3 ?  P/ @* @8 w" o$ h) L$ w
  33.         Selection *sm = ui->SelectionManager();
    7 X9 e% H# {" t& i
  34.         NXMessageBox *mb = ui->NXMessageBox(); // as of NX5: }1 A/ ^- l4 {

  35. 4 u2 N/ s. w' x0 {0 e" X
  36.         NXString message("Select Notes:");2 S$ T6 U, _0 M
  37.         NXString title("Select Notes");
    ; D3 u4 M: {. G3 I- \) q" N
  38.         Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;8 n" v5 N9 t; B/ ~
  39.         Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;4 c5 T! z' h5 O0 o/ e2 g
  40.         bool include_features = 0;5 F$ G' g% Z8 d. k" J3 ^: L3 {( F
  41.         bool keep_highlighted = 0;' Q8 s! N: t* t/ A

  42. 4 Z' I6 Y9 K4 z0 E8 J* O" `# g, R
  43.         // Define the mask triple(s)
    / I" p* |2 J# i$ Q( W: P
  44.         std::vector<Selection::MaskTriple> mask(1);9 A. w  Z! k) R' o
  45.         mask[0] = Selection::MaskTriple( UF_drafting_entity_type, UF_draft_note_subtype, 0 );. k& p1 U  E# {% H: p( k

  46. $ n  y* w- N) I1 B
  47.         std::vector<NXObject *> objects;
    4 F: n' y: }; A: j6 l5 z$ `. g  y) n

  48. 9 N% v8 r# @3 y" T  Q7 R3 c
  49.         // Select objects using filter defined by mask triples
    % h6 c) j( S+ T; n+ @
  50.         Selection::Response res = sm->SelectObjects(" x! x4 n& A& S' f1 L. K
  51.             message,
    ( n0 Z# O3 v+ H4 Y5 Z7 m
  52.             title,6 U- j: H" H) Y- b- _. f
  53.             scope,
    . `/ U8 ?8 M- o! Y7 U/ ^1 f  k. z* |2 @
  54.             action,
    ( p  c: `) P- j
  55.             include_features,& ]% ]9 j8 P- z9 W/ M
  56.             keep_highlighted,2 w9 }6 J/ |# r5 P8 b+ l  v! G7 o
  57.             mask,1 u3 j: a& X$ h1 q
  58.             objects
    7 x( s4 d: Z( p
  59.             );
    7 G& b) x/ h3 J2 b- @
  60. 6 X% ]# b5 D; V7 y4 g4 {! R) R
  61.         if (objects.size()); Q" W, N& v" E; a0 B; P$ V. E; b
  62.         {! r5 K; ]0 P% @( `
  63.             Annotations::Note *note;
    ) ^" S8 f1 w0 c- v3 e' U' o: @0 E
  64.             std::vector<NXString> messages;
    : q- H8 s+ u6 T+ ~, K6 u' r+ }
  65.             std::vector<NXString> texts;
    # D, r2 j/ K: P
  66.             for (unsigned int ii = 0; ii < objects.size(); ii++)
    * ^9 g: o* U5 l0 O' H# h* Q9 _
  67.             {
    - E1 e7 r! C( Y
  68.                 note = dynamic_cast<Annotations::Note *>(objects[ii]);
    ; u  s: V3 O% v1 o* ?- k
  69.                 texts = note->GetText();* r9 z: k; p7 b% \% B# W
  70.                 for(unsigned int jj=0; jj<texts.size(); jj++)
    # u" H% z3 `& E+ I
  71.                 {
    1 ~! O! D8 M; e; w  s+ F
  72.                     messages.push_back(texts[jj]);
    0 A/ t" W" d, `& m
  73.                 }
      k( H8 h( Y0 K% y! @1 y3 x+ }
  74.             }2 {& G# M0 E7 Y  h
  75.             // NXMessageBox works as of NX5
    0 t+ O& s3 e( G$ j0 ^
  76.             mb->Show("Selected Notes", NXMessageBox::DialogTypeInformation, messages);6 p5 ^4 ]$ V$ T; M# k
  77.             // otherwise simply write to the listing window9 p3 V* i' T+ n5 m9 R4 ^; [! T: y
  78.             // ListingWindow *lw = theSession->GetListingWindow();: E  `6 N# Q3 j" x/ q
  79.             // lw->Open();
    0 n& y. D2 a- D  t; Z' z
  80.             // for (unsigned int kk = 0; kk < messages.size(); kk++)5 l: ~% q  w7 H  i4 L, ?
  81.             // {
    4 Y9 C/ p3 q. ]  N0 }$ @5 l
  82.             //  lw->WriteLine(messages[kk].getText());
    9 \) k7 ]: ~* F' E9 d3 j( F) d! z, X
  83.             // }4 z% L9 j+ Q& W$ u# ~

  84. & c/ a# o+ ^+ Q
  85.         }
    # v2 M' V4 p) I% [8 J) C* m* S
  86.     }- J* c. m2 R4 B4 D- h
  87. 4 D  o% m* R( I& I* w( l+ T0 ~
  88.     /* Handle errors */
    . q9 C1 L- Y" o* C
  89.     caTCh ( const NXOpen::NXException& ex )
    : f5 _* u1 a. E" t' ?
  90.     {1 k$ p8 W! Q5 U1 w+ Q6 j- F* _6 i
  91.         // NXMessageBox works as of NX5+ }: ]' c5 M* y; n
  92.         UI::GetUI()->NXMessageBox()->Show("Error", NXMessageBox::DialogTypeInformation, ex.Message());% t7 _- g- ^1 O$ e. [' \
  93.         // Until NX4 simply write to the listing window
    / S+ C; ?6 B: S; u# }! Q
  94.         // theSession->GetListingWindow()->WriteLine(ex.GetMessage());
    / E2 {) ]( y& l& @
  95.     }
    " `2 U( n# ]2 T* X
  96. }8 w  U& g* X  k$ i  K

  97. 4 |  h) v* t1 B* K5 ^1 O# ~& L7 F
  98. /*****************************************************************************
    ' N2 U4 T) J' y  z
  99. **  Utilities
      U" {3 l! A" V0 c) y$ b+ y! L
  100. *****************************************************************************/1 G3 C1 g( J( q# }* j- M
  101. ' [4 }( ]7 h1 \2 U9 v
  102. /* Unload Handler; s$ E( h1 ^( B5 i9 g, e  v
  103. **    This function specifies when to unload your application from Unigraphics.( Z  q- M. f! b$ m# `. x  L! P) X
  104. **    If your application registers a callback (from a MenuScript item or a
    $ w0 ]% c& y8 [' C
  105. **    User Defined Object for example), this function MUST return0 N$ {$ U3 T$ O1 q( G  h) c
  106. **    "UF_UNLOAD_UG_TERMINATE". */
    + H# L' W) E/ T) M4 p
  107. extern "C" DllExport int ufusr_ask_unload()3 a/ s3 g! q6 x4 m6 x( y( P
  108. {
    % y- F' h- o* W% v1 z8 ]# d% a
  109. return (int)NXOpen::Session::LibraryUnloadOptionImmediately;( w; v/ G* q2 J
  110. }3 b+ m7 g0 F4 ~, Z2 C" ~  \( d
  111. 5 i7 g* {! ~/ d! y7 T. }
复制代码

' w6 z! X( b% s) c. k) l+ O
+ z' \" B+ A1 H! L/ |- V
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了