PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2013-10-30 14:00:47

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

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

x
NX二次开发源码:使用NX Open C++选取注释8 m5 y. o" F0 m  l. }9 X
  1. #include <uf.h># V2 U* [# O4 d$ o& s; }, c
  2. #include <uf_object_types.h>+ j  ^5 ?  N; K0 `  X& r4 v, k: M

  3. 9 f/ x. o3 p* t& H/ j. B% [/ u+ ?* ?
  4. #include <NXOpen/Annotations.hxx>+ H" X/ P4 B: m
  5. #include <NXOpen/Annotations_Note.hxx>
    3 }% i- ?4 `1 a" U9 U
  6. #include <NXOpen/NXException.hxx>
    . o, x& }1 o0 f
  7. #include <NXOpen/NXMessageBox.hxx> // as of NX50 g* m/ F1 T+ s/ `
  8. #include <NXOpen/NXObject.hxx># L* C+ o* K* |) ?9 F1 |
  9. #include <NXOpen/Selection.hxx>
    7 L# {  H5 i; k3 [2 S! Q
  10. #include <NXOpen/Session.hxx>% C6 S! |6 n5 ^# f/ a* H
  11. #include <NXOpen/UI.hxx>. y/ t1 \& f6 \/ u, F9 f% n) D
  12. 8 P  i) c* j5 n7 U& L
  13. using namespace NXOpen;6 I5 g* e" D) S" c1 L) K
  14. using namespace std;
    ( y1 M" ~0 Z$ l$ V( s, H- b
  15. ' e% e, }! q8 k* ^2 E7 W6 w
  16. /*****************************************************************************8 ^8 @0 O1 o8 y+ j1 R
  17. **  Activation Methods6 J  z: \* `* [8 \2 z3 X# m! c
  18. *****************************************************************************/
    3 G1 D% y/ O: S# z6 S/ O9 ^
  19. /*  Explicit Activation
    1 _& k4 s5 a5 Y1 H" C
  20. **      This entry point is used to activate the application explicitly, as in5 q# r% ]6 p% q; e. H. ?- q# M& Z
  21. **      "File->Execute UG/Open->User Function..." */
    % }  L" N' K9 B0 m2 S
  22. extern DllExport void ufusr( char *parm, int *returnCode, int rlen )  S3 Z" G4 Y. ^- {+ ^, Z2 F
  23. {
    % r1 q, Z( q$ z
  24.     /* Initialize the API environment */
    # x  A" t) w, v( M* ~8 Z' d
  25. 5 k0 ]! X1 E3 ]0 ?
  26.     Session* theSession = NXOpen::Session::GetSession();
    . \5 _" W, @: P& ?
  27. , ^7 l  n. k2 F9 R+ L
  28.     try
    " V/ t* V( M3 [6 [) E( ]
  29.     {; F0 H1 x7 F& m5 S
  30. $ L. Y! k6 L" w5 R: a; c4 Q
  31.         // ask user to select text
    ! p4 s8 K9 `0 H, d/ `2 a4 U, T3 t
  32.         UI *ui = UI::GetUI();7 M/ i8 f2 O7 c2 ?
  33.         Selection *sm = ui->SelectionManager();" Y1 Q  W2 `" e: q! w9 K' ^
  34.         NXMessageBox *mb = ui->NXMessageBox(); // as of NX5) e7 o, j4 U, M. @# P4 r
  35. 4 y) g3 o" Z' X
  36.         NXString message("Select Notes:");
    + z) z" b  v1 ]
  37.         NXString title("Select Notes");' {! t4 d! e1 _
  38.         Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;: O6 O: m+ l! S) K( d: k: V  |
  39.         Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;6 J3 Y6 D1 L7 X; [& `" }
  40.         bool include_features = 0;
    # J) O/ m5 N) `1 A* d  [
  41.         bool keep_highlighted = 0;
    - ?# o# N% o" F* |5 |

  42. 2 T) p+ K$ B, h8 p2 ]
  43.         // Define the mask triple(s)
    + R% o' i$ S# W, W9 e$ z) G/ q
  44.         std::vector<Selection::MaskTriple> mask(1);
    * b" V9 I. O* i, R, S: ]8 J9 M
  45.         mask[0] = Selection::MaskTriple( UF_drafting_entity_type, UF_draft_note_subtype, 0 );5 K, @: b# e$ p. W! p8 E' F
  46. 0 E0 }8 u3 T; b, C' ]. f( D( U9 r
  47.         std::vector<NXObject *> objects;5 C  \3 |$ r- Q/ m! w
  48. 9 G# B+ K, t3 Q& ~0 c
  49.         // Select objects using filter defined by mask triples
    , O7 O0 T. d6 e; l0 m! d
  50.         Selection::Response res = sm->SelectObjects(! b, z/ g: y3 h& E# l
  51.             message,2 i' I$ }' n! W( b
  52.             title,
    $ k9 W! _6 H2 w' f3 l9 G1 h
  53.             scope,! I5 i' p$ e/ o% m
  54.             action,/ F! ^* f4 ^7 [  t3 \/ p
  55.             include_features,+ o. M- z# V3 x0 ~- C9 d1 f
  56.             keep_highlighted,5 U% c$ x: N0 J
  57.             mask,$ `0 A  ^. h5 A' }
  58.             objects
    & i( R3 @3 u3 u# m+ H% i
  59.             );
    5 o0 `7 K1 }. ?0 K# x2 _
  60. 4 q( l# W: w/ I+ ~  b
  61.         if (objects.size())
    2 Q: b# O0 D+ \
  62.         {# K4 g3 c$ `" [. n
  63.             Annotations::Note *note;$ R2 w+ F( k, o& c  ~/ O% V( I) G
  64.             std::vector<NXString> messages;
    , D7 Y8 T2 x8 a" R! A% N
  65.             std::vector<NXString> texts;
    , L) U* ]1 [" `" G. e) e
  66.             for (unsigned int ii = 0; ii < objects.size(); ii++): Y4 j+ I  _1 f5 O- r/ B+ D' z$ O
  67.             {
    * k. S3 h1 R7 V# N+ ^8 d
  68.                 note = dynamic_cast<Annotations::Note *>(objects[ii]);
    6 v- u! k8 I9 Q+ e$ S; V
  69.                 texts = note->GetText();2 s" I" I3 X6 Y; t, x6 h+ B9 L8 C
  70.                 for(unsigned int jj=0; jj<texts.size(); jj++)
    0 \* i7 k8 m/ p
  71.                 {( a( e, ]" \7 {3 V/ V. C
  72.                     messages.push_back(texts[jj]);) L7 [8 t. a) `  k( S& m
  73.                 }7 }# u* w) U: S; o6 O" B8 H5 K
  74.             }
    3 f1 ]$ t7 M" G
  75.             // NXMessageBox works as of NX5/ I5 Q" i* V- ^! {# p: r4 W  s& \
  76.             mb->Show("Selected Notes", NXMessageBox::DialogTypeInformation, messages);
    * p$ M$ H% Z- P: D6 c5 l3 z
  77.             // otherwise simply write to the listing window& @) \( I" _2 `) R* h) B& U; ~
  78.             // ListingWindow *lw = theSession->GetListingWindow();
    % R1 q. n  t, A; j2 D8 ]3 T1 }
  79.             // lw->Open();7 B" }, x. \1 ~" B; |1 l+ P
  80.             // for (unsigned int kk = 0; kk < messages.size(); kk++)
    ; r6 y% D1 T3 v1 V* J
  81.             // {) Y- |5 T! B% j$ y4 ?- l
  82.             //  lw->WriteLine(messages[kk].getText());! t. U; t; O$ M, r
  83.             // }
    - X' W- c) @& W4 v* Y. H

  84. / y; G' g8 H8 }' l3 j# Y
  85.         }2 W) q7 e( J. Z" I  m6 ~0 A
  86.     }6 ^8 ?4 S. q' c$ l) f/ u9 ~9 _
  87. / a# _+ ]; ^5 k$ }
  88.     /* Handle errors */
    4 {8 x5 e" u! j# _$ u
  89.     caTCh ( const NXOpen::NXException& ex )  r  W$ W- _( B
  90.     {
    : ?2 Q6 ]& n# R  v. t8 v
  91.         // NXMessageBox works as of NX52 n* N& j8 M$ t7 R. [' L, t. c
  92.         UI::GetUI()->NXMessageBox()->Show("Error", NXMessageBox::DialogTypeInformation, ex.Message());9 y, A! o2 J/ I2 P+ d
  93.         // Until NX4 simply write to the listing window2 p: Q% @/ Q0 A9 W7 ], o0 u
  94.         // theSession->GetListingWindow()->WriteLine(ex.GetMessage());
    % b; v( X& U; F! ^
  95.     }, f& v7 i1 v; C
  96. }
    - l" e' O# R% V4 o

  97. ( |4 D' I& L6 N# }! n0 y$ v+ L
  98. /*****************************************************************************/ l3 P$ V( Y" A, x) v0 y/ h
  99. **  Utilities- X4 n. m3 F9 z/ P# |
  100. *****************************************************************************/
    ) b* e6 ^% z* g$ c' z6 h
  101. # Q: z' s; S$ y2 K& x* ]7 z
  102. /* Unload Handler' ~, ^0 I, G) d8 [/ @0 x( L
  103. **    This function specifies when to unload your application from Unigraphics.
    : r- H1 S% K2 T: ^- t+ |
  104. **    If your application registers a callback (from a MenuScript item or a( H- i# \' A# P9 m1 K
  105. **    User Defined Object for example), this function MUST return
    / F3 ~+ ~7 C- {  p
  106. **    "UF_UNLOAD_UG_TERMINATE". */# y1 p* ~4 U8 g+ i6 V; ~9 ^
  107. extern "C" DllExport int ufusr_ask_unload()# M4 c$ l& d1 P
  108. {3 U$ i) v* Y  P' ?
  109. return (int)NXOpen::Session::LibraryUnloadOptionImmediately;
    ) I. f% M4 H4 k* x
  110. }- `6 `9 n: {& t& D& W- U7 K

  111. 0 a1 |9 K/ e; H3 r
复制代码
' ?  i2 k. i3 S- ~

$ M/ P, t! |. V) U4 Q6 \. q5 D" p! F
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了