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 4351 0

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

admin 楼主

2013-10-30 14:00:47

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

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

x
NX二次开发源码:使用NX Open C++选取注释. x6 y* I$ w! k5 i% t7 }
  1. #include <uf.h>% f+ X- v9 A4 W( \, u7 P
  2. #include <uf_object_types.h>
    ; M0 e8 F8 N  ~! S9 e* E# i0 `% U

  3.   H& c. \7 y7 B4 F/ A
  4. #include <NXOpen/Annotations.hxx>: x: C- m" y& F! o4 I
  5. #include <NXOpen/Annotations_Note.hxx>/ p4 f: J9 ~# b/ l
  6. #include <NXOpen/NXException.hxx>5 r/ g' F* L3 r& w6 c1 P
  7. #include <NXOpen/NXMessageBox.hxx> // as of NX5! I, U) m2 G1 R% }8 D
  8. #include <NXOpen/NXObject.hxx>' S+ ~6 B5 m3 T6 {  m& l% g
  9. #include <NXOpen/Selection.hxx>) z6 }! T4 S: X. ]9 G6 P8 O7 x6 h1 o
  10. #include <NXOpen/Session.hxx>
    8 b9 x3 z! Q$ A  K, Y# ^! h' ~. [
  11. #include <NXOpen/UI.hxx>
    / u# S$ ^8 ?0 `+ o2 j8 i

  12. ; Q7 j' \8 J7 {& F* h
  13. using namespace NXOpen;, B" ?5 _, q3 ?& w0 t9 k
  14. using namespace std;
    : M: l& T  t6 I
  15. % x; T( u4 o% ~2 o+ l; [  T
  16. /*****************************************************************************
    / P% G6 Z- a7 \% i- j4 M
  17. **  Activation Methods
    9 Y( U7 m- b9 \% a8 F1 ^
  18. *****************************************************************************/& o( X; f& R' ?, k2 L
  19. /*  Explicit Activation' P0 ^& Z1 _7 K
  20. **      This entry point is used to activate the application explicitly, as in
    5 f& Q% O8 U3 V' H! z; F" w
  21. **      "File->Execute UG/Open->User Function..." */3 T/ t* J" E/ o1 e& Q! W* H- |
  22. extern DllExport void ufusr( char *parm, int *returnCode, int rlen )) o0 e! X) W# e* H* ?  N( p
  23. {8 o3 }( a8 X1 q0 M
  24.     /* Initialize the API environment */: o5 ~( h7 ^- }6 G8 Y8 i
  25. ) H9 l3 a! i% @! @
  26.     Session* theSession = NXOpen::Session::GetSession();
    3 J2 S4 B$ `; L$ F

  27. . a+ q/ i* t* d7 c, _% @; S2 [0 D( B' J
  28.     try
    1 [# }6 p! u  ^" A8 I
  29.     {
    ! D7 R2 f/ G3 l7 ?2 o

  30. 3 t3 H0 T. {) {+ C3 {
  31.         // ask user to select text  a; e$ S% Y* g# t/ I7 z- t: s
  32.         UI *ui = UI::GetUI();( t9 g, W  u% G  u; I7 H
  33.         Selection *sm = ui->SelectionManager();7 h% z8 z" }0 A9 L. e
  34.         NXMessageBox *mb = ui->NXMessageBox(); // as of NX5
    8 w5 f: s7 }! s9 P3 T# P. W

  35. 0 Y! Y7 _2 y, E5 p# K
  36.         NXString message("Select Notes:");
    & z* W  g* j5 O5 T3 T) r4 U6 y0 Z
  37.         NXString title("Select Notes");' ~) x" T! C) J. _- Z! {. w% G
  38.         Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;1 c" h: w7 |- p. k0 D1 Z
  39.         Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
    4 r' P4 b( S! G( a
  40.         bool include_features = 0;9 o- b+ G2 M/ k9 m* q1 _' m
  41.         bool keep_highlighted = 0;* ~8 R, @$ s9 k* U$ {' m  W' W
  42. 0 Y# G+ t+ F& p; _0 G8 X
  43.         // Define the mask triple(s)4 k* E( \  x- n1 ~
  44.         std::vector<Selection::MaskTriple> mask(1);
    % H! R# Y  N9 n( a# ~: S- h" ^& B
  45.         mask[0] = Selection::MaskTriple( UF_drafting_entity_type, UF_draft_note_subtype, 0 );+ Z7 W/ M3 R- i  H  q
  46. ; w6 i" d. p- G' L" M+ \
  47.         std::vector<NXObject *> objects;- a! T& A' v- N# ^, V
  48. 5 f$ Y) k6 v0 X' k
  49.         // Select objects using filter defined by mask triples4 R6 [3 I3 U# u, R( a' f3 _+ O) ?
  50.         Selection::Response res = sm->SelectObjects(
    . _. X) K. L& S3 Z# ~, u
  51.             message,! m- s4 b1 |. z: l' v
  52.             title,- L  N8 r" }1 u+ [$ i# b
  53.             scope,! b! y6 ^$ H: y& H9 v
  54.             action,
    * H: R& S# _" v+ H; Q& H0 t
  55.             include_features,& g2 {# K& o+ c; U. V9 N
  56.             keep_highlighted,( A5 `9 O# |. R- ~* k
  57.             mask,
    6 B8 j" v- L" M; S6 O6 w; n6 y# ?
  58.             objects0 r8 X' ], ^9 K' F8 B
  59.             );
    ) x* [! O+ |: h# ~7 o+ Q# a
  60. & y* x5 m1 O/ d3 u7 g, E
  61.         if (objects.size())3 u( c/ _' Y0 e# ^) a. f
  62.         {! u8 a$ }: @& J8 O0 r! C/ ?* _- a; P
  63.             Annotations::Note *note;& a; I* x3 T- U
  64.             std::vector<NXString> messages;
    % E3 o! s6 ^6 a# m9 B5 k
  65.             std::vector<NXString> texts;
    " S6 k6 H- X- ]' W( z' }/ ?, @
  66.             for (unsigned int ii = 0; ii < objects.size(); ii++)7 E8 o% B3 }+ x
  67.             {
    " U3 F4 ]1 c' \& L' H
  68.                 note = dynamic_cast<Annotations::Note *>(objects[ii]);9 o7 a8 r7 ~0 x# j( W7 q
  69.                 texts = note->GetText();* e1 K9 S' ]4 U+ L  }$ l9 k# C
  70.                 for(unsigned int jj=0; jj<texts.size(); jj++)) E  g/ C+ v- P  x1 e
  71.                 {
    # C0 ^3 v/ R1 i' D  F  U
  72.                     messages.push_back(texts[jj]);# `  u! N* q- \/ \: c- e+ n
  73.                 }
    % u4 j& c7 J. y- c' N0 W1 e
  74.             }& t" I8 K) V! e1 u" q4 p1 J: E
  75.             // NXMessageBox works as of NX5! n$ w1 {% \" t& D. ^7 m
  76.             mb->Show("Selected Notes", NXMessageBox::DialogTypeInformation, messages);
    ! r) e0 B/ n/ S3 `7 P
  77.             // otherwise simply write to the listing window
    4 n! a+ M% p# B" M: N
  78.             // ListingWindow *lw = theSession->GetListingWindow();
    ; V& `) ~( m: a4 g+ I. H
  79.             // lw->Open();
    4 s0 I5 p$ E' L* w
  80.             // for (unsigned int kk = 0; kk < messages.size(); kk++)0 A9 L! [  b* S
  81.             // {+ B6 H9 `6 h) C$ Q$ f
  82.             //  lw->WriteLine(messages[kk].getText());1 {9 L1 t5 W1 S6 U7 h  B$ B
  83.             // }
    1 ]! A8 n5 J3 {/ p* L

  84. 7 ]6 o( P. {& T
  85.         }8 ^% F0 i2 `# K- b
  86.     }
    ! Z- A, A0 |( W2 V
  87. % v) B0 Q/ C% g* ]- P% y
  88.     /* Handle errors */0 j3 @* b7 G5 d# ^: f7 P( j
  89.     caTCh ( const NXOpen::NXException& ex )* N: v' n, r# d
  90.     {' q8 O# e4 l6 t3 Z! K( O
  91.         // NXMessageBox works as of NX5* d% ^8 a3 e1 h
  92.         UI::GetUI()->NXMessageBox()->Show("Error", NXMessageBox::DialogTypeInformation, ex.Message());- r" O, Y8 ]+ U( _: T  w
  93.         // Until NX4 simply write to the listing window
    1 M, c  R2 e8 c) v
  94.         // theSession->GetListingWindow()->WriteLine(ex.GetMessage());& W3 Q; a4 o- s- N
  95.     }1 ^# z6 q* [9 @5 ?
  96. }! K5 \8 F0 _% I4 l8 {; d0 c' @
  97. + i  m* w$ Y& r) x
  98. /*****************************************************************************
    . r3 h# m+ x- ~- @3 L9 |1 S
  99. **  Utilities
    . v" }% c0 n+ p+ w6 {" }; _+ C$ F
  100. *****************************************************************************/4 P+ b$ K; c' q( |1 V; _

  101. $ J: P7 S0 Q# \8 x* m" V+ q
  102. /* Unload Handler* ~, \; k- |5 E7 F" O
  103. **    This function specifies when to unload your application from Unigraphics.
    $ @/ d4 u  M+ U5 S/ ]( M
  104. **    If your application registers a callback (from a MenuScript item or a' q$ {: O6 [( [5 s5 e4 v4 S
  105. **    User Defined Object for example), this function MUST return
    # F% a) J' [. \( C- w
  106. **    "UF_UNLOAD_UG_TERMINATE". */) [" |9 L( |( [: ^: z
  107. extern "C" DllExport int ufusr_ask_unload()
    : C- Y! W2 k" f& M$ @0 f
  108. {4 g# N7 @3 y$ \, h2 U
  109. return (int)NXOpen::Session::LibraryUnloadOptionImmediately;
    , {7 X; V2 N+ P4 \, \
  110. }
    4 H& [4 T% T7 b+ W+ l: f

  111. * G$ y0 [$ w9 f  ^/ j# U
复制代码

/ H5 h- o! n% y/ J4 X9 y. J! O2 _5 u1 L
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了