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

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

[复制链接]

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

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

admin 楼主

2013-10-30 14:00:47

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

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

x
NX二次开发源码:使用NX Open C++选取注释
: y  ^& A% D) c3 ~! L4 O
  1. #include <uf.h>
    6 |  g" K& t$ [  U6 F- V
  2. #include <uf_object_types.h>
    9 D7 c5 q( \1 {4 q3 y( t
  3. 7 o. p. c2 g6 D5 T0 ]2 F
  4. #include <NXOpen/Annotations.hxx>
    + L, X$ d# d' J# t8 E# Q/ \& g% j
  5. #include <NXOpen/Annotations_Note.hxx>
    ! l) ^& S' n' u% ], p
  6. #include <NXOpen/NXException.hxx>3 W9 Z; u- k2 p1 |% P, A, z
  7. #include <NXOpen/NXMessageBox.hxx> // as of NX5
    " h+ _( i4 R, n) T2 b
  8. #include <NXOpen/NXObject.hxx>
    / V3 Z6 g  a1 c% v3 p
  9. #include <NXOpen/Selection.hxx>
    + j6 X/ O$ K- I! `2 t9 r
  10. #include <NXOpen/Session.hxx>
    4 w6 J, a" ?  k* q7 w* o- K
  11. #include <NXOpen/UI.hxx>7 ?0 l4 ^0 U* K- m: y

  12. 9 K9 o+ w8 D" B1 G! Z& C0 s/ J
  13. using namespace NXOpen;
    5 M3 u  ^6 h/ N; {5 L- C2 H: n' m
  14. using namespace std;
    8 l; a  c. C1 D4 ]: i
  15. , K: g: K1 ^3 N9 J) l
  16. /*****************************************************************************" C; K$ i- P! c3 l
  17. **  Activation Methods/ \: Y. M  R. i7 Y
  18. *****************************************************************************/
    3 Q; M/ w, G: k. R
  19. /*  Explicit Activation
    # O2 G1 n3 u/ A& A! v0 |
  20. **      This entry point is used to activate the application explicitly, as in: h( l/ Q& C, b* a/ d# |
  21. **      "File->Execute UG/Open->User Function..." */
    0 e" y: l; c9 ^
  22. extern DllExport void ufusr( char *parm, int *returnCode, int rlen )& D6 G" v" j0 _8 {# O  f
  23. {4 B' H2 t* y4 b! p4 V
  24.     /* Initialize the API environment */
    3 a; a. f( l/ `7 S

  25. & c1 A/ d6 Z! `/ ?6 E4 k
  26.     Session* theSession = NXOpen::Session::GetSession();
    . `6 y! {' {2 `2 _0 X% V8 G
  27. 3 d7 ^1 W/ G1 o; V; f  d
  28.     try
    " Q' Q( l, I5 @* N, |; z, M$ K
  29.     {7 B0 s, t% T# L

  30. ' e6 L8 T) e; n* E- `
  31.         // ask user to select text8 o8 ?% q" j5 k) m( G! e
  32.         UI *ui = UI::GetUI();1 O" i7 |6 n+ f' x5 U
  33.         Selection *sm = ui->SelectionManager();) V' ]3 p" X4 Z: S; {
  34.         NXMessageBox *mb = ui->NXMessageBox(); // as of NX5( L6 M* w3 u; ?, N' x
  35. / M5 d0 o+ c" W" i' X# [
  36.         NXString message("Select Notes:");3 t: f- k  o$ D7 P" |
  37.         NXString title("Select Notes");- @9 f' \/ F, g- c/ w
  38.         Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
      U$ J5 ?3 k/ Y8 _& D( m$ S
  39.         Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
    $ G) E( ~1 Z$ X/ r- H* ?
  40.         bool include_features = 0;9 _- P- D+ K" Q' v4 B! Y& L  R
  41.         bool keep_highlighted = 0;' p) i4 W+ ^( j% z/ W
  42. / ]9 E  P$ s/ y7 L$ M: h# c( w
  43.         // Define the mask triple(s)% e  C7 d$ ]. V# y! H, ]9 f
  44.         std::vector<Selection::MaskTriple> mask(1);, Z8 Y/ l; g+ T- r3 @( v' o
  45.         mask[0] = Selection::MaskTriple( UF_drafting_entity_type, UF_draft_note_subtype, 0 );4 b0 G! U: a( x! _: ~3 D6 v! g

  46. % |; l# Q  T6 f6 c" m
  47.         std::vector<NXObject *> objects;) {& y6 g& Y; W4 ?2 F

  48. " u5 z. y; G; D# z8 f) a* ~* _. W- c5 J6 l
  49.         // Select objects using filter defined by mask triples
    8 u4 m9 g% Q, Y  H3 Z1 J
  50.         Selection::Response res = sm->SelectObjects(
    , T7 e: Y$ C: z% o: C1 g, Z
  51.             message,
    0 {1 t5 v" {9 }+ s( I) K
  52.             title,
    . d4 b) D# Y) d; \8 q6 O4 T* |
  53.             scope,7 c, W: I1 n' D4 W' k$ S
  54.             action,
    & z0 ~/ e' e# K. ]
  55.             include_features,
    2 a- \' [( y9 q2 ~) I+ f
  56.             keep_highlighted,7 @5 A8 t4 ]0 m. e; f6 b  }
  57.             mask,
    8 y2 K1 L4 a7 r& l( v5 W
  58.             objects
    + a- K' T% v' C- f
  59.             );
    1 |& O  j9 w: I

  60. 7 U5 k0 Z& M& o8 F, ^: `2 z
  61.         if (objects.size())
    ( e1 x  g/ I6 h. ^6 k
  62.         {
    & @4 g$ R, c! ~3 ]" I6 o4 I
  63.             Annotations::Note *note;$ `% _# N9 Y9 _. O; B8 |
  64.             std::vector<NXString> messages;
    " c, L# Q5 Q( N7 T
  65.             std::vector<NXString> texts;
      W) k7 X) h' x5 O% m; p9 K- ^
  66.             for (unsigned int ii = 0; ii < objects.size(); ii++)4 s. A7 M8 d; c7 A
  67.             {
    4 O% z" E# \( y5 g! ?+ W
  68.                 note = dynamic_cast<Annotations::Note *>(objects[ii]);. \  L5 R; G) G; d$ q7 j- ^. J- ?8 F
  69.                 texts = note->GetText();
    6 [7 N+ r/ k, o) O
  70.                 for(unsigned int jj=0; jj<texts.size(); jj++)
    " T' Z; h( A  ^8 `& m) \2 \
  71.                 {
    9 _, I# r* n% d; B6 l) Z
  72.                     messages.push_back(texts[jj]);
    2 p3 r# W; \+ R
  73.                 }& ?9 h: b5 P; h, o0 h
  74.             }4 h% D; b4 L7 h
  75.             // NXMessageBox works as of NX5
    : g" u0 s( d% U' W/ `7 K5 L
  76.             mb->Show("Selected Notes", NXMessageBox::DialogTypeInformation, messages);  S* ~8 b# K1 ], e. f
  77.             // otherwise simply write to the listing window
    + `1 o8 Z3 ^( M$ y1 @
  78.             // ListingWindow *lw = theSession->GetListingWindow();% X9 f9 N; T, w$ O$ ]1 `
  79.             // lw->Open();* s/ D/ o6 I' M% F4 J- t. B9 Y5 b
  80.             // for (unsigned int kk = 0; kk < messages.size(); kk++)
    9 p- `, J( I, I% M2 d5 a
  81.             // {9 k- v+ }: m9 _# F9 e. x7 z
  82.             //  lw->WriteLine(messages[kk].getText());) K. a* z! s2 e6 E* ]1 ~
  83.             // }! Q8 k/ B5 p2 \" b, S" ]
  84. 5 s, P& s0 B  C. C
  85.         }
    / e$ m) \  u$ a+ O
  86.     }
    " A$ k4 q) ]3 Z/ g% `; R. W7 n0 h! G1 x
  87. - j  G. ?4 j( @8 @% |6 g
  88.     /* Handle errors */$ A& ^' ]  ?$ V- K; {
  89.     caTCh ( const NXOpen::NXException& ex )
    , D' G$ W7 M' Y6 ]  `
  90.     {) l: R+ S( `' e
  91.         // NXMessageBox works as of NX5
    6 K: m' n/ `; f% c
  92.         UI::GetUI()->NXMessageBox()->Show("Error", NXMessageBox::DialogTypeInformation, ex.Message());3 R0 N% ^- _& [. X1 k' B
  93.         // Until NX4 simply write to the listing window$ M7 x( x5 s, g" W+ K
  94.         // theSession->GetListingWindow()->WriteLine(ex.GetMessage());* r7 v5 i9 l' m) Y" ?" p
  95.     }
    , {1 i2 _. a' Y  Q! G& A
  96. }
    2 O/ a. s' ?. j( T# ?2 J+ m
  97. 2 M$ E) C% X8 r* W
  98. /*****************************************************************************
    1 [" C, H+ U/ r4 j$ v
  99. **  Utilities; D4 b% N, B* Y: u" L$ w5 Z) e
  100. *****************************************************************************/
    " s, f) Y$ T0 ?3 R
  101. " W2 h  j6 Q6 d/ T$ n) g3 ^
  102. /* Unload Handler! N" U; l! r/ ]5 ]" V- t. x3 _
  103. **    This function specifies when to unload your application from Unigraphics.3 p9 a. e0 q/ Z
  104. **    If your application registers a callback (from a MenuScript item or a3 @, z: b; M& B) r- ?
  105. **    User Defined Object for example), this function MUST return
    % O5 Y) }$ @' n( X. I  i
  106. **    "UF_UNLOAD_UG_TERMINATE". */
    % J$ E. S$ q& s6 `2 V
  107. extern "C" DllExport int ufusr_ask_unload()+ `& U) @$ d4 R1 T- O& e& k  ]9 }
  108. {! V" c1 [/ a" M- o- s
  109. return (int)NXOpen::Session::LibraryUnloadOptionImmediately;
    2 r: m  j# `! ?- h, v+ ^
  110. }: S4 N3 K! y& N3 G. `

  111. " ?6 D# P, ^, c( }
复制代码

, d* c. _9 R2 o; M. V" X" o+ q& {- y: x  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二次开发专题模块培训报名开始啦

    我知道了