PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

admin 楼主

2015-3-27 11:17:17

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

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

x

  F) M9 R) I' ~" H4 @7 N9 Y8 ^+ C
1 x/ |! ?2 G* e6 E! n* R. \
. J8 y* W( i' M3 C/ q
7 K. l; r& x3 s( c
NX二次开发源码分享:NX10可以直接对资源条进行二次开发  R" I8 I; ?$ Y* x
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
5 w7 T2 Q# c/ s  Q( V2 q; D
0 J1 N  ]1 X  p0 K; P1 k// Mandatory UF Includes1 [. Z+ e% u3 S) {3 p$ z
#include <uf.h>
: v, Z$ M( W( s7 M( H% W$ n3 T, u4 O( E- R" ]0 N4 h7 M
// NXOpen Includes
* h! f+ H% S6 M7 ^. _#include <NXOpen/Assemblies_Component.hxx>
9 l% @4 Y8 @0 j. r. ]% j) e4 V, i#include <NXOpen/Assemblies_ComponentAssembly.hxx>7 ]  B" P' z" X7 D4 G5 @' i
#include <NXOpen/ListingWindow.hxx>9 `; e: b# t) m  G& c5 O
#include <NXOpen/LogFile.hxx>
( _0 \" L1 M0 }: o3 b4 P: C#include <NXOpen/NXMessageBox.hxx># `' v# `5 ]/ d* B  r3 H; ?, w# d
#include <NXOpen/NXException.hxx>4 j! i. q8 M( b9 [- z2 `0 b9 m
#include <NXOpen/NXObject.hxx>
8 g- L9 G! g, ?. G0 A; Q/ Q' T/ U#include <NXOpen/Part.hxx>
; H8 a- I% q7 M#include <NXOpen/ParTCollection.hxx>3 D, a! n) c( q) y
#include <NXOpen/ResourceBarManager.hxx>
% o4 f; g" f: z/ |( A- Y! T0 d#include <NXOpen/Session.hxx>7 |7 U( u1 p9 C8 ~! r6 B2 u( U
#include <NXOpen/UI.hxx>, L( ?7 V! V# {) x( y
using namespace NXOpen;( \7 c) M$ S( c) W5 F3 |) L0 [9 t
using namespace NXOpen::Assemblies;/ |' P: k% C1 l0 |6 n; E# x% P

1 |  B5 K: D) d/ u9 ^8 u" b// Std C++ Includes
1 t" U  I7 J' _: v( V+ t#include <iostream>
9 V4 F. e( v! {#include <sstream>; ~4 Q+ \8 a% \& _3 Z$ k
#include <map>
. n+ B+ p2 {1 |9 ~. }using std::exception;/ j% E& }  w6 m8 \
using std::endl;
( X; \0 p) @* }- O9 P: Susing std::cout;- ^" L* a4 j9 u5 H, l) g
using std::cerr;
0 o' F* j3 |  l2 v. `+ Q2 h  N
* ^7 e# ]5 |5 X* T, b// MFC Includes
( p; W: R9 I3 [4 A3 v" c#define _WIN32_WINNT 0x06010000
$ Y( G) d) M- B: q#include <afxwin.h>% Q6 i9 r4 h( K( `( [
#include <afxcmn.h>! l$ ?  r8 q* h/ o) ^
) N0 O$ ]: e$ M8 p
#define IDC_TREE1   1002. T$ n% a) e( ^- J: k

, D: G; k6 I6 x4 e2 C. w+ ^- ]8 v0 M//------------------------------------------------------------------------------
2 A5 L& m( P1 U// NXOpen C++ class
: z  U3 ?% f, ?! U! T. u9 [  y0 K- `//------------------------------------------------------------------------------+ z8 {/ C! R" c" R  [$ d9 w
class MyClass2 }: ?/ {  Y+ A, @' D* A( T0 Q
{1 ?( ~6 E& S% q0 s; B( s0 Y. E
// class members
. h3 l. T9 m* J) J! ?) _* j, ~public:8 p6 H' I" U9 K0 p$ v* l/ Q
    static Session *theSession;2 S* n- D4 F: U" J& }- ~
    static UI *theUI;8 |* A2 z& `1 f4 ]9 S0 H9 |0 v
    static int m_tab;  l6 z2 `$ v" [9 B
    static int m_cbID[2];. T2 c8 j3 r: ]% k- J4 ?
5 T2 z6 ~2 s, N1 F+ Z
    MyClass();+ r1 N1 U, i& N9 j2 S  o; V: k/ Q
    ~MyClass();# Y" p. `3 K/ w( I. x+ W2 ~* H/ B
( J8 n; f3 N! D; f: Q
    void print(const NXString &);
, p! e6 b: h) A8 Z: X    void log(const NXString &);
% g) q9 V0 ~' Q8 k2 f3 ~& H    void getAttributes(Component *, HTREEITEM);
. K( F- e' Z, h) ~% p5 O    void getComponents(Component *, HTREEITEM);
& y% T3 T9 Y5 e( Z# y    int ActivationHandler1(int tab_id);
! \$ {  M5 K* p" J4 k    void Clear();! U  k; J  n+ r9 F2 u6 |/ F4 L
    void Populate(BasePart*);- }- P- d- ]4 K  j
    void cbPartOpened(BasePart*);
* P9 k) T, ?0 B: x4 ]7 e    void cbPartClosed(BasePart*);9 n9 `+ ]( `3 U  p. ~
8 F' x& V! C" h2 g4 H2 n
private:
% o# [# t7 ^6 r) h' F3 c9 z3 T: v    Part *workPart, *displayPart;& R' m; x# \; U1 h- S" X- U5 R
    NXMessageBox *mb;
" s1 B9 j& [7 X    ListingWindow *listW;
( s) x, j4 ^1 M) o" }% _. ~6 S    LogFile *logF;
3 r" s- z+ A6 B4 t    CTreeCtrl *m_tree; ; m1 B" L& w9 `6 F& V9 P
    CImageList m_Images;
+ `5 w) I" U6 ]6 G};8 d1 P& _8 }0 Z" F) K3 j; G

0 `' ?; |  j/ d4 }5 H0 U( ~% P, Z//------------------------------------------------------------------------------
8 a, v1 E9 A# F5 z/ n1 \// Initialize static variables# z' Z& O4 k2 t1 B+ t9 {
//------------------------------------------------------------------------------
* _6 D7 d% K  H% O  U5 W* TSession *(MyClass::theSession) = nullptr;
0 s. v- y- U/ QUI *(MyClass::theUI) = nullptr;
1 I. @' \7 w. ~( L: {& Pint MyClass::m_tab = 0;
* Q$ @9 _1 m$ `! Eint MyClass::m_cbID[2] = {0,0};* ?" b% ~0 I0 m

. g  z' j2 L$ E" G5 ?( }$ FMyClass *theApp = nullptr;
% T/ y, T3 k2 W2 i" _0 k) U
" v" i6 ]2 S. a. Q* \//------------------------------------------------------------------------------% Z' t) i3 N% F& ]
// Constructor
, l) @* ?* [& e; u& A//------------------------------------------------------------------------------
* i: Z, i. ~% `& nMyClass::MyClass()6 h# w6 d) H/ v  A( w
{6 Q& l" H0 C1 _' |% D' M
    logF->WriteLine("GTAC: MyClass Constructor");) d  [+ {. }+ [  m0 l
    theSession = NXOpen::Session::GetSession();
8 o0 U( V/ I, p4 V7 X6 _* Y4 j    theUI = UI::GetUI();
: d. l& }1 q2 W: T4 L# s2 i    mb = theUI->NXMessageBox();
1 ^. \  @' ]6 Y2 A& R3 l% r: B1 c    listW = theSession->ListingWindow();
  M7 D9 _) N7 W8 N  P% v    logF = theSession->LogFile();
" d+ h  q: W+ D# u# n
9 F4 U! {' [2 {- Y    workPart = theSession->;Parts()->Work();
5 E  J/ N0 j1 c* u3 h% `: b" s    displayPart = theSession->;Parts()->Display();
+ T$ r1 @% i3 m) ^& j  U; n
$ A4 \# g1 f3 b0 {    m_tree = new CTreeCtrl();
; z$ ~3 R4 y9 l- }% N, \/ O( Y) z/ `. u; h
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
1 o& C3 X5 M& f3 m8 Y- @    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
3 Q3 }. R( }3 ]1 ?! \+ A    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
4 p3 G" Q% Z7 V# m, E# k  E1 `" n, u% r0 x! L+ Z% g) w. b' ^  L
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
$ b- i+ _* ?  D6 ^    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
/ \- ]4 A+ |, R5 r' L% J        make_callback(this, &MyClass::ActivationHandler1));/ N. G2 z# Z) a& l/ ?7 o
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
6 a' D) P, m) b' W2 i
; a6 w& r" B* ^2 ^- Z4 W, s    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));/ z- ]5 S/ W  r3 p: d" R
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));' o. ^( \' y  v% g8 c! x9 x
}+ D, J1 W+ [1 N$ _. K

8 a& h5 S* M: r8 S9 y, i. F$ E//------------------------------------------------------------------------------2 D7 G6 B  ~7 ~  p9 a$ A6 k
// Destructor- \" c$ `( c/ ^; O
//------------------------------------------------------------------------------
% t. i5 o/ l( O* ^0 D* q+ xMyClass::~MyClass()
7 [/ l6 O& R, F- }" I6 u0 c7 p# H{- S5 ^5 R* `# X5 h9 ~: m0 i
    logF->WriteLine("GTAC: MyClass Destructor");5 k5 L# m0 c  j! Q2 z! N
    if( m_tree->GetSafeHwnd() )
$ e# o. k  a  E" E/ c    {
! {( u6 [+ ^7 _+ x+ s, D$ ?! V        BOOL bSuccess = m_tree->DestroyWindow();% r7 g. P: K; {2 ^1 v. |' p
    }
9 ^: c/ f; K& v& w4 i
8 ^' T' T* o+ C9 ?6 P9 `4 y    theUI->ResourceBarManager()->Destroy(theApp->m_tab);/ L" V4 d1 t& I. N7 F5 f. _
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
' Y. c# X) h) ?    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);* C% B/ |- K" i% v) y. }9 }4 q
& d" p& J* M6 a- ?7 H) v
}/ u3 d. P. n3 H" C. g

: k3 R1 b- ~5 |; V3 t//------------------------------------------------------------------------------7 {$ p  g' q- M- B
// Print string to listing window and/or syslog( C; K1 I6 L; h5 t+ H$ ?
//------------------------------------------------------------------------------  g& y; B) Z5 A* X6 Y) a0 q
void MyClass::print(const NXString &msg)1 @3 X7 j; \- D1 k1 V% X
{  B- S0 N5 @! {  E( ?2 M9 F
    if(! listW->IsOpen() ) listW->Open();
, e/ k& |9 q) r" `    listW->WriteLine(msg);: _( q$ U( l5 t, K- @
}8 p3 @4 ?. K% q4 B5 l3 u
void MyClass::log(const NXString &msg)
& X& n# Z: L' x6 @$ C  C5 F/ j" V{
% Y. W, y6 k8 I& Z    logF->WriteLine(msg);
7 p; r7 r6 X0 I8 b) @& u4 m  c: I}
( T* v/ N5 m9 x8 |% O  @4 f* c$ B) i% S, n  z
// Callback triggered when opening resource bar tab0 O' x0 V; d5 o) ~$ u2 g
int MyClass::ActivationHandler1(int tab_id)2 Z) J/ S8 C2 O5 n5 }
{
- e9 Q3 I9 R* x    // Get the WindowHandle object: J5 b4 ~  J5 ]+ N4 q
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
2 T1 \9 m( w; l; w, B    // Get the real handle
" _( p, v9 l8 S" n' }    HWND parent_handle = (HWND)window_handle->GetHandle();
9 ~! B( Y* V' M    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
: Q, `9 E' w  D* Q. L    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
9 }; c6 x" B; l9 Q0 x4 Q8 }    ASSERT(wParent1);9 s& m* ^2 ^2 K. ~
4 I2 f) ]5 Z+ V
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
4 K3 f  [' k7 H    AFX_MANAGE_STATE(AfxGetStaticModuleState());& ~& S7 s2 w% T4 ?
/ l& t$ m# O  f
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, . E% y* Q/ X, J8 Y! `; }
        CRect(10,50,510,1810), wParent1, IDC_TREE1);
6 f" U2 B; k$ U" |8 }0 n% j    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
3 X, _/ B+ n; }! K6 u$ b
+ a1 n4 P9 c- ~# T1 W$ K- \    Populate(displayPart);
6 z5 `" ^7 r& C4 ~3 ]( U- }/ d9 p, X1 d. v3 v( |. z* t
    return 0;
4 p: S% D( r, Q}* ~1 s, m' N# O' i

5 f% \8 i  W. O- A) M% N//------------------------------------------------------------------------------
- k7 h# o9 G9 o1 Z// getAttributes
  _% Z4 |$ r5 p//------------------------------------------------------------------------------) q9 F- u4 F5 d2 ]
游客,如果您要查看本帖隐藏内容请回复

! e0 x" K" A( X+ Q' h- v: e" |7 D9 I1 d+ W; i5 h5 ]2 R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了