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

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

admin 楼主

2013-10-30 14:00:47

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

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

x
NX二次开发源码:使用NX Open C++选取注释
% d9 I) T+ l$ X8 [5 Z  s
  1. #include <uf.h>- g7 @0 Y( F; a# W; ^1 h3 H
  2. #include <uf_object_types.h>* p1 [- n+ E. T! ~5 @

  3. ) D* g' N  G7 U
  4. #include <NXOpen/Annotations.hxx>
    ; J. N& ?7 _6 @" M
  5. #include <NXOpen/Annotations_Note.hxx>
    ! \! |& f! C. r0 \$ @' A: R! g
  6. #include <NXOpen/NXException.hxx>
    / t; t  Q$ s( `# z" i- q
  7. #include <NXOpen/NXMessageBox.hxx> // as of NX5
    - y3 @& P9 V2 }9 @1 [# ]) L
  8. #include <NXOpen/NXObject.hxx>( `- }6 F" m7 r2 q
  9. #include <NXOpen/Selection.hxx>
    , ~* t7 ?; h5 v3 s' f
  10. #include <NXOpen/Session.hxx>( \/ M. }$ \$ A. q
  11. #include <NXOpen/UI.hxx>, l3 B9 y+ a0 T$ u; r
  12. 7 i. `2 I# B" g: Q( a
  13. using namespace NXOpen;. F" s: A+ U! H9 d
  14. using namespace std;
    ! ~% m' K4 f' O' i2 w8 E, `
  15. ! \( V3 B. \. b. E* M1 ^$ x
  16. /*****************************************************************************, q0 c. s# w% Y3 \9 Y
  17. **  Activation Methods3 \4 h) Q" f- _4 }4 D- z' l3 Z4 R
  18. *****************************************************************************// D8 m+ L3 n7 a9 ~
  19. /*  Explicit Activation
    - u, k: S( I( f9 E1 q
  20. **      This entry point is used to activate the application explicitly, as in
    " o+ }5 j& k' k* B8 E+ h
  21. **      "File->Execute UG/Open->User Function..." */% p' _$ \- L! \# }0 g: v8 f
  22. extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
    9 ]# r1 ^& m! r% E5 i* p. G: T
  23. {+ b8 a* W3 t  {9 o8 e4 }8 a0 n
  24.     /* Initialize the API environment */4 S: Y  P( V7 |8 }( k% h

  25. + A. V, _- O/ F0 P4 R5 q5 U; U
  26.     Session* theSession = NXOpen::Session::GetSession();; g- s( a" y* z; Y2 D8 U
  27. ) C/ a# R' l( s; p2 Q$ v: V
  28.     try
    + T* g! z& s& w) f4 u
  29.     {) Q, }: r5 H& l' X1 u( ?
  30. 6 S6 {- Z4 `  I/ z1 F
  31.         // ask user to select text
    ( F5 D* n) {* b. B1 o, Y+ ^4 Z
  32.         UI *ui = UI::GetUI();) s  @# o0 u0 C+ D$ w- t0 e
  33.         Selection *sm = ui->SelectionManager();
    / I+ x+ p8 o( v
  34.         NXMessageBox *mb = ui->NXMessageBox(); // as of NX5( L" X# t5 m4 `- u

  35. : S, Q$ D9 u& u( g- j& S; k- q$ A
  36.         NXString message("Select Notes:");$ [2 b! Z$ `" m8 }
  37.         NXString title("Select Notes");7 A4 X) J2 }9 Q5 W$ b
  38.         Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;! w5 ?* C7 M! P% D( r" t. {' _( w8 I
  39.         Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;: O  _, t. c3 V' ?
  40.         bool include_features = 0;% N! h) a0 |) C) f. W; g, V
  41.         bool keep_highlighted = 0;) T' N+ H4 h7 h# R& m0 S$ S4 w

  42. ! a8 ], J' {7 e4 F
  43.         // Define the mask triple(s)4 y4 q: u6 G8 @7 L/ G& ?
  44.         std::vector<Selection::MaskTriple> mask(1);5 Z7 C6 l! ~9 t% C
  45.         mask[0] = Selection::MaskTriple( UF_drafting_entity_type, UF_draft_note_subtype, 0 );1 u% H& q6 K5 N+ J" j# N
  46. 4 o& X# F' ~) g2 v% W' `9 G  \
  47.         std::vector<NXObject *> objects;6 h9 M" Q/ h5 i. {! M, i
  48. * F. Z& Q  i+ W
  49.         // Select objects using filter defined by mask triples. G& S: v& J8 A
  50.         Selection::Response res = sm->SelectObjects(
    7 d3 z. a% L' t& k$ G
  51.             message,
    ) m1 L1 X' z4 M* e7 z" B  Q' C
  52.             title,
    " e1 q* r7 O, j
  53.             scope,
    # n0 ~, [7 K  T7 ?9 a
  54.             action,9 y8 R" ^! }5 e3 t
  55.             include_features,
    , M' v; V: ]' g$ F3 i" ^/ c
  56.             keep_highlighted,
    ( D9 _" q$ T3 U! [
  57.             mask,! x& [4 c$ c( Y5 O
  58.             objects& T0 G& C; I( b5 j, `+ _; G
  59.             );: ]+ `" k. h" X* Z" U

  60. ) q1 x, N8 B, \/ u) J
  61.         if (objects.size())
    ( W. `' f$ C2 c& ]; h' a0 f" l
  62.         {
    % h+ H, ]2 h- V: M) t* u
  63.             Annotations::Note *note;* Y' d' ]; l! G. I5 A
  64.             std::vector<NXString> messages;
    0 }( U- N0 k. B1 O8 h4 _
  65.             std::vector<NXString> texts;
    ! o( N8 w) k4 l# y
  66.             for (unsigned int ii = 0; ii < objects.size(); ii++), b4 j5 m* h; c3 c1 e0 a1 W
  67.             {3 W' X: o, z' Y- c
  68.                 note = dynamic_cast<Annotations::Note *>(objects[ii]);
    ; K* F  p2 @; P$ _1 I9 g
  69.                 texts = note->GetText();0 x  F& j( |2 P+ K
  70.                 for(unsigned int jj=0; jj<texts.size(); jj++)
    & K6 x; N5 z: F
  71.                 {
    : G# j) u9 v0 |1 D3 O
  72.                     messages.push_back(texts[jj]);
    2 `$ b. D% J  L! M. l
  73.                 }) }/ ]9 S0 e4 ~2 d( K7 U. s/ R$ _
  74.             }
    ! V( m" L8 r- U. l
  75.             // NXMessageBox works as of NX5  J" D2 C- G6 C* R- L. l
  76.             mb->Show("Selected Notes", NXMessageBox::DialogTypeInformation, messages);
    2 [9 R  H) y# q& r. j% C
  77.             // otherwise simply write to the listing window
    1 P/ n9 L# }. F  T( K" |# p+ x2 F
  78.             // ListingWindow *lw = theSession->GetListingWindow();
    & h/ b) e9 q) e5 K
  79.             // lw->Open();+ `; b! W; i, w6 ~
  80.             // for (unsigned int kk = 0; kk < messages.size(); kk++)
    $ i$ C7 N: O( ?+ [. d2 H6 A, U/ l
  81.             // {
    ( x1 D* W4 J& H7 Q; u4 y5 P+ N
  82.             //  lw->WriteLine(messages[kk].getText());
    / a6 }- x2 T# B2 M: J- R- ]: R
  83.             // }
    0 p7 `* y3 S4 F+ r3 ^4 J/ O& T* {8 ?
  84. 5 U9 [# U+ A! @6 S
  85.         }
    , ~& {+ j5 U( ?/ v# Q0 o; c7 e
  86.     }5 n; g* x1 t& O' c

  87. , h& O0 R- g. ]" |
  88.     /* Handle errors */
    ; B$ U+ W" h0 ~( A: B+ @/ p
  89.     caTCh ( const NXOpen::NXException& ex )" |5 F1 D) y. h* V% e' \7 k  i
  90.     {  v4 j( t& _3 W/ L% J3 _' h
  91.         // NXMessageBox works as of NX5$ d4 L" |# r% `3 B8 g
  92.         UI::GetUI()->NXMessageBox()->Show("Error", NXMessageBox::DialogTypeInformation, ex.Message());
    0 @' i7 I3 b, }, q9 _
  93.         // Until NX4 simply write to the listing window& ?0 W& y6 E6 |7 N: R
  94.         // theSession->GetListingWindow()->WriteLine(ex.GetMessage());
    8 b2 B/ k$ G. J1 k$ U  o9 X
  95.     }
    ! B* g6 k7 p7 }3 k* K3 |5 G; ^0 R
  96. }# Z0 j7 j. ~4 \/ k' o

  97. 5 i; i9 u6 U5 S: d0 j6 A, L
  98. /*****************************************************************************
    + y6 b* p6 a2 D: Z4 }0 q
  99. **  Utilities: |) b9 ^/ M: `
  100. *****************************************************************************/
    * w- B0 L  B2 g* t, t
  101. ( Q$ j  C5 u; b$ d) X& a
  102. /* Unload Handler
    ; l8 E3 l4 o0 c* W  \' [" n
  103. **    This function specifies when to unload your application from Unigraphics.5 w9 O8 O3 d+ v; c
  104. **    If your application registers a callback (from a MenuScript item or a
    ( k. D  B1 R# y, D2 _6 L# \6 j
  105. **    User Defined Object for example), this function MUST return5 O; x/ e, W) C' y
  106. **    "UF_UNLOAD_UG_TERMINATE". */
    1 V: ]! B' U- Q+ S+ Y" {" W* \. U. [( A: _
  107. extern "C" DllExport int ufusr_ask_unload()
    : n8 ^$ C+ I# M0 T6 y& X8 Q
  108. {/ N. `+ O( H) A4 Z
  109. return (int)NXOpen::Session::LibraryUnloadOptionImmediately;
    7 w9 v' a( x( ?' Q: K
  110. }
    ; s1 v0 T6 @9 @0 }& l( f

  111.   X/ d( X- {9 a
复制代码

& A$ N* _8 O$ Y. K' p4 @5 H& N6 i* J$ I- v
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了