PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

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

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

admin 楼主

2013-10-30 14:00:47

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

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

x
NX二次开发源码:使用NX Open C++选取注释0 m# T: W/ t, m1 D6 |. K+ X+ P( H
  1. #include <uf.h>
    ) G+ W( a9 z/ i8 `0 L0 D
  2. #include <uf_object_types.h>1 e$ ?9 R3 f+ A3 G6 m' A

  3. : \+ T8 x9 [! e' s# b& l
  4. #include <NXOpen/Annotations.hxx>0 c$ o5 n$ n, c, _* |
  5. #include <NXOpen/Annotations_Note.hxx>6 K6 ]$ m& M) z7 z& X' e$ L- k
  6. #include <NXOpen/NXException.hxx>0 ^& k4 t$ m- \, ^7 `9 U
  7. #include <NXOpen/NXMessageBox.hxx> // as of NX5
      p- Y- D" O3 D* ]( H
  8. #include <NXOpen/NXObject.hxx>: K) v8 p9 T2 D& q1 j! N9 f
  9. #include <NXOpen/Selection.hxx>
    6 d8 I- [; t4 V0 E$ N
  10. #include <NXOpen/Session.hxx>
    3 g4 n* E* \: N7 A4 m; A: Z5 E
  11. #include <NXOpen/UI.hxx>; r1 ?+ ?" M( @6 l9 x+ O
  12. 6 }; a/ b1 t) B( E$ M
  13. using namespace NXOpen;
    % [0 p5 u# i. _0 D, G. S6 Q: {
  14. using namespace std;9 f- d' p4 A' |% g! i# z7 j
  15. . K  R; {8 S. [* I3 m8 L
  16. /*****************************************************************************- e% `6 D8 O- S' A
  17. **  Activation Methods
    9 I6 y0 g' B* U* T& D
  18. *****************************************************************************/
    ! Q0 S) n; K9 v7 r
  19. /*  Explicit Activation
    / _' I2 ^. `' g  w: f0 T
  20. **      This entry point is used to activate the application explicitly, as in
    + t: m5 N: F6 d# c/ m% m2 m
  21. **      "File->Execute UG/Open->User Function..." */# M: s: |# t2 h: o5 X6 B8 s
  22. extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
    7 R$ X5 ]$ C& O& e$ F+ r9 c' ~! r
  23. {
    & h6 \4 @; ~2 [
  24.     /* Initialize the API environment */
    2 w. S/ _! X" K+ f1 G# c/ k

  25. 6 u! _& }& E. J- O; Y
  26.     Session* theSession = NXOpen::Session::GetSession();
    . @  k; Y# i: r! F# x. ^
  27. # |/ x- [) o. x9 M
  28.     try
    " a  [5 a- [/ [1 q1 v5 h
  29.     {
    - C1 q/ m% s7 S( z: Y

  30. ! {- w2 o' |( {- e
  31.         // ask user to select text
    5 @7 R: F* z& s% a
  32.         UI *ui = UI::GetUI();" ?/ g" e9 F% {3 f+ b% z
  33.         Selection *sm = ui->SelectionManager();3 M) l& B+ V8 h" d4 c" W6 |( o
  34.         NXMessageBox *mb = ui->NXMessageBox(); // as of NX5
    0 a, R9 r0 Z, X$ S/ ]+ C7 k

  35. 8 }/ G* ~3 i- C( D
  36.         NXString message("Select Notes:");* B7 z7 X$ h: y1 p
  37.         NXString title("Select Notes");
    1 C# c- v+ J9 H
  38.         Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
    / i' q7 k* O8 o8 L6 o+ E
  39.         Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;& O/ ~9 |& z, u" J/ B
  40.         bool include_features = 0;+ L/ C- L- X/ D7 [0 |  _: E3 v
  41.         bool keep_highlighted = 0;6 _6 l  n* p  ]6 k. j

  42. # R8 |6 A* X9 T# ?& S0 q
  43.         // Define the mask triple(s)
    # q$ x9 Q5 ^0 T
  44.         std::vector<Selection::MaskTriple> mask(1);# I% a$ \7 d& j; r& e. u
  45.         mask[0] = Selection::MaskTriple( UF_drafting_entity_type, UF_draft_note_subtype, 0 );
    % N9 r1 {0 ~3 Y# v, L# `

  46. ( x- w* @  `" f% n/ M$ p5 K6 I2 R
  47.         std::vector<NXObject *> objects;
    + Z2 ]. {* @4 m/ a- z3 c* M

  48. & O: w7 d) Q% i# A) ]. o
  49.         // Select objects using filter defined by mask triples
    6 n3 N( H  y# f! @6 }$ z( j
  50.         Selection::Response res = sm->SelectObjects() o2 b& a, A8 J$ B% p# v7 Z
  51.             message,
    % V6 _! T" X& d# b# b
  52.             title,' H5 ]/ Y; i7 y; m
  53.             scope,/ w7 e) @7 x! {  M  j: A
  54.             action,
    2 F3 S" {0 q7 L8 H3 s% V. E
  55.             include_features,
    9 j& X) v" x2 I9 |, T) }/ V
  56.             keep_highlighted,5 U) j* n6 h+ H% {# X4 O& {& v
  57.             mask,
    : u0 Z, A' `. \
  58.             objects
    3 |5 X( n) s, Y5 S% N& r8 j
  59.             );* \8 i! Y/ f# N0 _+ ]6 X. Q; i7 l2 h

  60. 2 a6 {% ^  `  D: o5 a6 G- s
  61.         if (objects.size())( \8 B" F$ B: E. \3 @$ G9 w
  62.         {
    5 L; D$ w% p7 U- o. c3 C2 H1 G
  63.             Annotations::Note *note;
    # x% h7 |( y; @6 i9 P. U9 I8 u, k
  64.             std::vector<NXString> messages;
    + E, Y6 Q7 r3 i" `3 [* h' S& L
  65.             std::vector<NXString> texts;: [$ C. s3 M& r
  66.             for (unsigned int ii = 0; ii < objects.size(); ii++)8 X. r) M; w* x- q1 J8 h
  67.             {
    ; @! P9 q7 L; [/ G& Y
  68.                 note = dynamic_cast<Annotations::Note *>(objects[ii]);
    " \/ Z6 W9 q, z% O
  69.                 texts = note->GetText();9 l+ T/ K! b5 w  D
  70.                 for(unsigned int jj=0; jj<texts.size(); jj++)5 x2 ^& q3 N: X9 r. R
  71.                 {0 R# n' Q1 K$ v7 ~9 O
  72.                     messages.push_back(texts[jj]);9 Q/ o0 C; F: I: m1 m0 |4 y
  73.                 }
    # @" C) r8 N5 T1 G& \4 H
  74.             }) p7 {6 k9 f; b. e9 i& z6 z1 C
  75.             // NXMessageBox works as of NX5
    9 Q6 J  T4 A# t' q
  76.             mb->Show("Selected Notes", NXMessageBox::DialogTypeInformation, messages);
      i+ D' C* Q2 r% }
  77.             // otherwise simply write to the listing window
    4 r0 V$ Y. n! d" ?& _) u7 b! M
  78.             // ListingWindow *lw = theSession->GetListingWindow();
    * X" l4 W0 a3 [) k- L% _# B
  79.             // lw->Open();$ U) u+ }, z+ Q9 v0 x
  80.             // for (unsigned int kk = 0; kk < messages.size(); kk++)
    ' b' D  p9 K2 Y  j
  81.             // {' `2 A3 V1 W1 |
  82.             //  lw->WriteLine(messages[kk].getText());6 L4 O' w$ Q; X* L" c- i% Z
  83.             // }3 @3 K) A  V8 j

  84. / J- i8 s% J+ Y# j: D5 J- N4 o
  85.         }. ^4 I* Z3 a8 d* t8 j6 n* \
  86.     }
    8 C0 p4 M" l# ^

  87. 0 h6 y, x( Y; J6 ?& Y0 ], `) N
  88.     /* Handle errors */( h) b8 J+ V4 b* r" \* w7 k
  89.     caTCh ( const NXOpen::NXException& ex )
    8 V; x# {4 Z! {% `  `* \* B% z
  90.     {
    " M! u% r8 L2 ~& ]+ Y* j& x
  91.         // NXMessageBox works as of NX5% R+ d7 V5 t6 O$ Y0 ~: ^% N1 ^
  92.         UI::GetUI()->NXMessageBox()->Show("Error", NXMessageBox::DialogTypeInformation, ex.Message());
    % C1 M9 i. l9 Q- p1 Y3 h
  93.         // Until NX4 simply write to the listing window
    - e0 e9 S3 p4 M+ n
  94.         // theSession->GetListingWindow()->WriteLine(ex.GetMessage());& r( e4 |. b; {  y8 v
  95.     }
    & I7 t4 c4 b- R2 S0 U2 r
  96. }" Z2 a, @, ]8 W2 m* y
  97. 5 j- A3 \$ p5 Z* q# B% P. \: b3 D
  98. /*****************************************************************************
    / u! W* S; R6 l: |5 l3 v' V0 B2 E% b2 f
  99. **  Utilities
    6 a, r" i4 U* Q. B/ Q# F
  100. *****************************************************************************/) m0 Q0 F: o/ Z2 p
  101. + A  f" t- M0 p: S/ H
  102. /* Unload Handler% u  ]/ y9 G/ A
  103. **    This function specifies when to unload your application from Unigraphics.6 ^0 k; X& B+ }" Q5 Q. `2 i
  104. **    If your application registers a callback (from a MenuScript item or a/ O+ l5 K  ]2 l  b- p7 y
  105. **    User Defined Object for example), this function MUST return' W+ _# p+ p/ o8 Z
  106. **    "UF_UNLOAD_UG_TERMINATE". */
    * A8 K2 c- ~- R5 M
  107. extern "C" DllExport int ufusr_ask_unload()% K' r8 n% E! `! J6 U: v
  108. {! v, |, J3 y5 [( s
  109. return (int)NXOpen::Session::LibraryUnloadOptionImmediately;
    # h8 l9 @/ u' g/ ?5 S$ b; P( ?
  110. }
    + U& {! G3 R: ^6 b
  111. 6 P4 U9 t& x' [, |( r. x: [
复制代码

! h. O3 T3 r; E! r3 a1 Q2 ]1 W1 L
+ z& ^  M; i+ Y1 [; h# ~
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了