PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

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

admin 楼主

2013-10-30 14:00:47

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

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

x
NX二次开发源码:使用NX Open C++选取注释
) Z5 ^5 w; h$ W' {( i) Y
  1. #include <uf.h>
    , B0 \. h- s& n% V' T
  2. #include <uf_object_types.h>7 a) B* d, y6 c% q
  3. % E8 [, G) z6 x3 t3 t! c( m' o
  4. #include <NXOpen/Annotations.hxx>% E% F$ j3 u4 f( C" Y6 Q- I9 q# f
  5. #include <NXOpen/Annotations_Note.hxx>) l  N5 k. }/ z! o' k. v8 G3 n/ a; n! c
  6. #include <NXOpen/NXException.hxx>2 w; c6 j1 N' X4 }" L' ]4 c( O
  7. #include <NXOpen/NXMessageBox.hxx> // as of NX5
    ' A) d1 ?% X, }& h# M
  8. #include <NXOpen/NXObject.hxx>
    # T$ L; @3 Z( |( G
  9. #include <NXOpen/Selection.hxx>7 n" L( s5 P. O" h7 q5 P; E: z
  10. #include <NXOpen/Session.hxx>
    ) {7 j* n' n" k. ~6 u
  11. #include <NXOpen/UI.hxx>
    4 T0 w& z" g& l) v

  12. 6 G4 e" B; _' v: v, F
  13. using namespace NXOpen;3 _% |& N( e+ C4 |
  14. using namespace std;" z3 t! p# C3 p5 j
  15. 3 c2 h' [3 p2 `* D5 m8 Z: C5 O" [
  16. /*****************************************************************************% J% g5 O8 E4 d$ ?
  17. **  Activation Methods* g! S9 j8 z( w* A( n/ \" q+ D+ z
  18. *****************************************************************************/
    * K( O, t9 o: T# l( B
  19. /*  Explicit Activation' V9 |$ r$ p! T0 n9 W0 h
  20. **      This entry point is used to activate the application explicitly, as in, a  I+ g* @- m# C9 w
  21. **      "File->Execute UG/Open->User Function..." */+ H  Y5 G+ C$ F: p6 u, }3 O% H- X1 J
  22. extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
    " V& H7 F4 j. T' H5 w+ |
  23. {7 q) `+ V0 O: i. r8 y/ Z1 Y
  24.     /* Initialize the API environment */, d& m& G+ e/ g% N8 S
  25. 3 k, N1 p+ Y9 ~, e6 y' d* q7 O
  26.     Session* theSession = NXOpen::Session::GetSession();
    0 m+ |. |! D. }% {

  27. . @6 V* W% N9 F/ g4 U
  28.     try2 G, [4 v% c4 U
  29.     {
    4 t3 Q# r* r  k4 h2 g1 R- r

  30. 4 ^: w0 J. D) z3 P
  31.         // ask user to select text4 r! q: n& M9 v* W; p+ v# j  A% O/ P
  32.         UI *ui = UI::GetUI();
    5 d- ?0 ^2 T9 N% n) P
  33.         Selection *sm = ui->SelectionManager();9 ~+ `! Q7 C2 y. V4 o( T
  34.         NXMessageBox *mb = ui->NXMessageBox(); // as of NX5
    ; r9 F1 G6 }. w- a2 m# p3 T8 O
  35. ( Z6 D1 s3 f0 N3 A0 e# U/ Y
  36.         NXString message("Select Notes:");
    3 [" B# R4 s7 ~$ @) b' y
  37.         NXString title("Select Notes");
    ( R  w, M8 f! b+ c: |
  38.         Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
    ! t+ _. x7 i& V+ n
  39.         Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
    3 k$ V( v' k+ }5 O% L2 |
  40.         bool include_features = 0;
    * T9 M' m1 \7 R. _; p
  41.         bool keep_highlighted = 0;
    + A5 O, J) V6 t/ B
  42. ( U* _  e& j6 ]6 d$ d' r
  43.         // Define the mask triple(s)) c- _1 @$ s# J4 N8 F7 V
  44.         std::vector<Selection::MaskTriple> mask(1);
    % L4 O8 l4 B5 |- |7 A
  45.         mask[0] = Selection::MaskTriple( UF_drafting_entity_type, UF_draft_note_subtype, 0 );( K+ E) a- }6 w! ?( f1 E

  46. ' S/ Q$ M4 Y: P; f; w7 R" f
  47.         std::vector<NXObject *> objects;( R* u3 Y$ Q  x9 b( x% k  E
  48. 9 \: g) {% W: K" E" A
  49.         // Select objects using filter defined by mask triples& F' X. l0 \$ F/ `6 G: ^
  50.         Selection::Response res = sm->SelectObjects(& q  ~6 s5 g3 P  `) X
  51.             message,& m1 N( P: z: ?
  52.             title,
    . u" W2 R1 u2 d( a3 f
  53.             scope,3 e) G2 g; }% B; N
  54.             action,
    % j& p; w5 X" Q- H% f' Z. \) F
  55.             include_features,5 ~1 Z2 ?  F/ d# X
  56.             keep_highlighted,# N# k: z* H$ v' o1 L- p
  57.             mask,2 D* v+ z- a8 R* \; h. U
  58.             objects
    & J' c, T. u6 m# g
  59.             );& d) \* g1 |' i8 ]6 u) P
  60. 3 g. r/ ]7 o3 ^
  61.         if (objects.size())
    2 j# Q4 h3 Q9 d4 y4 N
  62.         {
    # T, C+ x8 @9 l! v" x
  63.             Annotations::Note *note;
    ( s# E2 Y1 y! w4 K( d! {
  64.             std::vector<NXString> messages;
    / w' ?+ o1 V; F4 s! f
  65.             std::vector<NXString> texts;2 J: h: u( K' o8 x
  66.             for (unsigned int ii = 0; ii < objects.size(); ii++)% b5 w5 {) [% s  i9 q7 Q) v' }
  67.             {
    7 M  _- r! v) N
  68.                 note = dynamic_cast<Annotations::Note *>(objects[ii]);/ e  D- c4 i; |% v% {
  69.                 texts = note->GetText();
    ; A$ ^) ~# W/ f) l& z& c
  70.                 for(unsigned int jj=0; jj<texts.size(); jj++)
    : U5 v  r5 ^$ M6 _) @
  71.                 {9 s/ J' M0 |6 X
  72.                     messages.push_back(texts[jj]);
    ( [9 O9 n! i$ d! X3 r9 @# k
  73.                 }, K; \( c  {' q8 {3 V2 U
  74.             }
    ; [8 J9 L% @! }8 U6 f6 s9 r( N  U
  75.             // NXMessageBox works as of NX55 h  O& V7 d$ B: e
  76.             mb->Show("Selected Notes", NXMessageBox::DialogTypeInformation, messages);* ?' O  a6 P4 g, g" w
  77.             // otherwise simply write to the listing window  O' G( }" {9 ~( j( F! U
  78.             // ListingWindow *lw = theSession->GetListingWindow();; R2 k) x. j" o# L. {$ v  w
  79.             // lw->Open();
    ( D3 ?% j& g/ ?: [( o
  80.             // for (unsigned int kk = 0; kk < messages.size(); kk++)& ?* T7 }- v5 C# p6 P3 x! \
  81.             // {
    : F! @4 h7 t5 T9 T
  82.             //  lw->WriteLine(messages[kk].getText());
    ; ?1 q+ b/ q$ F1 K0 X. ~) U3 @
  83.             // }
    ; j: M9 H' X" [  P1 K( B; K

  84. " q: Y7 ^, }7 K& A
  85.         }
    2 ?- `* g+ L4 r
  86.     }
    ' P* ?" E2 y! A

  87. * ]. {- z2 e3 N
  88.     /* Handle errors */
    8 L9 V( `, |* x& Y% u) y
  89.     caTCh ( const NXOpen::NXException& ex )
    & q7 ], M: n8 ^$ `3 c6 x: [  |' F
  90.     {
    . `: H7 C) `3 h% @6 i8 v1 A9 E
  91.         // NXMessageBox works as of NX5" R( x7 `! o# N8 y* ?. ]
  92.         UI::GetUI()->NXMessageBox()->Show("Error", NXMessageBox::DialogTypeInformation, ex.Message());
    0 P/ f3 I) y! S+ Q% X! q; n1 i1 \
  93.         // Until NX4 simply write to the listing window+ T1 B' Q; b) T: E# R% T, n$ j
  94.         // theSession->GetListingWindow()->WriteLine(ex.GetMessage());, F6 r0 w- ]& L1 L5 ?
  95.     }
    - S) r8 o2 O8 C0 O4 w) k$ Y
  96. }- R1 p+ `& ], {2 [1 @/ z

  97. 8 [' w3 D( o8 K: c! Q$ L& z+ R
  98. /*****************************************************************************( J3 I, Z4 C6 I
  99. **  Utilities: a% v2 ]1 O4 F7 a+ {
  100. *****************************************************************************/. ~0 O% O  i' N: r. r$ V/ M$ Z

  101. 3 U; d1 j' V, D8 J" F  Y5 |
  102. /* Unload Handler
    ! y( Q' J( l0 K
  103. **    This function specifies when to unload your application from Unigraphics.' v4 v, \9 |5 n+ _. N
  104. **    If your application registers a callback (from a MenuScript item or a. N" j' C; N& L4 n4 v8 F1 K- @
  105. **    User Defined Object for example), this function MUST return4 a* z; I9 b6 R; e& F9 I' R
  106. **    "UF_UNLOAD_UG_TERMINATE". */
    " P+ S, c* V. }; i6 l( k. m+ F
  107. extern "C" DllExport int ufusr_ask_unload()
    8 G& E5 {- K* e* B& p4 o/ u
  108. {( F  f! }. \8 ^! ~8 V  N
  109. return (int)NXOpen::Session::LibraryUnloadOptionImmediately;2 ]# y# i  ]# w5 K' r4 p/ C6 Z
  110. }
    - a8 a. s  L$ C; d- k. u
  111. , l: r$ P9 W  b1 e1 w
复制代码

, w9 z6 n( ^: Q" R
6 f5 D4 J1 B4 k  C) i1 L
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了