PLM之家PLMHome-工业软件践行者

[二次开发源码] NX二次开发源码分享:NX10可以直接对资源条进行二次开发

  [复制链接]

2016-3-8 12:00:27 23392 44

2471

主题

1276

回帖

8万

积分

管理员

PLM之家站长

积分
82197
QQ
发表于 2015-3-27 11:17:17 | 显示全部楼层 |阅读模式

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

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

x
. L4 z% Q: A* R

# `( i  V& u8 j7 K0 U8 X7 h! |0 V
# E0 K1 a  w2 I) L
NX二次开发源码分享:NX10可以直接对资源条进行二次开发
8 Y$ ^& r' g& l/ X# y, L这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。- w# U# W3 h" E: c$ ?2 h& }

) d4 s/ ^; a3 Z2 ?' s1 A1 r// Mandatory UF Includes
" C% B* T- H5 f$ u  c#include <uf.h>
. M8 D4 X8 e9 s4 o5 g
& z2 R" X* A: s5 j% |. X4 o// NXOpen Includes
$ n5 t7 H4 P( h, C+ h7 w% h5 t#include <NXOpen/Assemblies_Component.hxx>$ G0 h/ J/ Q# t  y/ o  S
#include <NXOpen/Assemblies_ComponentAssembly.hxx>. N/ r/ @, v( Y+ a6 W/ d
#include <NXOpen/ListingWindow.hxx>' v* V+ J$ i8 S& B9 T' ?' s
#include <NXOpen/LogFile.hxx>
2 I0 w  A) i5 @; d' h#include <NXOpen/NXMessageBox.hxx>
* K3 c( t# \( W& ~1 F, N#include <NXOpen/NXException.hxx>
' z2 g( ~1 u: x. p" l8 b: i#include <NXOpen/NXObject.hxx>
2 c9 b2 d1 z0 a( d( E) {1 h; C" G#include <NXOpen/Part.hxx>
7 _) f! A6 S, [6 s9 A  l8 w7 X#include <NXOpen/ParTCollection.hxx>, K# g! {" E' X
#include <NXOpen/ResourceBarManager.hxx>2 I/ |% R$ H& I6 u% K9 @0 R: s( Y. \
#include <NXOpen/Session.hxx>
) k0 A1 }1 o) D; h7 S% j5 B#include <NXOpen/UI.hxx>
+ C& I, x4 I$ |% C* j& tusing namespace NXOpen;
% D+ w3 \8 f) qusing namespace NXOpen::Assemblies;" [/ V$ e0 h' u" \( a
9 E6 P$ \' d) v
// Std C++ Includes
  k6 I8 I# a. p#include <iostream>, q  ^" {4 v& q: V" m8 p
#include <sstream>) v% q2 k+ K" u6 J  X2 e- _
#include <map>9 w# H0 q' b& h/ V% h
using std::exception;9 K' B" \/ N! S5 i# u- a3 E7 L
using std::endl;. b# X+ g  |  P, @" B* @) b5 d
using std::cout;
- R+ S4 K% i1 s3 r' Busing std::cerr;
) g5 H$ t( Z+ F3 E
. R  Y2 N4 |" ]9 t& }$ Z9 Q& b// MFC Includes% ], @6 ^2 ?/ M6 F4 |% L% `( Y8 X
#define _WIN32_WINNT 0x06010000 & }% v: X  ?  i5 t
#include <afxwin.h>8 X# [) n5 j9 W/ O6 `. d
#include <afxcmn.h>0 T3 B! w* h0 _8 W% H, L1 i8 K
1 g  q, M- R) u3 Q' C: b$ w# ^6 |
#define IDC_TREE1   1002" s6 J& H& d. w, ?+ F

: J' b9 I7 B3 X1 j" @2 t//------------------------------------------------------------------------------* D  |% ]  a6 p7 ?- @
// NXOpen C++ class 9 J1 N; \8 T7 I0 M( O. T% v
//------------------------------------------------------------------------------
" }( q" O1 u0 M; ^7 Xclass MyClass
6 [: X, X9 h- s! u{% V$ L( f# ~9 t# D( M! j
// class members9 i% A  _/ z; \1 o% c4 c4 S5 _
public:1 |* m4 ~2 J- z" x5 w& j& G7 e
    static Session *theSession;, y8 p! Z# \- V. Y: V4 A
    static UI *theUI;
; m. K, I& g5 P( T7 X    static int m_tab;! ?1 n: r- p/ d7 K- _
    static int m_cbID[2];
( _* N- S# }, O; J5 C" m3 {' t1 `& G. M" }: e; s! t, V3 K" M( F
    MyClass();4 Q4 M! f3 E2 C) ~: g/ u
    ~MyClass();
5 Y' {: Y( I$ U. x! [+ V0 s+ X
8 k+ J2 [  G5 c& q: _( z8 b    void print(const NXString &);: L& J" W, ~0 ^! a
    void log(const NXString &);2 P- m) R3 y) f( }0 w
    void getAttributes(Component *, HTREEITEM);
, U" r1 ]: [* L, m- `/ Z* q    void getComponents(Component *, HTREEITEM);
$ |/ N4 f$ h" X8 ~- T    int ActivationHandler1(int tab_id);
# J, R: e  l  |' J& N- A    void Clear();1 f! `: _+ i% z7 I
    void Populate(BasePart*);& B+ U' s1 {5 E) @4 Q$ u; r7 u
    void cbPartOpened(BasePart*);8 m! j! J6 I* [8 W
    void cbPartClosed(BasePart*);
" l' V- Z4 H& ]7 Y2 R
0 ?5 b8 e9 A/ w$ d+ A# Sprivate:
5 q1 C6 l. b; B) P+ p* O/ Z2 o$ ^    Part *workPart, *displayPart;: P0 a: b; D7 k$ K, p
    NXMessageBox *mb;: z& G7 [9 Y* C9 O( k; {  }9 p. b/ x
    ListingWindow *listW;& R7 Y- t( c, z( M/ X3 m8 Q' z
    LogFile *logF;
  K( {  Q' C8 H8 [3 ?    CTreeCtrl *m_tree;
$ r$ `7 |& l" Z% Y& z3 K    CImageList m_Images;
! K# h4 [3 Y# k* U& P5 ^: H};
- E6 t0 I0 F( p8 Z3 Y# _" `+ T! r& e. w6 `0 i& m
//------------------------------------------------------------------------------
3 ?. F6 l# }3 ~( R  a// Initialize static variables
* W8 ^5 z* d- q$ d+ |% T5 T$ N) j//------------------------------------------------------------------------------; c" Z& P( H5 O' e5 o( `9 `
Session *(MyClass::theSession) = nullptr;9 |1 Y9 P$ _9 u/ S
UI *(MyClass::theUI) = nullptr;) D: g, d" i# ?+ R$ f% K" x" W6 R
int MyClass::m_tab = 0;5 t6 x+ N: O. h+ J
int MyClass::m_cbID[2] = {0,0};
$ `' V& A8 N' B* r9 `! t3 ^; e8 D. l+ ^( v$ y" ~
MyClass *theApp = nullptr;. H7 ]0 X  b, V! M5 R
2 n- @9 W! [3 N
//------------------------------------------------------------------------------
6 }9 U% L9 o0 `// Constructor
9 O3 N5 @0 h. Z: h: _; z( s//------------------------------------------------------------------------------5 C8 K% q8 ?: V  m, E: Y
MyClass::MyClass()' j8 C6 z* U3 ?1 E  x! c
{
8 v4 _5 T) E9 m$ v' s. {2 e! ~    logF->WriteLine("GTAC: MyClass Constructor");
7 d; X" k0 ^4 S. l4 L    theSession = NXOpen::Session::GetSession();
- \7 Y0 w1 b+ L3 k& c    theUI = UI::GetUI();: T) X+ r( U( x; G+ n1 B- _
    mb = theUI->NXMessageBox();
* A. v7 t( A/ h$ T9 q" q! ~5 ?& A+ ]    listW = theSession->ListingWindow();6 B5 h3 D3 D0 |3 Z( H' [
    logF = theSession->LogFile();9 f7 n, I: b2 g5 e% G/ W' c, m9 S
4 L, d6 t9 i" n3 X
    workPart = theSession->;Parts()->Work();
0 O* A  v& y: b6 q    displayPart = theSession->;Parts()->Display();
4 n( A2 L/ A: d  L0 A6 k' a' p2 V* w, r2 Z# u
    m_tree = new CTreeCtrl();# c3 J7 P* e  K0 y

' z9 m; Z% m4 q4 y7 i  N2 M    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
. v6 U; C' l8 u# l& J8 |, q# d    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
% x2 [$ I& d6 Q' o8 ?    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
8 ~! j. Z, ]- j6 t% R, W& A! Z4 }
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
7 R6 ~. O6 ~" O* `    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, 9 G$ X. k! Z5 Y/ B! o9 {7 B
        make_callback(this, &MyClass::ActivationHandler1));" ^! e2 N1 s2 _2 R/ G
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
/ m" C& {4 L5 p. G0 G
4 E9 H" G- K. E    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
! `$ [1 _7 d/ S    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
9 S6 T( ]- s% I$ }9 G! @. }}
" {) v  n8 K+ m' j5 o2 Y5 `( d' S0 W4 X- i/ W
//------------------------------------------------------------------------------
0 `- D5 G8 g7 L' A. r+ D// Destructor
! D5 ?. M: `; i, @: t* ~//------------------------------------------------------------------------------
, B9 o2 _% s* G: [0 CMyClass::~MyClass(). F4 f9 e- R: T# `/ d
{6 r* T( h+ j4 c! f2 I* p0 Z/ l
    logF->WriteLine("GTAC: MyClass Destructor");' X* w) {7 \" ~* H6 H
    if( m_tree->GetSafeHwnd() )! `- l3 |8 t+ S: n
    {
, d3 _' I5 A1 \7 w  U        BOOL bSuccess = m_tree->DestroyWindow();
& _$ |- R% P5 X0 i9 B& a    }
& ^* d9 v; Z  X
2 }- L0 G1 {) e! e. Z    theUI->ResourceBarManager()->Destroy(theApp->m_tab);+ a2 T; r( L8 U/ J2 \
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
) P3 g* G0 O/ J% ~    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);& }$ s/ x& t0 C% F9 v5 @: B: A

, m' H# {7 m1 H& N}  C( B% K# ^# k, x5 n. m, R5 P7 ~! b
- y; H2 l* C! |5 [- j- N1 \) j1 ]
//------------------------------------------------------------------------------, S% b' K% E8 D8 p6 U2 T* d+ a. ~
// Print string to listing window and/or syslog- O1 d$ y% m- J6 ^- [
//------------------------------------------------------------------------------; j) T& N! l" }- {6 u+ F% d6 X
void MyClass::print(const NXString &msg)
3 @. e, \5 h+ D& n8 s{
1 r& h( K5 u3 x9 f% N1 S; G4 p    if(! listW->IsOpen() ) listW->Open();
7 }7 J1 b8 S) t    listW->WriteLine(msg);
( O! K  D/ z9 q  L, e; C! N- \5 H+ P2 n" l}& {8 s6 f) I# y! v% N7 ?4 F
void MyClass::log(const NXString &msg)
0 ^/ e! _% E1 n# r0 I{$ L  Q0 G: ]- Y- G- R
    logF->WriteLine(msg);
( |/ g/ ]5 r, v4 _}  V9 M+ Y% B/ z

. x0 p& ^9 z8 A! I6 j// Callback triggered when opening resource bar tab
3 a' e/ I% i* _4 k7 n4 oint MyClass::ActivationHandler1(int tab_id). l8 C; F: I  K' S+ _& q8 ?
{
0 K/ Q; I- E, p0 n( R- i    // Get the WindowHandle object9 b( N2 z2 W4 s
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
" K; M1 d" x6 ?, a    // Get the real handle8 O0 C" B0 J- P& S! ]5 }2 k- a4 a
    HWND parent_handle = (HWND)window_handle->GetHandle();1 w( [9 Z% x/ a2 l) l
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!" _" w# h# T+ x1 @
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);+ S0 n* f* j5 B; N/ `
    ASSERT(wParent1);
5 ]' p5 ]" k) a
3 ^: k9 ?8 y0 x& \5 ?" e    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
5 O$ X0 G8 [* z, ^' i    AFX_MANAGE_STATE(AfxGetStaticModuleState());9 O4 Y1 O5 W4 h; X+ r- M$ R

+ _7 R* Q& @( h1 f$ j' w, U* r1 [    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, : h. }& {3 w8 [
        CRect(10,50,510,1810), wParent1, IDC_TREE1);
' o7 U8 f9 G. ?' y    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
* d0 ?  Q' C) a# W4 `" V' y; j  u8 T% x# M, W
    Populate(displayPart);0 z+ D% M, X% @; P
0 X4 i$ Y: `3 m5 }& u, Q
    return 0;
8 J" d- G4 T5 r- \  J% [1 O/ j}6 x  g& ?: h' s( i5 w

9 b! |' U8 \* Y+ c5 ?; u//------------------------------------------------------------------------------
* b4 H8 `+ z# J  W5 D* A  ^4 N6 O// getAttributes
. e$ H: h" Z0 w! [4 t6 E//------------------------------------------------------------------------------1 i" v1 h/ \# G$ A. c
游客,如果您要查看本帖隐藏内容请回复

1 [" e, J+ [. h& I& u
4 m9 `' B4 Y% p% u
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复44

0

主题

4

回帖

20

积分

新手上路

积分
20
发表于 2015-3-28 08:52:40 | 显示全部楼层
二次开发完全不会啊
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

28

主题

60

回帖

530

积分

超级版主

积分
530
发表于 2015-3-30 11:24:29 | 显示全部楼层
我想看看,进来
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

2

主题

34

回帖

505

积分

高级会员

积分
505
发表于 2015-5-24 12:02:04 | 显示全部楼层
看看,这个好像很牛的样子!
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

3

主题

53

回帖

551

积分

高级会员

积分
551
发表于 2015-7-26 01:33:35 | 显示全部楼层
谢谢高手的分享哈
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

3

主题

34

回帖

203

积分

中级会员

积分
203
发表于 2015-8-12 14:24:53 | 显示全部楼层
学习学习学习
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

0

主题

31

回帖

409

积分

中级会员

积分
409
发表于 2015-9-15 21:49:29 | 显示全部楼层
ddddddddddddddddddd
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

0

主题

28

回帖

152

积分

注册会员

积分
152
发表于 2016-3-8 12:00:27 | 显示全部楼层
卡看看 阿发撒旦法撒旦法
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了