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

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

  [复制链接]

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

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

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

x
3 e# E: l2 W$ e* J; Z: E+ f/ v
1 y% ?7 P8 M  k/ P- f  l
7 G. s( X, m/ d
3 H  `( {7 @6 O( K: V1 w4 ~0 u+ K. t
NX二次开发源码分享:NX10可以直接对资源条进行二次开发
  p3 t) k4 M9 x$ T' K1 O这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。6 u( c! L) G% [
2 N$ d+ |; Q# w
// Mandatory UF Includes1 i- N0 T2 J+ g0 W* q
#include <uf.h>& z1 N" U9 C, A

7 Q: e+ A. v3 P: n+ X& {6 `$ P: x// NXOpen Includes
7 K1 _) X; C6 B' G) C# Z#include <NXOpen/Assemblies_Component.hxx>
0 p0 k$ P9 w* t) p#include <NXOpen/Assemblies_ComponentAssembly.hxx>
: c- V- X7 f+ q& S# }" q#include <NXOpen/ListingWindow.hxx>$ m8 L2 Z9 J* I% x8 T- o0 D+ s
#include <NXOpen/LogFile.hxx>, S% L0 b  Q2 q/ @+ b, Q1 _
#include <NXOpen/NXMessageBox.hxx>
/ a, e7 ]$ G  b$ C5 B#include <NXOpen/NXException.hxx>
5 J4 Z) W$ I1 {7 p6 c. U$ z#include <NXOpen/NXObject.hxx>
8 _) w0 k) U& |( c) i& s4 M/ n#include <NXOpen/Part.hxx>
. ^5 G) u: R% c5 w) Q7 @#include <NXOpen/ParTCollection.hxx>
* o# D  a3 T) c' F! u5 Q. F#include <NXOpen/ResourceBarManager.hxx>% `1 K1 v( y3 ?, j5 @1 i/ m! \
#include <NXOpen/Session.hxx>6 i& ^- ?; ?5 ?2 J+ [( T7 g& A$ R
#include <NXOpen/UI.hxx>
3 S: c: M7 t1 K+ vusing namespace NXOpen;
6 E% X* \- c2 e( b) pusing namespace NXOpen::Assemblies;
* I1 P( p! r2 f6 m) D% @% i6 K; I* g( _
// Std C++ Includes( O7 u  |2 N' f2 C. V
#include <iostream>" m* O8 A$ M* a7 x* ?! x
#include <sstream>
, n  i" N, S7 U. D/ T#include <map>
" m/ a# x' y" j4 o6 T" z+ nusing std::exception;7 a# N8 L' w2 S/ J
using std::endl;
  A5 i9 a: Q, \3 Q* xusing std::cout;
: B" c% I* ~+ ~& U6 a( y7 ^using std::cerr;
1 q2 b2 ~2 R. F( Z8 A0 r1 z8 n, F6 m- o
// MFC Includes: R2 v4 k" m$ h3 Z  S
#define _WIN32_WINNT 0x06010000
0 x* g$ s) f0 o9 ?& Y  M#include <afxwin.h>- o' Z/ p" o: Z* q- U
#include <afxcmn.h>
1 U5 `2 p; z' O& V) P& a% N  c; K& I6 n: p9 t  K' u
#define IDC_TREE1   10022 S6 b9 J3 q! k* ?
1 X% V/ B# F* D& x6 c9 [
//------------------------------------------------------------------------------% l6 Z) H: C) _% {3 n
// NXOpen C++ class . t' U* F) ~, E& C
//------------------------------------------------------------------------------  D" Z% V  ^  O8 ]/ o) ~& }
class MyClass  L" G* S6 I7 F+ X7 e
{0 y6 d3 T: j' E
// class members$ w. ]$ g2 C7 l  i
public:
& p- ]% F( E. ~. F2 f    static Session *theSession;3 ^2 D* Z8 H' a
    static UI *theUI;
% ~& j* |0 }2 X1 u; L3 S    static int m_tab;7 H" S3 g7 a. Q. f- Y) i
    static int m_cbID[2];
1 J! t. t4 W# b; G2 x
. Z( N0 u; {5 A. T  j! ]    MyClass();% N* `3 v8 L- s( _, w8 Z( a0 J
    ~MyClass();
3 m1 G8 v# I0 W" `/ w/ |+ c9 i) Y* a1 [! d+ j; ], S2 A1 D
    void print(const NXString &);
# n2 [3 X8 T  a3 N: k3 [: Y2 I5 d    void log(const NXString &);2 _1 S- Q& O: [; e: d
    void getAttributes(Component *, HTREEITEM);* f0 N: @' c$ @. D
    void getComponents(Component *, HTREEITEM);
5 }; t! o2 [$ C* d    int ActivationHandler1(int tab_id);5 k" W$ c" E3 P7 q3 Q
    void Clear();
5 L2 i5 M/ t: ?, ?    void Populate(BasePart*);
, a: s" Z2 }0 K+ y1 m- P8 x* }( d    void cbPartOpened(BasePart*);
) t( Z4 _3 o7 D5 [7 K    void cbPartClosed(BasePart*);. u5 W7 G# C( L3 a/ A& H
+ N# @5 u; X. c3 r6 J: i! C6 O7 K
private:( }$ b) `5 L5 I+ U+ }0 P5 {
    Part *workPart, *displayPart;5 `# Q- _$ ?" y# A9 C
    NXMessageBox *mb;
* d! p; W6 Z# i3 q    ListingWindow *listW;  |5 J1 D2 n+ y6 Z: c0 @% D
    LogFile *logF;
( Z% @1 a6 O' ]- T. o& l/ _    CTreeCtrl *m_tree;
* t) A2 j1 n: t    CImageList m_Images;
/ A# ~7 I( G1 q& Q8 p4 m0 O};) i: N& h) h/ m+ T( s6 m

8 W0 F  Y/ t5 P9 q  v; r' F% N//------------------------------------------------------------------------------
0 W! X3 M0 a4 S// Initialize static variables) ^, R+ E  M( _
//------------------------------------------------------------------------------
3 q: z% ?( d) YSession *(MyClass::theSession) = nullptr;
8 |2 d- C  R8 x( tUI *(MyClass::theUI) = nullptr;
- r5 {7 F# i8 v; Zint MyClass::m_tab = 0;
; R2 d6 D( C, v$ xint MyClass::m_cbID[2] = {0,0};
. v0 M% c* {( c
- j! x) R7 F/ `( }5 t4 _% SMyClass *theApp = nullptr;
1 P: S) g  k* X% [' v/ d# P! Y- w
3 y% x+ `7 z& W; e: D' E- u//------------------------------------------------------------------------------# ]' ~9 b9 [2 X
// Constructor
$ w, H9 I4 D" s6 W6 X//------------------------------------------------------------------------------( d+ v+ v* a( e' w: D
MyClass::MyClass()9 _9 \1 }) N+ R
{5 R- g. k8 I1 B3 f
    logF->WriteLine("GTAC: MyClass Constructor");
" V9 g3 p0 a6 D- g    theSession = NXOpen::Session::GetSession();
+ M% o: o6 J+ T6 T/ t+ j    theUI = UI::GetUI();# g5 X7 B  `- I# ]. L$ A$ G! B& @
    mb = theUI->NXMessageBox();
) H, ?/ B8 K1 r" c  \$ z    listW = theSession->ListingWindow();
! b0 Q7 |$ b+ S* Q    logF = theSession->LogFile();
( A! D0 p  `9 ^* E4 ^) V- U& Z+ ^! L8 y' A
    workPart = theSession->;Parts()->Work();" P. A1 O+ q/ D9 @5 F
    displayPart = theSession->;Parts()->Display();# B* F' ]8 \# n; k3 W8 T* V1 |
5 A, q' G+ v& Z2 `' T1 W$ `
    m_tree = new CTreeCtrl();- P% B3 b  T2 o; v
$ H3 A+ k6 s- w3 @# r; N' q
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
' y$ r( J9 M# w' b8 A! W' l    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );" B2 {# e, a! h4 z! k
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
& B  c' @, y, b5 [6 x' ?' F2 [# [7 d9 E( ]0 j- Z
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
3 B7 G9 r  k& Y9 I" x    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
% U; o  d" X) ~' S9 p8 W        make_callback(this, &MyClass::ActivationHandler1));8 `& m( S" K3 `# B0 C9 W
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);0 b6 \+ }) [4 m! U6 G; _2 ?
2 l. i7 x7 l9 g$ Z" i
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
; e8 l7 E. W5 T: E7 b4 _    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
0 D3 C; A( D# [4 e! G}
+ Q# N9 w! `2 {6 G6 G
1 u0 G" n2 ]' G9 ?//------------------------------------------------------------------------------
# F9 f- v3 E  j# G: T3 Q// Destructor  ]* d" E1 _& U% n' x
//------------------------------------------------------------------------------4 x8 H: G, q& U" t% G4 T0 s
MyClass::~MyClass()7 I3 m; y8 t2 X6 K# n
{3 S2 l( r- \% V# X) z. Z! [
    logF->WriteLine("GTAC: MyClass Destructor");: w* U% ^$ [: |$ ^, P+ t
    if( m_tree->GetSafeHwnd() )
0 @4 g1 T) v) x9 e  W! A4 G( r    {
$ v) h# B6 N' v: O% |( _        BOOL bSuccess = m_tree->DestroyWindow();$ P5 M1 ?! F; O( y. K
    }
; B9 W. ?; H* m+ S2 X1 B1 A7 j
3 \. r) R* F8 M; U- a+ Q3 b) U* h* `    theUI->ResourceBarManager()->Destroy(theApp->m_tab);  T+ Y4 s7 D! m8 q2 G) v* r
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
2 k1 \$ g" S. J( Y/ V    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);, B$ ^0 |0 b6 c( s
% L/ F  C! {+ Y0 r- A; B: Q& g
}
9 ~, ?8 z, {) R+ G7 M* n) a# g6 p! N, ?/ F6 C& G% f/ W
//------------------------------------------------------------------------------3 a+ c1 K( t# s! ?- D& _! }
// Print string to listing window and/or syslog9 x+ l: z) `/ n. C, H! I* V6 Z
//------------------------------------------------------------------------------
" s( c" {* n: Z& m" hvoid MyClass::print(const NXString &msg)
" v: h+ x; O# o{
  Y, L) E; y+ Q0 d    if(! listW->IsOpen() ) listW->Open();9 _3 d" O0 u+ f+ ?) r, v
    listW->WriteLine(msg);6 e+ ?3 [$ M! L4 `/ p
}. _: _9 s" l, |$ C3 I
void MyClass::log(const NXString &msg)
  B1 z( ~. \! o% U. r# T& ~3 X{% u$ [0 ]. U& H  u
    logF->WriteLine(msg);
6 H, b* y2 s6 L& b0 N}
4 P% N, [7 W3 ?( v  G5 e, u  k' A+ e! J9 N$ t$ g
// Callback triggered when opening resource bar tab+ t& V; l  F9 J1 o8 }
int MyClass::ActivationHandler1(int tab_id)3 Y7 Z$ Y9 ]: \9 T$ ~; I
{
3 H+ l3 O! o. |# _/ t* U0 O2 e! t$ {    // Get the WindowHandle object
2 e  j& l3 ?5 z) M    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
" M6 r  T( ]. T# S& ~    // Get the real handle
0 N) [& A  l, q- B- w    HWND parent_handle = (HWND)window_handle->GetHandle();
& g8 `" H5 ]9 _. \; T" g    // Get the CWnd object from HWND, FromHandlePermanent will return 0!. W! y3 [+ n" J
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);3 S2 Y1 r) ]: Y
    ASSERT(wParent1);* I8 C4 ~$ x* x8 v
! Q3 P0 [( x: O+ Y
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
+ O7 F+ R! a$ W* c( U# K1 Q    AFX_MANAGE_STATE(AfxGetStaticModuleState());
: v/ E; @/ o, @9 Z, N0 d
0 o3 I4 B5 X% `, K9 a7 H* ?+ H3 l    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
% w9 ]4 V2 Z4 \/ h( o& k! P        CRect(10,50,510,1810), wParent1, IDC_TREE1);
2 ^4 b6 d4 F# M2 g. V    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
: ?5 t. M5 i) o' j* v
0 E* `$ p9 Z! \) e. {" D    Populate(displayPart);9 z7 z  W- M9 I

# Y; Q  |0 X! f9 t    return 0;" O& w# ^2 y& b3 t! u" z: g8 Q; V/ ^
}
$ R7 p: J$ ^5 d1 w& d& p2 J0 K( c& v' o. ~
//------------------------------------------------------------------------------
; L+ ^# A- D/ K) ?4 X// getAttributes
7 g5 l7 ?) L" ^- Q//------------------------------------------------------------------------------3 y' r1 u0 k* G0 f
游客,如果您要查看本帖隐藏内容请回复

: Y9 ?- f! G0 ~" F% u' j' W
/ s* a1 D* t6 M. d) `( E
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复44

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二次开发专题模块培训报名开始啦

    我知道了