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

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

admin 楼主

2013-10-30 14:00:47

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

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

x
NX二次开发源码:使用NX Open C++选取注释
- Y& |( }! n1 g2 y9 t
  1. #include <uf.h>9 q  E6 p  m; s  ^0 f; V) |4 B& m
  2. #include <uf_object_types.h>
    4 C: z1 y9 W2 T) @' A
  3.   ~1 L( I( f8 B0 j" g9 R( ~- f' K+ ^
  4. #include <NXOpen/Annotations.hxx>
    0 ?9 j) Q5 |, Q9 F9 S# @" N! H; |
  5. #include <NXOpen/Annotations_Note.hxx>
    3 E4 D  ]- I4 B- [9 g: N4 O) x& d0 ^
  6. #include <NXOpen/NXException.hxx>' m. N8 v9 R9 X+ m) {
  7. #include <NXOpen/NXMessageBox.hxx> // as of NX5
    . s& g3 {6 D4 M% [1 E
  8. #include <NXOpen/NXObject.hxx>
    0 E% k) a/ c1 P5 S9 D
  9. #include <NXOpen/Selection.hxx>
    " C# _2 ?( \# L) o& _/ g/ p) b
  10. #include <NXOpen/Session.hxx>+ x. }) E9 V6 R2 [2 V
  11. #include <NXOpen/UI.hxx>
    " W. x, D; }- Y# k/ [5 t
  12. + A" k  k% j' H! `# p
  13. using namespace NXOpen;
    , N5 ^5 F3 h3 R5 h' n
  14. using namespace std;3 h  G5 v. f' m" Q' z

  15. ( z1 l/ m' @# X9 w# a
  16. /*****************************************************************************; w2 H5 [& W3 H5 z
  17. **  Activation Methods; C! ?7 I6 N9 r( F0 f5 o2 J& x, v0 _
  18. *****************************************************************************/+ f; ?+ A+ M  F6 b; S; c
  19. /*  Explicit Activation
    , `9 w" K  [7 b2 E% k% g2 Z
  20. **      This entry point is used to activate the application explicitly, as in
    . ^. a0 j/ S. B. ~( a8 V+ {2 i+ E
  21. **      "File->Execute UG/Open->User Function..." */
    $ f4 O7 c6 A$ w1 }
  22. extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
    3 d8 h1 P# u  M. q5 \+ y! z
  23. {$ |. a1 z3 R* S5 u" n
  24.     /* Initialize the API environment */4 f( }- P! E% Q

  25. 7 y1 @0 s6 W0 V. m, k  o
  26.     Session* theSession = NXOpen::Session::GetSession();+ h' ?$ N0 f! i" h8 P, v
  27. ) Y0 d# y1 p) s) w/ `" [3 ^
  28.     try
    ; l9 ^+ p0 b* _3 l  P7 Z
  29.     {
    / ?' p2 |+ O6 @; f$ ~% T; N
  30. 5 H7 N  [9 u4 _$ \2 S' i
  31.         // ask user to select text* t. S( s6 D' t- j. ]* t& P
  32.         UI *ui = UI::GetUI();
    4 D" A, s- X( S( [, O! A
  33.         Selection *sm = ui->SelectionManager();6 F3 `  o; {6 p4 f: T( t. N$ e
  34.         NXMessageBox *mb = ui->NXMessageBox(); // as of NX5
    % d' N* H7 A. s8 c  S
  35. 2 y6 j, w. y' e6 A; Q
  36.         NXString message("Select Notes:");6 J0 {2 `  s% f/ k
  37.         NXString title("Select Notes");- s2 q2 f! v; X, t
  38.         Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
    $ V# D: `7 R: L
  39.         Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
    ; L# F3 e/ N+ A, [. n( O& W# h
  40.         bool include_features = 0;- y* P# J1 V' y' ]3 P
  41.         bool keep_highlighted = 0;
    $ ]0 V& q/ {: x- P; l
  42. 4 b  _8 m8 z$ n* Z5 x: w
  43.         // Define the mask triple(s)
    . I0 \! _1 o# d3 {, @, F
  44.         std::vector<Selection::MaskTriple> mask(1);
    + K) K- q' _3 X1 i
  45.         mask[0] = Selection::MaskTriple( UF_drafting_entity_type, UF_draft_note_subtype, 0 );7 o$ C0 K8 X( h5 q$ F' J
  46. + g$ R9 R; |0 o- Z" G" k8 {- t
  47.         std::vector<NXObject *> objects;
    * e+ R  B( ^, M2 r

  48. . d  Q  p/ |+ h: _& l
  49.         // Select objects using filter defined by mask triples
    9 G5 F$ h' r- k3 X
  50.         Selection::Response res = sm->SelectObjects(
    " J7 z) R. _3 N" Y' U! W
  51.             message,
    8 R4 Q( P2 D( W: c2 z4 _
  52.             title,0 z. ~) d5 B$ j( f) `* H( @
  53.             scope,. Q/ D9 V0 e6 F* I; b
  54.             action,7 x: b9 y! C' N9 Y
  55.             include_features,# }; E5 I7 ~! q) _5 _0 ?* w  B
  56.             keep_highlighted,
    ' ]! f- m$ m" J% c# c
  57.             mask,
      o/ N  Q) a% ~* s* W2 [0 _
  58.             objects
    . f: ?" p" \4 T$ Z
  59.             );+ _- Q2 d; A) t7 |4 @
  60. # N. U7 z( @3 T; N. Z, s
  61.         if (objects.size())+ W* F+ Q8 ?9 ]8 @8 y' m6 l7 g" Z
  62.         {
    7 f- n$ B: q+ A- ~1 ]. `- W
  63.             Annotations::Note *note;
    6 s/ Q9 y1 `* v) \
  64.             std::vector<NXString> messages;; a2 p7 R2 X4 |5 F9 S& k! X
  65.             std::vector<NXString> texts;" I# c3 O- C! R* R/ N! I9 q
  66.             for (unsigned int ii = 0; ii < objects.size(); ii++), T1 }! Q; G" D5 z
  67.             {$ u* f- |+ C; _9 Z/ z5 |
  68.                 note = dynamic_cast<Annotations::Note *>(objects[ii]);( X$ B3 u( I; Q/ v- D
  69.                 texts = note->GetText();! H8 b' \$ P( i. c
  70.                 for(unsigned int jj=0; jj<texts.size(); jj++), Z5 `7 J! @, q0 M" b( K3 l# a: S
  71.                 {& m% {, E- w9 {  Z/ {4 F
  72.                     messages.push_back(texts[jj]);
    $ X5 ~5 D$ g. `: {5 w
  73.                 }
      R* h3 e% O) {/ C3 A+ u% d0 w
  74.             }
    ! W. k- H( k  H2 t/ X3 `, I
  75.             // NXMessageBox works as of NX5
    5 s, e$ B8 h4 v+ W& c
  76.             mb->Show("Selected Notes", NXMessageBox::DialogTypeInformation, messages);* g6 P' T6 z& \# g
  77.             // otherwise simply write to the listing window% l  n$ q, Q2 H% @& F0 Q
  78.             // ListingWindow *lw = theSession->GetListingWindow();
    1 ^! Q9 S1 }* ^( I9 P+ ^' P3 g
  79.             // lw->Open();& A: u$ D, n! d) h
  80.             // for (unsigned int kk = 0; kk < messages.size(); kk++)9 N# E7 s5 O  d* b7 {* X
  81.             // {' N' i+ J8 y, V% \7 r/ n4 L
  82.             //  lw->WriteLine(messages[kk].getText());
    + E4 t4 c' k  h! \2 |
  83.             // }
    5 o. ^( J1 q, `
  84. 8 w* ]' Z* t  P  V  y# n0 L1 u
  85.         }
    / z# ?8 _8 x; s' Z
  86.     }
    ( F. y# s! _, R4 v

  87. 9 s) c. N$ f6 o$ w; H/ z* ]
  88.     /* Handle errors */
    5 F2 @- Y( A9 T; b7 K
  89.     caTCh ( const NXOpen::NXException& ex )
    4 X/ i: B" I6 \
  90.     {2 f8 V5 ]" f8 L% d
  91.         // NXMessageBox works as of NX5: g5 v/ S# Y4 b* A2 G- A) V# B
  92.         UI::GetUI()->NXMessageBox()->Show("Error", NXMessageBox::DialogTypeInformation, ex.Message());
    & F# D( ~4 n) A& K" c7 O1 S+ z) o$ h
  93.         // Until NX4 simply write to the listing window6 ^. M* y5 c# f, B: ]
  94.         // theSession->GetListingWindow()->WriteLine(ex.GetMessage());. z: o6 K$ s1 S
  95.     }8 d1 P8 h6 K+ ~# T% p- l
  96. }
    % E0 o" h) b% y. Q: U5 a
  97. 0 a" z$ L3 D4 f4 O2 n8 g' q
  98. /*****************************************************************************1 a+ n3 P4 [; z  d6 |
  99. **  Utilities  @$ k% {$ D; e+ }7 T3 ]
  100. *****************************************************************************/) F- Z4 Q0 f8 d/ z5 y( C
  101. 1 U/ J$ e2 v5 D9 _1 ], W) T
  102. /* Unload Handler5 |9 `5 ~. E+ m9 ~9 z
  103. **    This function specifies when to unload your application from Unigraphics.2 o0 j7 A: `5 L
  104. **    If your application registers a callback (from a MenuScript item or a" o3 M) N, |7 Q" h& x
  105. **    User Defined Object for example), this function MUST return
    ) l7 s+ W+ h  w7 ~% B  ~* d4 r
  106. **    "UF_UNLOAD_UG_TERMINATE". */7 z: G4 y/ j0 a/ }
  107. extern "C" DllExport int ufusr_ask_unload(): J, u% `# s) |4 [2 l
  108. {
    ! o1 D5 m4 ~4 S
  109. return (int)NXOpen::Session::LibraryUnloadOptionImmediately;
    ; V4 T, A5 E3 N; @8 y0 `
  110. }
    + k. D# i/ k- I$ P6 Z7 m/ Z

  111. 0 q/ z5 f7 M! T* }
复制代码

7 R! {* B7 e0 \; c) n' s3 W1 ?" i- ]0 \- 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二次开发专题模块培训报名开始啦

    我知道了