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二次开发源码分享:NX10可以直接对资源条进行二次开发

  [复制链接]

2016-3-8 12:00:27 21592 42

admin 发表于 2015-3-27 11:17:17 |阅读模式

admin 楼主

2015-3-27 11:17:17

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

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

x

- N+ A& U1 p6 e

, K& U! }8 k3 y! g3 x- C% }% t
6 t( \  F2 V1 {1 g5 n
  }, G$ ^1 X! s' V0 k# B8 n4 e" v
NX二次开发源码分享:NX10可以直接对资源条进行二次开发  k, j  q6 A4 y1 Q4 V8 N2 h/ O
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。& T9 k/ y" F8 r- T
% ]- |7 f( a* W* g( y6 @/ a1 w5 J7 p
// Mandatory UF Includes* J- |6 g( P  b3 Q4 S! F
#include <uf.h>
3 {% d$ g! y" E# {6 r: y0 p! B" v, v. x. s; ?$ y( D5 m  ~
// NXOpen Includes
$ B; T" {! D. \#include <NXOpen/Assemblies_Component.hxx>
$ A) R# Z" y  I$ B/ N# o#include <NXOpen/Assemblies_ComponentAssembly.hxx>
+ X8 m7 A. D. H' {( c5 Y#include <NXOpen/ListingWindow.hxx># o/ U+ x7 P7 x* m& X4 s
#include <NXOpen/LogFile.hxx>
" h7 Q4 g9 B( i" C4 N4 \) j3 }#include <NXOpen/NXMessageBox.hxx>+ L! {3 ~; k; y# M5 J6 |
#include <NXOpen/NXException.hxx>
# u( I( A* W9 t* ]0 D#include <NXOpen/NXObject.hxx>" Q) j% h$ q  ^
#include <NXOpen/Part.hxx>
( d. O: K% N; V. ]#include <NXOpen/ParTCollection.hxx>- S8 E. m$ z& o4 k! ^. s- a1 c
#include <NXOpen/ResourceBarManager.hxx>% _8 G4 d3 J7 O. N# n
#include <NXOpen/Session.hxx>
% z' ]+ h/ H3 q* H0 m, X# ?8 {' r5 Q#include <NXOpen/UI.hxx>
+ b% ?; Q1 c+ n1 w* }using namespace NXOpen;5 m* i+ X9 J6 P% @2 K1 V' F% n
using namespace NXOpen::Assemblies;
4 F! y5 y3 F) D8 z! D( i$ A
9 S5 F8 \( s8 s. k. g5 Z' l* p// Std C++ Includes* |' h, \4 D1 d7 d7 F9 P
#include <iostream>
. s2 {& }* I0 T- ^0 h#include <sstream>
- g" I7 M8 ]7 o2 ~1 _#include <map>' W: E  v3 j- y* T  a# |  L# ^
using std::exception;8 F- g8 p1 ^  U3 P. D# o
using std::endl;
" R6 C: L5 y8 Cusing std::cout;
' Y* O2 q& P: `5 J% A. z6 w/ R8 Rusing std::cerr;
- G, I& |( [6 L7 v; |% u. @
; L3 k* y3 V- _) _// MFC Includes
) t4 l, w; i. O1 j0 {# H1 t#define _WIN32_WINNT 0x06010000 : M7 Z4 U3 h8 Z
#include <afxwin.h>9 q9 B: R, j0 U/ `6 D/ {9 }
#include <afxcmn.h>. w3 e9 w0 S. i9 T
8 q5 Z, @7 X9 a' p9 U1 C
#define IDC_TREE1   1002( i) P' Q* P. ~7 V; z

& C! Q! O' J1 b, q/ z//------------------------------------------------------------------------------3 j3 z- m4 c1 d! @8 Y
// NXOpen C++ class
, s* |( _* x+ e8 d8 z//------------------------------------------------------------------------------
( m6 d9 q  I5 ~+ Zclass MyClass& k0 Y+ Z- t/ _6 \# ]3 P
{
/ {8 N! u1 f# r// class members0 c. d" x2 k! v2 ~2 F& |
public:
& a) L2 A2 [- n* P: Y    static Session *theSession;# n. C2 W! Z6 A( @% K
    static UI *theUI;& e- t: q! W' Y6 V, P
    static int m_tab;% g8 ~2 |2 V. `
    static int m_cbID[2];& R8 b6 h6 K0 e  C/ T

2 c0 d, z* [7 Q& Q; ]$ i3 \    MyClass();
8 \0 L1 j) `" r" o    ~MyClass();
6 Y8 o+ v/ q2 s. v0 J* u2 B( H5 ~, N* A
    void print(const NXString &);
8 U3 [3 H( `/ L/ c  c# k! V. O    void log(const NXString &);
4 h; X: b3 y* E$ o    void getAttributes(Component *, HTREEITEM);
7 b1 P; J3 R5 `    void getComponents(Component *, HTREEITEM);" ]$ Q. T) G; E: r) l% Q+ C( K
    int ActivationHandler1(int tab_id);) I1 Z% {" S8 W( I( O' V# k
    void Clear();" Q: U7 e5 L6 ]
    void Populate(BasePart*);) a6 p! b6 {1 H7 i
    void cbPartOpened(BasePart*);( u5 k1 j3 E* u) B
    void cbPartClosed(BasePart*);9 d9 L. v1 M7 J* p6 r7 }
9 h& j6 s* z+ R. n
private:1 t" {& w2 \' ]: u: P
    Part *workPart, *displayPart;7 P# W) @2 K$ ~# }; [7 o
    NXMessageBox *mb;
& b" R; u: M5 i    ListingWindow *listW;
( e2 ^5 Q$ Q4 Q5 `+ [$ M0 M    LogFile *logF;0 e# E, u6 r4 a' V% i: K
    CTreeCtrl *m_tree;
' f  i$ ?4 [) k$ O8 T3 n    CImageList m_Images;7 v  _# Y: j- ^" C. k+ }: \
};: S8 a# g& ^* Q% S

" w; g. b5 E( k* J8 W//------------------------------------------------------------------------------/ q7 Y! z4 N8 t( L
// Initialize static variables( |; P2 `) p( g! W! S
//------------------------------------------------------------------------------/ @8 }( O; b, `, g* \: W
Session *(MyClass::theSession) = nullptr;
3 u( G+ ~: e" V% F9 w' wUI *(MyClass::theUI) = nullptr;
) j! C% U0 v: Nint MyClass::m_tab = 0;
9 c) T7 Z2 D: c( \- T, j' I. T2 r8 xint MyClass::m_cbID[2] = {0,0};0 Y1 ~1 V/ H" E, T
7 y3 ]. G6 e( b7 S6 `
MyClass *theApp = nullptr;$ @! Y3 K8 V& \) @# s/ ~/ x
+ K& w' }9 e( b8 M) m9 o1 G
//------------------------------------------------------------------------------' ^5 S, P: X* Z4 `
// Constructor . L4 G) t' ~5 M- z3 U9 ]! Q
//------------------------------------------------------------------------------3 r4 }% O5 Q+ b
MyClass::MyClass()7 S  {2 ], b) f5 E. m
{2 S! G3 q5 ?8 ^  b$ p
    logF->WriteLine("GTAC: MyClass Constructor");/ ^1 ^7 l# d7 U, E# q3 P5 F
    theSession = NXOpen::Session::GetSession();
  @( E/ U5 ~: V  D! F0 a$ {    theUI = UI::GetUI();
7 f$ D/ Z. g) O    mb = theUI->NXMessageBox();
4 j& W' A4 v. p4 z8 U    listW = theSession->ListingWindow();
/ n' \) h3 I: i# [3 W/ P1 i9 R" _    logF = theSession->LogFile();
8 `5 A# a- b/ H
1 L! r/ G: ~% V: ~  J, Q- M$ Y    workPart = theSession->;Parts()->Work();4 ^7 F& p; B; P3 e% v6 _- [$ e4 F
    displayPart = theSession->;Parts()->Display();
: v) b9 Y4 Q. c% n* b6 O% @
& X! D+ ], l% h8 G, |* L2 S; v    m_tree = new CTreeCtrl();7 t2 U1 f& X- `) r. [$ S& q

) g4 \, F- T  y/ b3 `. e* e: ?    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
4 M- O5 E7 O% S8 F" j    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
4 h1 A: V% v* r    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );' k6 x  D# J8 p# D) e- o9 I
8 S- b( ]# Z3 a! a1 H- V
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");, w0 g! g( u# o8 @4 D/ S- y! V1 t
    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
/ w' b2 z* m, K. p2 J  L$ P        make_callback(this, &MyClass::ActivationHandler1));4 |2 \3 l! \( d" h9 O7 W
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
. G9 x7 H" o2 T, F- V7 }; g# h) y( T5 ~  D! X6 v3 z& p! @
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));1 X; H- n( m% N/ w" B
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
! V) m0 d0 j" _: D! J% ?}
9 \" W8 k  X5 _+ }% g/ R
9 ]# z) u" I0 k: g# y/ N- ^//------------------------------------------------------------------------------
: S' _( T/ M: T4 r- a+ E( O9 i. I// Destructor
( X- b* R' u1 q) Y6 _//------------------------------------------------------------------------------
: ]2 o5 P% A& ~5 x  P( Y5 V+ B# lMyClass::~MyClass()1 c8 N& N4 s; B$ Q  B
{6 j( ]9 M( c9 p& W: o
    logF->WriteLine("GTAC: MyClass Destructor");* d" u+ _8 [0 y$ |  [" Z- w, e  r
    if( m_tree->GetSafeHwnd() )
' y6 G1 M5 j5 L% Z  n+ P    {
/ Y  ?3 Z; P$ @: k! ^" k        BOOL bSuccess = m_tree->DestroyWindow();* N0 r) A  K1 j- N( b2 W) x
    }* y" C4 }- b# r) |2 ^& {5 |
2 H% T* @, T! d; H  ^
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
. C% i3 {+ O1 w7 o& j4 v    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);  x1 ^$ y" v& j$ g8 L- W) X
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
- }  E9 [9 ~, p8 y9 z* f' p) M3 ~+ p/ \
}
# u( ~* A8 f; r; V  r9 q8 h* }
) y+ w. i' Q  P0 K8 a- W1 c7 a//------------------------------------------------------------------------------. m; C) {6 v8 i/ H9 s6 e
// Print string to listing window and/or syslog1 l$ v$ m! L+ I+ u  F! \
//------------------------------------------------------------------------------
+ L% e5 A( e6 }void MyClass::print(const NXString &msg)! ~2 X# T) \/ Z" N. Q' {
{
# A8 S7 x+ S$ w; T( j5 X; D& h5 h    if(! listW->IsOpen() ) listW->Open();& {+ J8 K- T* E3 O* }/ H, B. E2 F
    listW->WriteLine(msg);* _5 D2 w, ^' R' M$ h1 H
}
6 M7 ~/ n# [; l7 O3 M) Y8 Xvoid MyClass::log(const NXString &msg). R- f) u3 c# Z0 a
{5 A; n5 x& p& ]+ B/ U# w) @' p
    logF->WriteLine(msg);7 `) G- i! c. `& L4 E! k! A
}8 F& A, Y* _. }/ K& L. S) n. V

& \, l, k( @# S; d, a0 ^+ N// Callback triggered when opening resource bar tab  i3 E$ t/ w! J+ D) j" c) W4 F
int MyClass::ActivationHandler1(int tab_id)
& v, I/ `! b2 {$ t4 f! }! _9 L{- }* R8 Z0 q0 J; D2 }& H
    // Get the WindowHandle object
$ M  o3 _  [; N" t/ k    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
+ l5 _9 w, U! L- ~/ h6 v    // Get the real handle
' e; S, n; ~7 H6 X$ G; U2 L8 h( n    HWND parent_handle = (HWND)window_handle->GetHandle();
- E* z1 r: _) w3 S2 z. Z8 \5 w    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
% e+ v' N: `0 D% t: s. B! l    CWnd *wParent1 = CWnd::FromHandle(parent_handle);+ s. V6 k& K; Z% L' o
    ASSERT(wParent1);3 r1 ]/ ]+ r5 ^% |" w

' ^: h& g) Z: I    // Switch module state to avoid Assertion from afxCurrentInstanceHandle' @# V+ T( l0 z7 X+ C& A$ Z: a3 Z
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
( L. Z  f( n8 V, U
& }( v% E$ j+ r; d- O# w    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, ( L1 }4 T- V3 j$ o, |+ [0 k' M
        CRect(10,50,510,1810), wParent1, IDC_TREE1);8 O, j" M% B; V6 M4 B" `8 Y
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);/ w7 P& K4 [. p4 M) \* }) Z
$ O1 f* R" D9 T! \
    Populate(displayPart);
7 c6 U6 F0 e1 Y- E! ]; _& Z4 t( [/ P  Z) G, V2 r
    return 0;
& i3 E  c% z: K}
. L0 s1 O0 j3 H% |1 E' F5 O$ v) x8 V# f: U" Z
//------------------------------------------------------------------------------8 P7 e, {# a* r' O1 ?+ w/ s
// getAttributes
! ~9 z4 a" o' X+ Y5 o/ [& P) J  c/ F//------------------------------------------------------------------------------
1 `& Q& P+ A, i1 ~9 c
游客,如果您要查看本帖隐藏内容请回复

; x) T8 s! {9 p! B3 ?, q- Y: z  t5 M" B
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复42

airleng 发表于 2015-3-28 08:52:40

airleng 沙发

2015-3-28 08:52:40

二次开发完全不会啊
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

ll_109 发表于 2015-3-30 11:24:29

ll_109 板凳

2015-3-30 11:24:29

我想看看,进来
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

humanster 发表于 2015-5-24 12:02:04

humanster 5#

2015-5-24 12:02:04

看看,这个好像很牛的样子!
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

smthan 发表于 2015-7-26 01:33:35

smthan 6#

2015-7-26 01:33:35

谢谢高手的分享哈
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

503627752 发表于 2015-8-12 14:24:53

503627752 7#

2015-8-12 14:24:53

学习学习学习
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

ke111026 发表于 2015-9-15 21:49:29

ke111026 8#

2015-9-15 21:49:29

ddddddddddddddddddd
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

283925513 发表于 2016-3-8 12:00:27

283925513 10#

2016-3-8 12:00:27

卡看看 阿发撒旦法撒旦法
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了