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

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

  [复制链接]

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

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

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

x
4 G8 F- ^7 _+ R: u

  ~5 b2 C+ C( k5 F" a0 t3 J: X" m/ A

% y# I: O/ ~8 @$ d% n$ eNX二次开发源码分享:NX10可以直接对资源条进行二次开发9 K& p: M8 J% i8 w5 O
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。  P; f3 F& p+ |5 \

( o3 k! j! n/ T0 c: z9 Z// Mandatory UF Includes
- s, D7 b$ H8 ]. Z! d9 r; G; M#include <uf.h>9 A. M! q' q& h" p
" g8 @: n5 {; _& J
// NXOpen Includes* M+ o4 [9 l4 A9 Q/ ]; U1 B
#include <NXOpen/Assemblies_Component.hxx>
0 l7 a5 Z4 R0 w+ z2 j#include <NXOpen/Assemblies_ComponentAssembly.hxx>
# C4 m; b+ ~) U#include <NXOpen/ListingWindow.hxx>( P; [9 g9 J- P) C% x' x
#include <NXOpen/LogFile.hxx>7 j* l5 i; y- L! n9 Z( `! q- G  o
#include <NXOpen/NXMessageBox.hxx>; Z/ b& M; C+ v- j. w1 ^2 `
#include <NXOpen/NXException.hxx>
7 Q1 v4 Z: F7 I! T. A6 X, C#include <NXOpen/NXObject.hxx>
8 Q2 b  q9 h: [1 @/ f#include <NXOpen/Part.hxx>8 E$ v4 H8 q* j& |7 W9 c- [* v; R
#include <NXOpen/ParTCollection.hxx>
" B6 \3 p- J) n; a6 p#include <NXOpen/ResourceBarManager.hxx>
7 L2 ~! ]2 ]; P) A#include <NXOpen/Session.hxx>1 d9 a4 f/ Z4 q" Y
#include <NXOpen/UI.hxx>1 o& M% U( I$ z2 D
using namespace NXOpen;
+ f7 r2 q. R  [' K4 H( @5 m$ s( Xusing namespace NXOpen::Assemblies;9 A7 l! _1 Z- E7 h2 }+ h1 C& Q
6 q. F2 g9 S. ~3 O' z. e2 x$ {
// Std C++ Includes
0 u" g/ [/ Z: E: R3 H3 a#include <iostream>/ e- S8 ?! H+ n5 f9 i- y
#include <sstream>
3 W1 G" U& K; W6 n& L) i( t( Y#include <map>! `4 n" V; Y# v+ K+ S0 `( x# w
using std::exception;, n: o' [/ Q# \" {% w9 t
using std::endl;
* q! ]7 s: `  G2 g6 ^( v" ausing std::cout;
; T! c# v9 x! S3 u" P, F% t0 [, Jusing std::cerr;/ x" @% I2 d7 {" K  M

! w0 ]4 v# S) v7 P/ r// MFC Includes
/ L5 i9 y- O9 I#define _WIN32_WINNT 0x06010000 & F, \* d/ x7 k2 r# Z
#include <afxwin.h>
  e6 P9 ?! T9 p#include <afxcmn.h>9 R# g# C1 e4 b2 O
! [( w3 X6 f8 [5 Z  L: D: `
#define IDC_TREE1   1002
' H' m& i5 L/ D$ ^+ h2 ~% X# }
//------------------------------------------------------------------------------
+ r; B1 @5 O  R9 n// NXOpen C++ class 2 f  a- M0 i& L9 e
//------------------------------------------------------------------------------
! y: t3 h& e* ^9 a0 X$ \( d+ d( fclass MyClass
3 O" @) L: p; I% B{7 E5 Y. z6 {1 T, [4 `  r
// class members
7 f2 b" w1 s/ n0 a" ypublic:5 m: k  \8 L9 k0 ?
    static Session *theSession;3 c: ~6 H6 _- [! T2 o' H
    static UI *theUI;' {& H! Q* |4 U" _4 s; y$ C
    static int m_tab;8 {# x: K# H7 z: d
    static int m_cbID[2];3 [0 X7 Z( D, T9 Q. D1 S& d( p
9 N( m  p3 V6 g$ L
    MyClass();
7 k# k& _! e6 N( r' R2 T* _    ~MyClass();
1 @8 t" T& W9 a7 B6 s2 D6 ^" W
, O# L9 N/ x) y0 F    void print(const NXString &);
+ p2 ]) c5 X( Y, B4 l    void log(const NXString &);
- ~1 V5 c( I- {8 S9 k& |, b    void getAttributes(Component *, HTREEITEM);
) m; C' Y5 |, ?9 [% w    void getComponents(Component *, HTREEITEM);6 A/ J8 V$ A! T- k2 O3 \/ P& e
    int ActivationHandler1(int tab_id);% {0 T: {, [& r2 `7 x+ f
    void Clear();
% Q. X$ A6 |7 s6 K5 K0 U    void Populate(BasePart*);" Y  Q7 l; m) X! K+ V. t& v
    void cbPartOpened(BasePart*);. C4 _8 K; l6 Z, n
    void cbPartClosed(BasePart*);% U" s. f% ^- b! j2 w

4 v1 ~9 d: A% ]6 K+ j2 u, @private:6 ^" I! i5 F% R# @' o  ?
    Part *workPart, *displayPart;+ i; a$ D7 H. r
    NXMessageBox *mb;4 Q1 U6 V2 _6 [. P
    ListingWindow *listW;9 j: j6 m3 ~6 {5 c
    LogFile *logF;( J! Z/ ?1 E8 R7 [
    CTreeCtrl *m_tree; & K4 o' k0 D- m
    CImageList m_Images;) @  S, V+ ]" N2 O$ p& Q' \; ]
};
) v  }3 B% \( N- |; @- ?( Z, n* U$ F: x" W6 _
//------------------------------------------------------------------------------
; }6 S9 s. ?* {1 r) e) Q( \5 m// Initialize static variables9 z3 V1 n- ]* V2 R/ @9 h
//------------------------------------------------------------------------------" Q" j" o( _1 T
Session *(MyClass::theSession) = nullptr;
; L8 o% }2 `+ {8 JUI *(MyClass::theUI) = nullptr;: \  C" j( L0 F/ L3 R- L2 t3 l2 U
int MyClass::m_tab = 0;! r& C7 e: D) _" s
int MyClass::m_cbID[2] = {0,0};
4 u2 G7 C- \, f8 f# r
) Q: @1 y; K7 g/ \  b* r6 y' iMyClass *theApp = nullptr;
+ g! v. }! d, u+ Q* K" L. k$ x% N( \$ c' g+ |0 B# v
//------------------------------------------------------------------------------0 k/ n9 V' |" M) b4 x% c4 p0 A
// Constructor 3 C& L: M! p8 }9 w; ^, r1 _* a! b
//------------------------------------------------------------------------------
# _( ^, A: w2 TMyClass::MyClass()" }( z+ Y" n1 G7 S9 O
{5 ^' n: z6 p+ u7 J. f$ `
    logF->WriteLine("GTAC: MyClass Constructor");
- X" r8 O" I" X5 q- E. |( X6 x# _    theSession = NXOpen::Session::GetSession();; ?: l0 _7 N( c2 h) T  R
    theUI = UI::GetUI();
& S- B0 s7 `1 V2 E# Q8 B: k+ j; D    mb = theUI->NXMessageBox();" U# ^" E% a; r
    listW = theSession->ListingWindow();
: `; T8 N9 p$ q  U' f7 m7 ~    logF = theSession->LogFile();
& G# a$ [5 ]+ x; y5 z3 z
6 v; o- j  {- V    workPart = theSession->;Parts()->Work();
" ~8 q' c* M. C7 N1 i    displayPart = theSession->;Parts()->Display();
( g8 @& e* S5 p, b
  y8 l3 f& [. j3 `% M    m_tree = new CTreeCtrl();+ T6 }! v2 u8 o- [

: h8 u; {3 ~& P& _. S( H, N    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);8 X  M0 L( ^8 |+ t
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );/ \( I$ p/ C8 h0 f
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );. G$ e% v4 \! c

6 n3 t9 T& h+ k" b7 j    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
% l7 P- g9 s9 b- Y8 L  ?9 g    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
" A+ C( w7 c& b4 S        make_callback(this, &MyClass::ActivationHandler1));
6 T+ B) R( x, X1 v* Z0 x    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);  N' F. r7 A- F

/ w; T# S% X0 G( _    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));* _4 o- d$ Y  U% b8 ~" n
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));0 C7 {3 Y2 ^" H$ S. j
}5 O. O, r% l0 I$ Y" U
/ U8 Y& _( D3 R$ n. O
//------------------------------------------------------------------------------
( f7 Y4 R. t$ J4 ^! f: C// Destructor  l9 q- L6 M# F- x0 v
//------------------------------------------------------------------------------1 L& ]" l! i* p% q% J, l+ m' b: c
MyClass::~MyClass()
3 n. K+ _9 l% d' [1 G{
/ H# t+ ~  U8 q0 d/ L- l    logF->WriteLine("GTAC: MyClass Destructor");
# \% q( E% u5 l' C0 m7 _: D( e  N    if( m_tree->GetSafeHwnd() )' ?. `; o# e6 F- c7 }
    {
9 p) y6 {6 f, q' c9 X- [        BOOL bSuccess = m_tree->DestroyWindow();+ w; L$ Z* X1 B( m0 `6 _: }# g
    }
$ p/ P8 Z! Q4 `! ]
3 f' A: _3 N& W; |2 M: O( q" j  D    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
  K9 C4 S0 \3 @1 f! |3 k, I    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
9 n, b" K- P' J; m0 O/ j    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
9 E$ f. W, g0 A+ H8 i3 X3 `3 z! n5 ^, f, R8 F: T1 Z& d" A
}+ O+ X1 k. x0 I% ^+ k) }* ^

7 G" y4 t' }3 C; T( G3 {+ ^//------------------------------------------------------------------------------
1 p# K4 ]$ H7 U7 B# b// Print string to listing window and/or syslog
6 Y! M- ~1 I3 n//------------------------------------------------------------------------------4 d# i6 n6 U) ~/ O+ @% {" A) o
void MyClass::print(const NXString &msg)9 ^" y. p, g' z! u1 L* a
{8 x6 O+ r9 f1 L1 v
    if(! listW->IsOpen() ) listW->Open();
; `. G2 j  f, q    listW->WriteLine(msg);9 j& |/ ?* o' z! D4 i+ j
}# D  R0 r- u5 y- i
void MyClass::log(const NXString &msg)
3 q& x2 _2 I+ W$ a$ j{! R3 g& o  `5 d) c1 x
    logF->WriteLine(msg);3 |9 d/ L# K! P4 _" H# w6 c
}
+ S, v$ c: n- @3 @4 p. f5 q) n& j6 z( E4 q6 z2 ~2 F
// Callback triggered when opening resource bar tab
( q( w, n. U% [. Aint MyClass::ActivationHandler1(int tab_id)1 k% H: E+ ^# I( T% S* y
{$ k* t, _7 j- a  T) E2 K- X8 Y
    // Get the WindowHandle object
$ v/ U6 o! B0 a. ^# a( v" F    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
  D; k: a. I" t% O0 H& U  g; \/ S0 C    // Get the real handle( y6 T  h+ a2 K* r
    HWND parent_handle = (HWND)window_handle->GetHandle();( `( E5 b) ?: ~' t* [; {
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
: r) Y3 h7 a: |& D    CWnd *wParent1 = CWnd::FromHandle(parent_handle);) V" o) F% `4 F6 }
    ASSERT(wParent1);$ E- o& s( ^9 }) i
/ f7 `9 h# i* f4 v$ M
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
" W  A$ q' Z. S) |1 n: L    AFX_MANAGE_STATE(AfxGetStaticModuleState());
3 \  ]- ~* v( I% t- @
3 @! u+ e& k$ ]6 Q/ x; q    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, ! Q. b) B1 h4 ^
        CRect(10,50,510,1810), wParent1, IDC_TREE1);# F& Z3 K- |) z3 G$ Y: m  o
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
" m+ z" L& A: D2 @
+ ~6 A2 Q" @$ {2 y1 S" L( x    Populate(displayPart);. X8 V. U( w  D# B4 F
! ]4 ]9 L2 B: V/ U4 \  z5 v  J
    return 0;
3 _0 K1 k1 Q$ Y1 X6 ]}
4 a  o% ^) F7 g; N+ ]; }4 l! p7 N# @1 Z. b1 n- F4 Q/ S/ U
//------------------------------------------------------------------------------
/ N$ U2 d, @' v) y0 y// getAttributes9 }/ O1 Q1 f& d$ v. O
//------------------------------------------------------------------------------. h. n2 n1 x1 z7 I: c
游客,如果您要查看本帖隐藏内容请回复

: `3 k& |$ I0 [( C& `7 |( X: N+ Q+ n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了