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

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

[复制链接]

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

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

admin 楼主

2013-10-30 14:00:47

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

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

x
NX二次开发源码:使用NX Open C++选取注释
) }' w' {& i4 B) e: X* K
  1. #include <uf.h>
    ( }' I  b' P- C# C! t
  2. #include <uf_object_types.h>  [) t" S1 R6 f# Y5 T* F/ o$ R

  3. % G. x" E4 o1 o2 _( l$ t! g
  4. #include <NXOpen/Annotations.hxx>2 S- \3 U0 F# C/ S! o3 \6 X  g
  5. #include <NXOpen/Annotations_Note.hxx>% N/ J, J0 x; a. E& a+ z
  6. #include <NXOpen/NXException.hxx>
    3 O& r# d7 O, i5 B+ |3 o' _( V, R
  7. #include <NXOpen/NXMessageBox.hxx> // as of NX5
    ( m5 J$ k0 E4 a; [
  8. #include <NXOpen/NXObject.hxx>
    7 t# x1 _* A: W, p* ?/ w
  9. #include <NXOpen/Selection.hxx>! r# f7 i. d) g; \' r4 M
  10. #include <NXOpen/Session.hxx>
    - R: \. k' i/ j
  11. #include <NXOpen/UI.hxx>
    6 _. l* S! h+ S- t+ k& D
  12. 9 _! J8 d/ C5 t1 m. r; v; V- j, ]
  13. using namespace NXOpen;
      Q0 C' D# F4 g; K! i1 \. s  X( X( h
  14. using namespace std;) f& f0 x% g  `" ?

  15. & h* T# u! C1 w3 c
  16. /*****************************************************************************
    $ j5 t7 |! L  `( D7 \' E  \1 }1 }
  17. **  Activation Methods5 W4 v/ y2 C6 k- W. H* S
  18. *****************************************************************************/+ p, g5 I# O" T( F7 v6 ^
  19. /*  Explicit Activation0 @. K  n3 u/ W) `  v
  20. **      This entry point is used to activate the application explicitly, as in, R3 K7 g8 u' @" x
  21. **      "File->Execute UG/Open->User Function..." */
    # M: z  E) s$ o9 c4 u/ r
  22. extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
      ?6 C$ W' p- [; s  n* t
  23. {6 S, t$ m6 c; }+ g* Q: e) s* @) h
  24.     /* Initialize the API environment */
    ' B9 `6 [8 i. }  O

  25. ( Q3 u# X9 Y* [) \" R
  26.     Session* theSession = NXOpen::Session::GetSession();
    0 ^: l1 P' b' J  _

  27. : x) E: S& }) H
  28.     try
    8 ?8 t! y2 U. r: r
  29.     {
    ( d' z& `% l  E$ Y5 S$ f

  30. 5 O% j( g) F4 v# f* l3 \6 R- q
  31.         // ask user to select text* _6 t* I: e- C
  32.         UI *ui = UI::GetUI();
    " p1 n/ k4 \, Y7 D
  33.         Selection *sm = ui->SelectionManager();
    2 v* j# ~9 p. T. l; Z
  34.         NXMessageBox *mb = ui->NXMessageBox(); // as of NX5! z5 b. }5 R8 k( W% j! r1 c4 `
  35. * S( H( {( `( W6 W& p6 O1 c
  36.         NXString message("Select Notes:");
    , ~# m9 @; o  X: w& P7 w) W2 }8 O
  37.         NXString title("Select Notes");  l( ~' \2 q6 T0 l( t. U8 B7 S) ~  ^
  38.         Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;1 ^4 k& z1 s" r8 e+ m; w
  39.         Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;+ D7 A, Q2 Q7 }( j8 o
  40.         bool include_features = 0;5 Q! |8 s" T# l5 }% r* o7 l
  41.         bool keep_highlighted = 0;3 h& p9 d- r- z6 |
  42. ) W! h" m+ x6 @( V" o/ A* ~
  43.         // Define the mask triple(s)
    & w+ p8 z" V* D1 K8 t6 {4 f
  44.         std::vector<Selection::MaskTriple> mask(1);
      c+ s+ u6 ?0 _3 O9 Z. D
  45.         mask[0] = Selection::MaskTriple( UF_drafting_entity_type, UF_draft_note_subtype, 0 );
    . \7 p! i* |  N+ @5 x% V+ R' e
  46. 6 b4 A3 ?0 `6 m0 P; a" p7 I4 x
  47.         std::vector<NXObject *> objects;
    ( @! K2 ]0 f& N3 [( z1 Z5 C
  48. ; k3 u2 W+ t1 d7 v
  49.         // Select objects using filter defined by mask triples
    - [  p; v$ r* B+ S5 z$ E0 Z
  50.         Selection::Response res = sm->SelectObjects(
    , {# [8 H' i9 k( `1 j3 l
  51.             message,
    * y; V; k8 H5 ?. e! t8 k2 D; t
  52.             title,$ I3 f8 G# I$ f/ L+ W% t
  53.             scope,
    : a0 e7 f( z. z; y
  54.             action," I- b  a! ?$ [
  55.             include_features,! T5 O+ q9 K3 n6 C1 K& n7 G: Z
  56.             keep_highlighted,2 ?9 w/ r1 Q% U" }
  57.             mask,
    / f2 _4 q1 n9 A
  58.             objects
    ; ]$ h# M: c5 O& ]3 r
  59.             );1 n! a6 Y8 B8 h4 X  |
  60. 4 L' _% I. w; `+ Y4 V- j/ M# L' Q+ ^
  61.         if (objects.size())5 k2 Z" ]- k* F( T( p
  62.         {
    / E& l; q9 c, z
  63.             Annotations::Note *note;
    4 Q9 \, y6 D9 E: b/ ^
  64.             std::vector<NXString> messages;
    0 u; n/ c- T( `4 G  f2 ^
  65.             std::vector<NXString> texts;
    ( X7 A# b; u4 U
  66.             for (unsigned int ii = 0; ii < objects.size(); ii++)$ S. o- ^9 }) L9 a5 X) J
  67.             {1 ?$ f7 [* h  t% K; v2 H5 U1 ^
  68.                 note = dynamic_cast<Annotations::Note *>(objects[ii]);
    6 l; C; [  g! C) Z, Z. ]3 S4 v
  69.                 texts = note->GetText();0 [6 h  {4 k/ |' p; Q9 w) H
  70.                 for(unsigned int jj=0; jj<texts.size(); jj++)  ^/ F, ]6 {3 R& z& h# }( p
  71.                 {
    " I5 J) b+ B. S6 f) d
  72.                     messages.push_back(texts[jj]);2 i! a: ?9 {# Z0 P% i
  73.                 }0 |/ {. m% d6 f4 p. h# s
  74.             }* G4 a* s2 {  B) o5 G# u  a/ B
  75.             // NXMessageBox works as of NX5
    * Z/ C# R! k/ l$ o& ?! X
  76.             mb->Show("Selected Notes", NXMessageBox::DialogTypeInformation, messages);
    . @" ~& B! n4 ^: `0 Y; _7 w$ ?
  77.             // otherwise simply write to the listing window9 `8 r* \5 w- Z- L5 z
  78.             // ListingWindow *lw = theSession->GetListingWindow();
    + _- {" G5 y% ^  Z! K& e+ K2 B. o
  79.             // lw->Open();! E( C! j7 T0 }7 o3 @8 N
  80.             // for (unsigned int kk = 0; kk < messages.size(); kk++)% k; h: W5 W- v% c0 Z7 U# W
  81.             // {
    / p$ ?0 z: w7 ~* ~' p
  82.             //  lw->WriteLine(messages[kk].getText());
    ( Z1 V3 a# L9 ^6 s7 q
  83.             // }
    9 y2 w- S: I& ?& U: |+ u' d  l) l

  84. ' [; E3 {: r/ O' |) ]$ @4 i
  85.         }
    1 u  O; b7 ~6 A' [. h& S! m
  86.     }
    . p2 |7 `; R4 f
  87. ( T4 |  k' |0 m# E, P
  88.     /* Handle errors */
    " B% h9 G! A  X
  89.     caTCh ( const NXOpen::NXException& ex )2 J& K' n0 {# }4 x3 Y9 X
  90.     {
    . }6 M5 R* R& j4 U+ s" g
  91.         // NXMessageBox works as of NX57 k7 H+ J/ q' k% }7 F* U+ o. m( J$ d
  92.         UI::GetUI()->NXMessageBox()->Show("Error", NXMessageBox::DialogTypeInformation, ex.Message());
    $ K8 c9 V$ S! X+ U
  93.         // Until NX4 simply write to the listing window
    : x& V; u2 n: e" f  M
  94.         // theSession->GetListingWindow()->WriteLine(ex.GetMessage());1 G7 A$ j3 |" }/ o3 X7 o" I
  95.     }- K& e* k& {' {8 j+ w
  96. }) G. X& k6 e% Q% o1 E
  97. 5 c' l/ r$ ~' S( |1 x
  98. /*****************************************************************************0 Y4 ~) z5 ?/ ?5 F3 y$ U
  99. **  Utilities
    8 Z, p1 O3 T/ L% h1 `
  100. *****************************************************************************/
    , J9 W" }9 q6 D8 y

  101. # Q+ X& w  N3 v  Q$ Y
  102. /* Unload Handler
    6 H; [5 f2 ^$ D6 p) r; F
  103. **    This function specifies when to unload your application from Unigraphics.7 ?# V' k6 M9 R" O
  104. **    If your application registers a callback (from a MenuScript item or a
    - N# J6 P0 L. i1 e# g0 p& z* D
  105. **    User Defined Object for example), this function MUST return
    9 U0 a+ |7 Y  w4 b, S4 \# [  `/ D
  106. **    "UF_UNLOAD_UG_TERMINATE". */
      ^9 M9 ~0 S6 }& b
  107. extern "C" DllExport int ufusr_ask_unload()6 f$ T2 E+ [5 [3 d$ a; E8 L
  108. {6 x4 |, b! Q! |& T
  109. return (int)NXOpen::Session::LibraryUnloadOptionImmediately;
    . S, f5 ~% j" N0 J) d% m
  110. }
    / S; d7 Y2 w3 m! R( d: S$ Q
  111. 5 L# R: p, l  \; {3 Q7 u7 i+ U+ t
复制代码

% Y# x, i( ^, \6 S1 q9 w' B/ {- x* H3 l" ^+ y( b5 U
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了