PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

  [复制链接]

2016-3-8 12:00:27 20096 41

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

admin 楼主

2015-3-27 11:17:17

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

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

x

- S; v" i2 U- R7 Z9 {% c' k

* y9 t$ X' v0 h2 i$ C+ [! g/ J8 s2 F2 O. J" g4 M

! v* ]: X: j9 M% NNX二次开发源码分享:NX10可以直接对资源条进行二次开发
7 @" m5 u5 ]! ?- k$ \! n0 k这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
; x  ~" N9 V* ~5 Y8 l3 \/ F
1 F# t6 u+ m8 r. |' W9 {9 N// Mandatory UF Includes' K; }" n2 Q6 A- l9 q* d
#include <uf.h># G2 Y6 O9 }  e% z; @
8 T: G7 R2 N5 a1 s
// NXOpen Includes# L5 A$ L: n2 W: a/ {
#include <NXOpen/Assemblies_Component.hxx>9 _  r( b6 E- D+ c, ?
#include <NXOpen/Assemblies_ComponentAssembly.hxx>
% {) C3 t" R" F9 f#include <NXOpen/ListingWindow.hxx>$ ?: g; l$ d6 E* B/ q1 a& h
#include <NXOpen/LogFile.hxx>; W& ]& Q& O, J! s$ w# n, w
#include <NXOpen/NXMessageBox.hxx>" O0 z* y  K5 j; \
#include <NXOpen/NXException.hxx>" n) D; o+ a9 a
#include <NXOpen/NXObject.hxx>
" o+ P7 n2 j8 [! G#include <NXOpen/Part.hxx>
3 S+ I, e9 N$ w#include <NXOpen/ParTCollection.hxx>
8 z3 d7 |9 x4 Z& U# y#include <NXOpen/ResourceBarManager.hxx>
* l, o' c. c+ N  b, i6 _#include <NXOpen/Session.hxx>
( Q5 s9 D  L& }$ i1 f0 M+ ~. b# E#include <NXOpen/UI.hxx>
2 R$ m6 v# ^( ?! _+ m# b4 j0 yusing namespace NXOpen;
2 F, N! B2 n% x- D2 L0 E! xusing namespace NXOpen::Assemblies;
2 Q. ~5 h9 D- c) X6 l4 l+ ^# ^2 [* C8 a
; C0 ?' J- g; m+ _/ d// Std C++ Includes
8 w+ E1 o9 M- `9 A6 X* ?" j; G#include <iostream>
5 X2 s4 c2 m, I- S#include <sstream>
( Q3 U4 g' `7 M' f' m/ S#include <map>4 M8 O' p2 e6 d3 z. d' s& E# k7 N
using std::exception;, S( J; Y+ @: B) v  j. U
using std::endl;: G0 N+ [7 q4 K. ^. W: }# q
using std::cout;
% x: j0 V6 I# f# l3 R' Jusing std::cerr;
1 d' {7 }6 k# _$ n1 f8 j, [0 ^5 V0 s3 M3 e" }: g4 z( m
// MFC Includes
6 F4 s+ p9 m( U3 }#define _WIN32_WINNT 0x06010000 8 k" F! r4 A. N6 E: x, f; z
#include <afxwin.h>
+ o' ~7 L& N9 u& A$ w#include <afxcmn.h>9 d! m' y9 i1 v/ ^& q- V1 A

: k2 W/ P1 n0 k/ O! I& x4 M) q6 t% y#define IDC_TREE1   1002" T1 l% ^4 h) W4 I. _; ^! Y" J
) |9 r9 h! B7 c) v& _3 K: I
//------------------------------------------------------------------------------: {! O/ e, ^- b, m: f3 ]2 `$ C
// NXOpen C++ class 5 O; ~: _3 z( Q
//------------------------------------------------------------------------------
2 r" I0 [& V1 E6 q" S) u5 O- nclass MyClass: n9 M' J7 H) `3 M6 ]8 m
{5 B- ~) B' v( s8 t0 U' ?
// class members
8 I% R/ r0 E" Bpublic:
- v5 X7 f- i% @5 y$ E    static Session *theSession;
9 A) X0 E5 a. Z) v# }8 q' T* g) f    static UI *theUI;  g# Q( b; x6 e5 I% ]* R4 N
    static int m_tab;- o7 y* O1 P; g& M6 s0 q0 s
    static int m_cbID[2];
; ?6 L3 r" v2 f: \. S/ x$ v3 ]& Q( G5 g' k9 y
    MyClass();: Y& l' X8 X8 i  [/ \! v
    ~MyClass();% h1 X* x+ G5 A( X9 h7 W8 C

; |! M3 t0 s- \) ^# ^8 b% v5 P    void print(const NXString &);
% G$ I, h* g' ^6 G9 u$ T& L/ r; D    void log(const NXString &);' `7 \) B# l9 s7 G+ I/ I' s
    void getAttributes(Component *, HTREEITEM);
; i( x1 p/ `3 n! t1 Q    void getComponents(Component *, HTREEITEM);' l; z9 @5 ?" d/ R/ ?" @" N
    int ActivationHandler1(int tab_id);
. ^) A# P# F7 S7 R    void Clear();
+ l$ A2 r, f( T3 E    void Populate(BasePart*);
4 v. t4 I# K" L: n3 e- q9 u    void cbPartOpened(BasePart*);, x5 l0 ?2 H! o$ [
    void cbPartClosed(BasePart*);' f9 d$ Y/ {5 i* T( f: c0 K+ C2 N" U

5 ~- ]- F' l; o! c, V. D& v+ F2 ?private:, e3 R* T0 j# y$ s3 c1 K
    Part *workPart, *displayPart;6 [) @/ m# Q; ^& c# {2 g
    NXMessageBox *mb;$ s! l  G; Z6 l- A4 }, p
    ListingWindow *listW;, Z, I# L; m! L8 S, t& ^
    LogFile *logF;
) R# v+ b  Q1 J! S# c6 @    CTreeCtrl *m_tree; " C5 u3 @# z8 a. T; R
    CImageList m_Images;1 q. K' f0 C6 r4 l, u
};
2 o; K) J' S0 V8 R+ W# J4 K0 i3 _0 K0 K
" e6 n4 G& N2 d( A, n5 s2 Y//------------------------------------------------------------------------------1 \% ^2 Y6 d9 {! l% P- C
// Initialize static variables
# m  [8 c! v; Z) j//------------------------------------------------------------------------------
+ G2 c/ q8 t$ D5 MSession *(MyClass::theSession) = nullptr;
" B; w8 K8 Q1 R) r. p3 wUI *(MyClass::theUI) = nullptr;
& ?1 t! Y3 S& B1 J+ Fint MyClass::m_tab = 0;1 k+ b. \* D3 E1 o$ B
int MyClass::m_cbID[2] = {0,0};' \/ b, A) c( D# [

! h; X# N, a; ~0 Q5 J8 G9 x; cMyClass *theApp = nullptr;
  q7 Y) D- ^/ S7 [* y, {: M5 r- C1 B& z, r' p3 _
//------------------------------------------------------------------------------5 m$ ?7 Z4 Z6 f0 |1 Y2 E, |
// Constructor
3 X6 }+ l4 A9 W* G1 d5 ^//------------------------------------------------------------------------------+ G7 }9 Q5 N9 Y( a: }! T
MyClass::MyClass()
# J5 m) X2 k* w" ?  C/ I3 v{7 A5 f3 S1 }/ |9 @3 P* a
    logF->WriteLine("GTAC: MyClass Constructor");
6 @! A" X3 [- t* @9 B    theSession = NXOpen::Session::GetSession();
! B( Y- m  o% j2 C    theUI = UI::GetUI();3 r6 ^, s/ c5 X9 [6 H  m) v! d6 k
    mb = theUI->NXMessageBox();$ m* ^( q* Y+ ~* c. E
    listW = theSession->ListingWindow();
* y# `6 O& T' m* Y' R    logF = theSession->LogFile();# l) D: H7 ]' O+ _
. |, o( L1 B) Z6 N9 c! ?9 N: A* I
    workPart = theSession->;Parts()->Work();
; D8 @; Z# e6 Y/ l, ^8 Q8 g& R    displayPart = theSession->;Parts()->Display();- s" {# V/ x4 g9 g& j1 Y. q5 {$ y
( o! Y9 |5 V+ }% H" x, H, U
    m_tree = new CTreeCtrl();! K# t2 K: D( A% V

1 c6 e2 u% u( q, N. W+ ]    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
5 N+ r" s; h4 C    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
5 A( y5 h7 z+ E7 f# s    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
" p- y, \  m$ n) r/ P/ v7 Y; l) O3 e+ z- _) O
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
7 U' s6 X5 V. k2 R, U' z    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
5 \' t$ u, U& ?        make_callback(this, &MyClass::ActivationHandler1));1 Y* j1 s6 h  c
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);- j+ b% E8 K3 g/ P6 D7 F; r; I4 F* M
9 M, M' F: Z) C& t& h: S
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
( y& q) f: b/ `! g" q3 A  h8 f    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));3 l" _8 G4 N# z6 i7 Z8 e: a4 \& i
}
2 u4 t7 }0 ?! D
" D+ S4 w( t4 a//------------------------------------------------------------------------------
7 w7 t2 W  G% s: h" l- N// Destructor9 C( j, H; ]  b- r$ f& \
//------------------------------------------------------------------------------
' q5 X4 j( v8 p* ~( T3 H* fMyClass::~MyClass()
9 {7 k( F8 z- ~  R{* ~2 F, _) }. x7 I" w5 v) j* k
    logF->WriteLine("GTAC: MyClass Destructor");0 t7 a' [3 B6 x# R% \1 G2 p
    if( m_tree->GetSafeHwnd() )0 u& g0 \! K! j( [- P
    {
8 H, ?4 J1 @% D0 z' V6 P+ _  o- X        BOOL bSuccess = m_tree->DestroyWindow();
; u9 S3 I9 g; E* e7 Y9 @    }6 z& u: F& e" S

7 e$ {7 c4 f, p; i) h$ m    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
0 T3 b6 e" i; p- q+ |    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
/ `) k1 n5 r# {6 Z* z' u5 Z    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
5 Y2 w& }+ l" c" @2 x% v  ^. n) W9 ^( s6 e* C: W8 N
}
' q$ x8 K+ I) R# v$ a: D5 R, b4 b0 z! F7 S
//------------------------------------------------------------------------------
4 {! \0 J  Y( Y$ C; T4 f( `// Print string to listing window and/or syslog
% \% J. H3 U4 E& C1 g//------------------------------------------------------------------------------$ d" C' r4 o7 x2 _) q
void MyClass::print(const NXString &msg)
/ n5 f6 e+ D) P$ j& W{; L( L5 D. E* V! G: ^
    if(! listW->IsOpen() ) listW->Open();
; V" f3 E7 p- T% ]    listW->WriteLine(msg);! W* \3 W, L- V& N* u
}
3 b: h5 [9 ~- k# i9 F% n' _$ Hvoid MyClass::log(const NXString &msg). d- e7 i" `; V8 @" y
{
8 |( k8 j7 v6 o1 ], Q" s    logF->WriteLine(msg);
- I& {4 C- }6 w- y; v' F) ?0 f}8 p1 ?, ?2 j( R( f1 |4 T" y: X
0 Y2 @9 {+ y; B
// Callback triggered when opening resource bar tab8 H2 f" ^, O) `1 W
int MyClass::ActivationHandler1(int tab_id)
( {+ i0 y2 Y* A7 o( w! \9 B3 g{
) ]% A, l1 |  X, F    // Get the WindowHandle object$ ]' B3 e7 T+ N/ t# t' u
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);4 p2 X( ~5 }& o# {+ Y! C
    // Get the real handle# z) A. Z4 l% A) m& b
    HWND parent_handle = (HWND)window_handle->GetHandle();1 ?' I$ e, Y$ J9 ?/ S6 K) E8 _8 D
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!2 p5 K; t. M/ i5 V
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);3 M! H1 }/ H' S0 W* G/ _1 H6 G: e
    ASSERT(wParent1);
$ _% l# y  V4 W; ~  |  L
- s( u  N9 X0 N' v; s    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
2 ?8 B3 b2 x( |' K* J    AFX_MANAGE_STATE(AfxGetStaticModuleState());( |: o$ \2 }  d; K5 B9 r4 r
! }0 m* X4 b  x
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
1 |6 `7 R9 ?- T) I5 N        CRect(10,50,510,1810), wParent1, IDC_TREE1);
0 m: d+ `% ?7 n& y1 u; y+ A% N; C    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);- A& s" ]: x3 F' S

3 y5 U8 Y8 p; {1 n8 M3 M) g    Populate(displayPart);
  x0 Y; s, K( N
, `7 k. w6 c9 S3 S    return 0;
, h! e( h2 a9 Z, i4 u; o' I}
# v0 ?+ l3 i! w9 a, b' k9 I& J" o* h/ t" r
//------------------------------------------------------------------------------6 d  |; E0 M: o( P
// getAttributes
! K) z" W; a4 f8 x; l//------------------------------------------------------------------------------; |. m- C: j5 i1 ?5 _% D
游客,如果您要查看本帖隐藏内容请回复

- {4 O4 [: p/ |. G8 d( y8 g* P: {, s7 V8 J. S8 R3 W
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复41

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

    我知道了