PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

  [复制链接]

2016-3-8 12:00:27 21682 42

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

admin 楼主

2015-3-27 11:17:17

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

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

x
' V! P; m( M" a

" `$ }% T) a+ t( F4 S" I2 e
5 X! r  l2 J' I) b! r' a! E1 s

6 \4 f4 Z7 U6 L/ eNX二次开发源码分享:NX10可以直接对资源条进行二次开发
9 ^* c; m! ~7 a% N' K这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。" D6 U4 {$ h% q. A
7 T. t) C0 r$ [- W
// Mandatory UF Includes5 K$ [4 \) F9 _5 Y8 Z. J
#include <uf.h>
& m: {7 y% t+ y  k: [8 E+ s# t$ @8 o" T; w. H8 e2 O
// NXOpen Includes" a) D* |1 ]5 E
#include <NXOpen/Assemblies_Component.hxx>! {- g1 b; s, l/ p
#include <NXOpen/Assemblies_ComponentAssembly.hxx>
+ S% R0 [) P9 w6 y#include <NXOpen/ListingWindow.hxx>
: i6 ?) f9 P( x#include <NXOpen/LogFile.hxx>
  D* J2 m  M+ l) `#include <NXOpen/NXMessageBox.hxx>
% E  B( s) E# Q# f* L& N& R- H#include <NXOpen/NXException.hxx>% q% S* d# O4 B
#include <NXOpen/NXObject.hxx>
/ ~4 {: _1 r6 L  p" [( g0 ]#include <NXOpen/Part.hxx>' M( u- z1 ?% {  r$ h
#include <NXOpen/ParTCollection.hxx>2 C0 y1 v, u2 |/ {8 ?! R9 s
#include <NXOpen/ResourceBarManager.hxx>
3 p8 Q  I5 E4 [8 }, C' i#include <NXOpen/Session.hxx>4 Z- g# m' z8 z5 J/ O! y& s* b
#include <NXOpen/UI.hxx>) {  D5 M. r% O& _  U
using namespace NXOpen;
' u1 y3 Q( n# }! `, D+ ?% C( busing namespace NXOpen::Assemblies;
' k- o4 e3 y6 ]/ P* K( F5 K7 v( ]5 {- E2 T3 N5 \$ ~) ?5 [
// Std C++ Includes
# ]/ G1 s/ r4 |( p7 a& f4 A#include <iostream>
9 _9 P" m3 }& j) R: V#include <sstream>8 G% Q! p1 i3 O; F) q
#include <map>
; ]  E) o1 k8 l& J5 N1 yusing std::exception;& |- N, |' h$ {& T6 @% i) P* i
using std::endl;
9 j5 w" b% U3 |using std::cout;% I1 t9 h  h/ G$ S& ]
using std::cerr;
  g  X. G( Q4 O" \6 k5 c4 t  Z4 x& A: F9 b% V
// MFC Includes
, f. w7 R* b7 l0 s- ]& I( J- N9 q#define _WIN32_WINNT 0x06010000
- U6 {' t  W$ Z#include <afxwin.h>$ t) D4 q" g5 b) E" ]
#include <afxcmn.h>( L, Q2 s1 T& Q1 _
. k) ?9 m  C) F) \4 a8 `9 D
#define IDC_TREE1   10023 @; L; c1 {& c% O

3 k3 {4 G6 j: Y% p& ?" z//------------------------------------------------------------------------------) n+ q! W8 |5 F! u5 P0 Z
// NXOpen C++ class
) f) b3 A7 E3 E. ^( @6 G9 N9 G+ j; J8 B//------------------------------------------------------------------------------
+ [9 c2 d; L& j7 U2 r; vclass MyClass2 w0 }8 G/ j; @5 c6 Q1 {
{6 O1 Q" ^9 O1 f3 b! `$ M
// class members$ i; U( K7 t9 S# V
public:  v  ]/ O) _. }) \: o
    static Session *theSession;' H% s/ M/ K) }& E
    static UI *theUI;+ r6 x8 t' I" u* j$ P+ [; W
    static int m_tab;
* f  y) i6 O* b: ~/ G! G/ w- n    static int m_cbID[2];
/ h9 J- Z# p1 Y/ f! k2 O3 c3 m' X5 u. u6 O& A. g/ ^
    MyClass();
9 C; ]" F' a; I    ~MyClass();" T, X" y7 g! b  g. l" b

9 ?7 m  }; q9 {# ~0 ?; m1 |+ N    void print(const NXString &);4 u3 u& u1 i- i+ T2 K# C
    void log(const NXString &);: c/ a( {" a- c- C8 X
    void getAttributes(Component *, HTREEITEM);
* B4 O* p% g! h: _/ l8 g! d    void getComponents(Component *, HTREEITEM);
; k, w5 \# v9 u: V7 K9 d    int ActivationHandler1(int tab_id);
8 m5 V+ M7 J8 O6 B    void Clear();
5 M/ p/ j7 j. L: d3 D    void Populate(BasePart*);# n: Q3 _) E' ^# B4 Z
    void cbPartOpened(BasePart*);
$ V' N" m  W5 j3 G    void cbPartClosed(BasePart*);
( E5 C3 S# \- s) R8 T: k, \: K- u" @8 u& g3 t# p) O0 c
private:0 T* m% B. ^7 {8 y
    Part *workPart, *displayPart;
$ y) f" l# Q& ^5 D$ Z6 M% q    NXMessageBox *mb;
9 a: ^, R" K0 f, ~; r    ListingWindow *listW;
. c6 j" {. O3 @5 p) \& _0 ?    LogFile *logF;
0 t0 r3 g7 D" G( B- w8 n    CTreeCtrl *m_tree; ! ], w6 M  a: o% d# d" o7 a
    CImageList m_Images;
/ G- R8 }. N8 J4 O1 n/ }; ?};' L- }3 s4 f  O6 G
7 X7 b  A8 o, ~; c
//------------------------------------------------------------------------------/ n  i' E5 u7 |8 _
// Initialize static variables* `& Y" K3 O2 Z- q6 ], G
//------------------------------------------------------------------------------
# z" Z1 k0 ^2 [  h, u5 XSession *(MyClass::theSession) = nullptr;5 w' Y, d+ f. z0 S7 L
UI *(MyClass::theUI) = nullptr;
: A- J3 q( N0 F  e3 @, sint MyClass::m_tab = 0;
; o1 y1 ~0 V/ I0 c, Bint MyClass::m_cbID[2] = {0,0};
8 z7 ?+ ^8 ^; c5 ~% w1 [8 a7 K  j) _) i# \9 N. r4 |
MyClass *theApp = nullptr;
6 D. a/ X8 J9 o6 ~' ~
# Y" ?! }. L2 S5 c. G' t7 o//------------------------------------------------------------------------------9 p! K, J! [5 p5 t. J
// Constructor , G+ H: A9 ?% h* b) i! g7 I7 E
//------------------------------------------------------------------------------. k0 n" q4 [7 _  \' K
MyClass::MyClass()0 s  u- O7 Y( b- c: ~4 W
{* \& v4 ], k* Z1 x9 V9 W
    logF->WriteLine("GTAC: MyClass Constructor");
& g6 o7 D% c4 g3 x: {    theSession = NXOpen::Session::GetSession();
2 a$ n. t$ j, g" J- a5 ^    theUI = UI::GetUI();) f0 Q3 G3 f  d' n* u+ ^
    mb = theUI->NXMessageBox();
) s. W% R5 B' ?& O9 n6 F# r/ e* R    listW = theSession->ListingWindow();
' Z* h( L1 a& w0 H( p    logF = theSession->LogFile();
/ ?5 |5 e( g8 i4 {6 V$ l) w# {& ?4 Z/ N2 }5 ^8 H
    workPart = theSession->;Parts()->Work();- Y) b) v$ M9 Q1 g2 e6 i
    displayPart = theSession->;Parts()->Display();
6 `' X$ S- r7 m0 f' c" h6 G- r0 H, F
    m_tree = new CTreeCtrl();
! {/ R1 w1 h. e4 p+ W4 C+ o
" b. h6 Q3 n0 }    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
8 e* Q/ z9 S& x4 _8 P1 M# P    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
- P$ y) u) F2 o& R8 Q* d8 @    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );! n" j3 L. g0 \+ P" y
/ ^( w. |4 G3 U
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");0 T0 D+ y# c9 J& B1 @: U4 Q
    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
7 X/ x" c( Y. _& ]4 d: `% [1 I% i        make_callback(this, &MyClass::ActivationHandler1));
9 Q! r) j7 Q( P# q5 D% Y    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);4 G$ X  p9 c" A6 ^

4 L  s+ E5 J* D5 u/ |1 ]    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
& r6 l3 ^. w  o5 A1 X    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));& B5 u8 s0 U) R7 Z( f; J! F1 Y4 v
}
0 [. m0 y3 K2 U( A, L- r0 b
- W6 J/ D6 I; e//------------------------------------------------------------------------------
, _6 t  a' e2 `// Destructor' W% A) B* A; d& H2 ?- j
//------------------------------------------------------------------------------
8 T# C) s5 y5 m' nMyClass::~MyClass()& r: ^+ V0 z; h7 l# f
{
  y2 |. r5 p) r: r- P    logF->WriteLine("GTAC: MyClass Destructor");3 e2 n6 Y4 F7 p5 Y1 f
    if( m_tree->GetSafeHwnd() )0 p3 W7 c: l7 x  V7 b1 k- h
    {
( j. j' s% x& a( _        BOOL bSuccess = m_tree->DestroyWindow();
1 J; i; x' @5 A+ t. \, j& e" ^/ J    }+ m& ]- S( f9 ?0 d/ S" h
1 ~5 {7 [6 G- z4 _0 C/ r
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
0 Y0 J0 p& B. O8 N4 b    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
6 u9 Q' f' ^* F. c0 y) E5 {    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);% m% }, c) h8 U) c) o) F9 i5 @

, ^4 ^0 F6 c  q& |5 J; Q  b: `}
5 k. J+ m/ l! L7 e$ Q2 u  U
9 E0 |8 ^- P8 J6 B% a3 q, ?  K//------------------------------------------------------------------------------
3 o2 @$ I8 c. ^// Print string to listing window and/or syslog. n" G0 k  h0 ?6 A9 R+ H, E
//------------------------------------------------------------------------------. X9 ]1 D& }$ M# V. ?
void MyClass::print(const NXString &msg), U+ k* J$ p& y# k6 C1 o$ q: Y! h$ d
{2 z. h, K3 ~3 F
    if(! listW->IsOpen() ) listW->Open();3 I. s8 r; e: G1 ?) H2 q/ V
    listW->WriteLine(msg);
: U/ O# k+ X8 ]( i}
+ N; H/ y& F/ T6 ]6 x; Jvoid MyClass::log(const NXString &msg)& J- @- N: W0 }+ g
{
% o* e( N8 a4 J" q' @    logF->WriteLine(msg);- q' e' t5 }" ?  K! c9 r
}
1 O% i8 ~' D2 @5 W. F+ o: u" P; ^1 q4 G) T
// Callback triggered when opening resource bar tab
0 u! f- s) ^: S# v" X* Rint MyClass::ActivationHandler1(int tab_id)
9 C( R7 R2 H, b/ R# G% E{
" ?& b& N0 A% ?1 ^    // Get the WindowHandle object+ }+ [1 ?9 I& @6 p# A
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);7 _( S' o5 g; s8 T
    // Get the real handle
0 }/ _$ u8 ~  i    HWND parent_handle = (HWND)window_handle->GetHandle();: @# O( M- k! \* [' Q( F
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!5 m8 j5 J$ i  z, K% H
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
, |  Z; `0 Z6 }9 G2 L1 b) ?    ASSERT(wParent1);* K' x: z; U* y5 \: Z, R5 b

% D0 b8 b7 _, P) [    // Switch module state to avoid Assertion from afxCurrentInstanceHandle) O8 L: O# I$ z, I/ ]' X
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
" @% _; n! Q# C: |$ Q1 K+ e; s& w8 F) V- I9 B5 j4 r9 F/ O! i) p
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, & e. s5 I7 u! W6 S
        CRect(10,50,510,1810), wParent1, IDC_TREE1);
# |/ w9 C  a$ n- A5 u1 h5 ]& u    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);" [% @  s: w/ o' X0 |# N

, v2 ]* r. k% S/ h% R3 o' c    Populate(displayPart);6 @3 R- a; r/ n: \
5 i$ A0 K5 `; N' v9 d7 e
    return 0;" h: _& d2 K# K+ N. e
}
( v" x' z/ O0 H6 F/ [
' _0 Z3 t  t5 z! j/ t! A- B8 [//------------------------------------------------------------------------------! O$ V) F8 r) U5 b1 ?
// getAttributes
6 Q, \) l+ p4 @; \: }, b//------------------------------------------------------------------------------
8 |- E1 k6 w& x+ X8 v- w
游客,如果您要查看本帖隐藏内容请回复
+ j2 W9 G8 k2 k2 G1 N8 c; l

/ y( q& U  Z1 z2 ~& \% Y
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复42

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

    我知道了