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

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

[复制链接]

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

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

admin 楼主

2013-10-30 14:00:47

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

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

x
NX二次开发源码:使用NX Open C++选取注释9 c0 [9 z& a% z
  1. #include <uf.h>& _3 q- e, ?- }
  2. #include <uf_object_types.h>$ K  `3 _" T, R( G; A8 K" m* B! e

  3. * Z. w$ c' Q" [' {
  4. #include <NXOpen/Annotations.hxx>
    : b! c0 ]$ O# {* e" n
  5. #include <NXOpen/Annotations_Note.hxx>$ |: C) c! p( G
  6. #include <NXOpen/NXException.hxx>
    & x9 E# T! J9 ^% F
  7. #include <NXOpen/NXMessageBox.hxx> // as of NX5
    8 E2 U% }+ C  C' Y  x
  8. #include <NXOpen/NXObject.hxx>+ ^4 @, g0 Q! k4 T. V: D/ z! m
  9. #include <NXOpen/Selection.hxx>/ s) @/ W: }# F, \! O
  10. #include <NXOpen/Session.hxx>) H  C. N- i) R$ m' F
  11. #include <NXOpen/UI.hxx>
    % t+ k8 @9 b- _: j' D
  12. 8 O3 ~% J, `& c5 j0 C
  13. using namespace NXOpen;
    9 p! E+ d5 |/ z. U
  14. using namespace std;' E  g. a  l" t$ U

  15. ( y' d# P) M' ]. f1 y0 ]' M6 I
  16. /*****************************************************************************. j8 f/ `3 E6 J/ X2 w' K
  17. **  Activation Methods# \: |* Y+ k/ X/ }( S
  18. *****************************************************************************/
    . Z2 B' Y6 \! v) a$ S
  19. /*  Explicit Activation
    8 p" X) Q# a8 Q1 Z
  20. **      This entry point is used to activate the application explicitly, as in
    & [/ s, Z1 F6 m8 V+ v2 V* T
  21. **      "File->Execute UG/Open->User Function..." */
    : P) r( }8 Z  [+ n: F7 a
  22. extern DllExport void ufusr( char *parm, int *returnCode, int rlen )* g, z  A$ I; R9 z
  23. {
    * _, M- P: t- a" ?
  24.     /* Initialize the API environment */
    " Y" p; h' L* J3 x4 h

  25. 4 g6 p. i9 J5 a5 v, L, \
  26.     Session* theSession = NXOpen::Session::GetSession();
      `2 e" T( T8 _6 X
  27. # A" t; J& P9 b, A* O/ C
  28.     try5 \  j4 D. M+ i
  29.     {
    - n4 [) a8 `7 G7 P) i. Q4 c' T

  30. % Y& H, _- d1 m4 ^4 Y7 F( l
  31.         // ask user to select text
    , e) F2 Q( m' ?* Y; a
  32.         UI *ui = UI::GetUI();9 K4 d9 L% {2 A! M: J" C! v
  33.         Selection *sm = ui->SelectionManager();
    , m+ F) o' Z/ r& ?9 ?7 ?& b0 X
  34.         NXMessageBox *mb = ui->NXMessageBox(); // as of NX5, _, l7 U/ G5 \# h) P
  35. & ^5 q  g$ r! B' |8 P
  36.         NXString message("Select Notes:");
    / Y9 ~' i! A5 l/ q/ o
  37.         NXString title("Select Notes");% U: s9 |& K8 Z8 {% v7 k5 [
  38.         Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
    * X5 C* a0 D4 r+ C; g2 S, F
  39.         Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;9 v1 W1 c& x$ d; N* y
  40.         bool include_features = 0;+ U6 ~% l/ k7 {7 c8 W) ]
  41.         bool keep_highlighted = 0;
    ! U" e. [2 q( ?- U8 z5 f0 s& B
  42. ! b# E! n! r, ^2 t* h5 B
  43.         // Define the mask triple(s), k4 j" u' ?: F- k( G! `: J1 d8 a
  44.         std::vector<Selection::MaskTriple> mask(1);
    2 X: _* t# s1 B, p
  45.         mask[0] = Selection::MaskTriple( UF_drafting_entity_type, UF_draft_note_subtype, 0 );' H, m! X0 E8 [0 y4 r/ `

  46. 3 i1 i8 s9 x) W1 u) o1 E* J% [& Y4 S
  47.         std::vector<NXObject *> objects;7 O: c0 I5 M: L, G
  48. 0 T2 [7 ^0 k" M% L0 e' Y
  49.         // Select objects using filter defined by mask triples2 d8 V5 U/ A0 L; N6 q  e2 o
  50.         Selection::Response res = sm->SelectObjects(: t' M* |0 T6 s8 |
  51.             message,
    $ U0 y) e4 E+ o% M
  52.             title,4 K, E4 p5 I) d8 w
  53.             scope,
      V, y$ d) l) I
  54.             action,) A+ g: g5 F. c0 X! k/ d
  55.             include_features,
    : k* ^3 A3 q9 d8 R( X) [# k
  56.             keep_highlighted,5 y$ t, X# p1 h
  57.             mask,1 I, M1 z; O4 g1 {3 D
  58.             objects
    ; H3 c- L& @, m2 H1 P: p6 c5 n3 j
  59.             );
    + d1 V% P$ u  f/ _+ Y, x$ s  `) M

  60. ' K& r  A. |; V( }
  61.         if (objects.size())9 ^' h/ l5 j9 [  D
  62.         {
    / R1 U3 h+ _8 G- V; A( K/ f. Y
  63.             Annotations::Note *note;
    1 ^+ r; }- M# P- {, E
  64.             std::vector<NXString> messages;
    / k6 o6 \, e+ o0 @' P
  65.             std::vector<NXString> texts;; K2 t2 l" E& _+ D8 r/ c( j
  66.             for (unsigned int ii = 0; ii < objects.size(); ii++)
    7 |$ O$ V; c* v9 `2 i3 U0 V
  67.             {
    2 y. i% {: t; n0 N
  68.                 note = dynamic_cast<Annotations::Note *>(objects[ii]);8 Y5 a7 U6 H3 G0 L  F
  69.                 texts = note->GetText();8 ~6 C8 r  Z3 x
  70.                 for(unsigned int jj=0; jj<texts.size(); jj++)
    . l7 `, H  g- v6 u/ c
  71.                 {
    * S. s; `+ B- G# A6 Z8 e
  72.                     messages.push_back(texts[jj]);* p& X7 ]( ~1 |- ?9 o' ^0 v! M
  73.                 }
    ) j3 P9 O$ W  L( O
  74.             }
    : _. T+ p" t( R( F; `0 t
  75.             // NXMessageBox works as of NX50 N( e- e! T& v0 f
  76.             mb->Show("Selected Notes", NXMessageBox::DialogTypeInformation, messages);1 Y3 T5 d" ^. O$ W, G: M
  77.             // otherwise simply write to the listing window* {: g% z0 u; I+ V; ~/ b- L
  78.             // ListingWindow *lw = theSession->GetListingWindow();* B0 i# a5 `2 h. m" a$ u
  79.             // lw->Open();* K- q/ v9 T! a. h/ T" A& L
  80.             // for (unsigned int kk = 0; kk < messages.size(); kk++)
    * \$ d. t7 q$ U8 B) T  S0 q
  81.             // {8 `" G! I0 Y! L% a& Q8 D
  82.             //  lw->WriteLine(messages[kk].getText());
    ; q% c& F7 k+ p) j! ~$ p
  83.             // }
    + K0 v8 q0 E6 _( `7 v4 x% T( c

  84. 0 y! @( K, V5 G# D
  85.         }
    ) E* M5 P+ |  r1 H# I: O) E# Y
  86.     }9 G7 v8 r9 ?/ x* |1 k& K
  87. ( p$ ]  H5 ~* O5 a! h
  88.     /* Handle errors */2 c# e4 W- B& G" Z3 j
  89.     caTCh ( const NXOpen::NXException& ex )6 u! m: _3 v9 \' T7 R5 H& Z2 R
  90.     {
    " _+ J$ i' [1 Y6 ]
  91.         // NXMessageBox works as of NX5
    * f( T- g. |# u! ~9 O, |  A
  92.         UI::GetUI()->NXMessageBox()->Show("Error", NXMessageBox::DialogTypeInformation, ex.Message());5 m( l7 ]2 p, S" \  m
  93.         // Until NX4 simply write to the listing window
    & t5 r. K4 B0 H; n/ e" E
  94.         // theSession->GetListingWindow()->WriteLine(ex.GetMessage());6 v* E: {1 g7 {9 V- |7 D7 _
  95.     }( h8 @2 a* i% e4 |& k  A
  96. }
    3 N# N. C4 w- {: ^3 C- w
  97. 5 T/ Y' X" t7 x* A  Z4 e% d
  98. /*****************************************************************************8 h7 G* p# I& L- S* n" e, f% G
  99. **  Utilities$ U# z- G1 q! ^, e
  100. *****************************************************************************/; o1 T3 ~) V1 w3 h) p

  101. # w5 Q3 a7 f6 k" C. a
  102. /* Unload Handler
    7 f4 I* J3 N0 N  D0 f9 f$ _) n% E! Y
  103. **    This function specifies when to unload your application from Unigraphics.; p1 K2 x/ |! d( m2 z0 C! _
  104. **    If your application registers a callback (from a MenuScript item or a3 m! ]: H; K2 \
  105. **    User Defined Object for example), this function MUST return
    % J) a  r6 J+ i7 U% R% _
  106. **    "UF_UNLOAD_UG_TERMINATE". */
    ; W) D7 z# v" G, A1 s
  107. extern "C" DllExport int ufusr_ask_unload()0 N+ m7 k7 A4 A$ z$ r' ]  I8 c
  108. {+ K; N1 _% E6 M. S1 A# x( M- k
  109. return (int)NXOpen::Session::LibraryUnloadOptionImmediately;
      B9 R+ w: o) B0 g0 C
  110. }6 L, f% r. k0 p8 P

  111.   @& R( m8 i# n7 A* x2 z
复制代码
  M+ H  t  k& J6 h3 j# h

/ a3 u& F# h, R) o$ u8 t; W" G
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了