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 21397 42

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

admin 楼主

2015-3-27 11:17:17

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

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

x

8 [: k7 @" }& D( j! g' ^  n

; t3 R' a* l! E) V
* \/ y5 y( r$ m
; H+ U: f! q, ~0 f
NX二次开发源码分享:NX10可以直接对资源条进行二次开发* J8 G2 E  K  C, \- m
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。5 Q& c4 g2 t+ }' g2 t2 B

6 P; O7 W# s  W9 u  L// Mandatory UF Includes
6 S7 Q+ B6 V+ p5 R# j  \1 v#include <uf.h>8 g# m- F; |5 g, v

$ q* b  W. v: V7 L+ x9 e// NXOpen Includes
- `) U; r1 J  a0 P#include <NXOpen/Assemblies_Component.hxx>" |4 }8 J0 L$ v, p/ r7 W: t' T1 G  Z
#include <NXOpen/Assemblies_ComponentAssembly.hxx>! a7 L7 z3 i# e/ f% a5 H* b
#include <NXOpen/ListingWindow.hxx>: W+ m* H6 h. r5 Q6 u
#include <NXOpen/LogFile.hxx>" u0 I" Z$ d/ B
#include <NXOpen/NXMessageBox.hxx>% p3 I" w8 y" l3 `3 P( I) @
#include <NXOpen/NXException.hxx>
& H! h$ k; @9 b8 d5 A6 _#include <NXOpen/NXObject.hxx>
9 |+ d5 X. D% q  K$ j0 |#include <NXOpen/Part.hxx>
) A0 c. G" v* g" ?5 w#include <NXOpen/ParTCollection.hxx>+ U5 x" {& y8 x" R
#include <NXOpen/ResourceBarManager.hxx>
; d& L0 V! e0 j8 h, U6 {! Y#include <NXOpen/Session.hxx>
+ W: a2 ?3 q6 ~5 |8 z$ Q#include <NXOpen/UI.hxx>: A/ Z. N2 s8 T; ?  {0 c
using namespace NXOpen;% j+ O! g5 i) q4 G% I# Z
using namespace NXOpen::Assemblies;/ m5 T: @: Q) m6 a. `0 l. P

4 m. X) w) d, n$ A3 u" e0 S& B// Std C++ Includes
# G7 g" n* A( @# S: Q#include <iostream>
8 \5 m8 w1 _! _* K2 |1 R$ |#include <sstream>
3 {# w3 C4 P6 p. d' x7 A#include <map>
! y( M: I  }4 x7 nusing std::exception;! y1 }& z5 D$ ~0 x
using std::endl;- _, H6 X) a% W9 Z
using std::cout;
8 k* z$ ?$ U! a# ~! wusing std::cerr;0 S9 {9 q& ~  M% u) T
6 [: Z* V& S. z) \! H7 k; o+ E# R
// MFC Includes+ D( _  s. v/ p0 ]3 |* t
#define _WIN32_WINNT 0x06010000
$ m9 }3 F- T# K& R8 u- |2 X#include <afxwin.h>: `  R9 ?1 f! _6 [: ^9 v
#include <afxcmn.h>
+ Q5 O, f) M! ]( ?" f4 s+ k5 V2 L. ^% L# h0 O5 z9 r
#define IDC_TREE1   1002- j/ f7 z, P& v9 y  W/ H0 D% n
/ h( N' R' W9 \6 I
//------------------------------------------------------------------------------+ L: B* A$ V9 e  w1 M; L& ?( ?
// NXOpen C++ class ( L& `3 F; G1 r2 u* ?; T5 l  I
//------------------------------------------------------------------------------
: w) @& I* D7 `9 Iclass MyClass! Q6 w7 J, S5 V* u8 b) X* {1 f
{
. b4 m  ^. u8 j, _2 k2 {6 Q// class members: }7 c8 t0 J' U) ?( W
public:
* ]; F- ]% ^. e: m, K1 ^) q! {* Q    static Session *theSession;0 x1 S8 F( D' `
    static UI *theUI;2 e& ]1 n. G3 v5 E% p
    static int m_tab;: o) O% h: P! z6 v2 O9 T
    static int m_cbID[2];  X& O( z! `, ^8 w4 Z0 x

0 t4 [8 y  f+ M0 V    MyClass();0 m7 G& q  v' J$ U) \1 l( \; f# I
    ~MyClass();6 V* H8 `& ?4 A4 w" b, N" P- U

0 v0 m; O% p  F# {    void print(const NXString &);
( R! {' w6 r. @# B    void log(const NXString &);7 h, _% m+ D% {" x# w* Z
    void getAttributes(Component *, HTREEITEM);( \. j# q1 o# p% `' `. F
    void getComponents(Component *, HTREEITEM);- x4 x" K: N& H1 g! T2 T  p
    int ActivationHandler1(int tab_id);
, G7 H) e7 g, b, Z1 j% r    void Clear();
0 Y3 Q% `  V7 M% J    void Populate(BasePart*);: ]4 }: d1 p  D; A
    void cbPartOpened(BasePart*);
0 O! }* L5 q4 ~0 m% B9 [    void cbPartClosed(BasePart*);5 R( E, G9 h9 I  }" }; Y

0 ]' f5 T$ B4 C  ~1 z) I+ q/ T  vprivate:
! P, W9 j' U3 ?2 t    Part *workPart, *displayPart;2 {) Z* d8 |. h& w# r/ R$ r& G. m: W' {
    NXMessageBox *mb;
4 `3 K' V- t" M% c: B) |    ListingWindow *listW;, k; X% |4 o% ?5 V( ]
    LogFile *logF;, N( k" s6 w# k" D- r( O
    CTreeCtrl *m_tree; 1 }" M6 ]2 \$ v5 O+ U. f2 D$ T
    CImageList m_Images;
/ J" G0 o( u7 _1 J};
% E" x4 \. @* ?+ t4 f$ Q4 K% }9 z3 `
//------------------------------------------------------------------------------1 ^- z7 i) u8 b, X/ E4 [, [3 ]
// Initialize static variables+ V, s% u( w7 m. w5 h
//------------------------------------------------------------------------------
/ \$ j% f1 s) T3 eSession *(MyClass::theSession) = nullptr;
2 X4 `- d8 t+ n) ~/ M2 I3 xUI *(MyClass::theUI) = nullptr;
/ R& F7 ]; L6 f( g( }4 q& }, lint MyClass::m_tab = 0;
5 Z: D3 d: b2 b9 t) Tint MyClass::m_cbID[2] = {0,0};
1 r, Y' ?/ {) c8 G2 I7 b5 f. |* C
MyClass *theApp = nullptr;- a- r. [) [, I# p$ D; Z! [# R! l
* j; u" l1 M" b5 u
//------------------------------------------------------------------------------
% E/ M& e9 E" h9 s( D// Constructor
3 Y: A" Y. }- a4 g3 b//------------------------------------------------------------------------------2 P) Z( o2 p4 D- {3 A
MyClass::MyClass()
2 p1 v. u3 k1 B! n: e{
* k/ g6 L# U$ m% X! @$ [    logF->WriteLine("GTAC: MyClass Constructor");
( I8 A- F6 G- X5 Y9 g/ r1 k6 m    theSession = NXOpen::Session::GetSession();6 c# J  X# X$ E8 O
    theUI = UI::GetUI();0 i5 r1 P7 {1 t0 B
    mb = theUI->NXMessageBox();
$ o. ~: `+ C# D- t! `. V    listW = theSession->ListingWindow();  l# T0 P$ u3 y4 D+ |) ]4 J
    logF = theSession->LogFile();
* F) T( R1 I: ?% q8 R  x
; G" Q& @" b: d' F    workPart = theSession->;Parts()->Work();
- L" G- @* p) \! a) a, T4 \    displayPart = theSession->;Parts()->Display();
$ k" k" L/ B" }
& ?9 I- T8 x& ]1 W    m_tree = new CTreeCtrl();
1 _* _$ C- D0 z& i' M. j
8 j' Y9 a6 c2 @3 [4 S/ ?    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);  V: h9 d2 h) O4 o2 o" V
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
, u* _4 _( O6 }- ]! v1 }8 u    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );1 Z+ ]! w# o. m5 z8 \+ _( g. v
6 h3 F4 M8 p/ Y# x
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
+ G# J* l: l& I$ R. t    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
' y; i4 ]+ F6 s/ c# S        make_callback(this, &MyClass::ActivationHandler1));8 [) ?: `3 B  i) K2 j
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
( e, W8 w2 J2 ^% r, ]% t3 c
7 O4 q# Y% J; c+ p5 I- h    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
! g' y+ X; l% E! F8 g    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
) x7 H! ^$ B- U}0 L+ l1 K+ t4 r) _
1 c! t8 D5 ?3 ~$ y
//------------------------------------------------------------------------------% ?- [% j9 E# M3 t1 l4 _
// Destructor2 Q* z+ A6 m) g/ p, |# ~
//------------------------------------------------------------------------------
6 S6 v: n) Z# h  e1 hMyClass::~MyClass()
: f7 |+ _) u5 [{9 Q! M+ f  D9 N* h  O! d
    logF->WriteLine("GTAC: MyClass Destructor");! C9 M8 I0 u; \: ~8 J4 {9 H+ l
    if( m_tree->GetSafeHwnd() )
1 J7 Q3 u4 i( m; N    {! g8 P; `' Q! T5 `
        BOOL bSuccess = m_tree->DestroyWindow();. s6 N, L1 y  t" @1 F
    }1 s3 b* N# w0 p7 S+ ^: n

# n+ D* L0 M/ b1 D    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
5 g0 L' ~& U! ^7 a  P; p$ X    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
0 {; L" W4 V6 o* p% a5 Y( l% }1 l# _- S    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
& M+ E% o- m* ^9 |6 W. C9 U2 W" l/ P( ~
}
9 |# D! d8 R. ?' v# q/ M! n' `/ R  H
//------------------------------------------------------------------------------
5 n5 d0 u6 @4 U) e// Print string to listing window and/or syslog- u; b$ C; \: P
//------------------------------------------------------------------------------: O3 l4 Q7 Q3 j3 a8 U
void MyClass::print(const NXString &msg)
0 n1 H; E8 _7 T; W{
! O. M/ d* j- j" ~* f    if(! listW->IsOpen() ) listW->Open();( I8 N8 I3 T  v* F
    listW->WriteLine(msg);
! [6 l0 q+ ^. V}- C3 W$ E5 W$ Y. F: ?
void MyClass::log(const NXString &msg)4 h/ _0 ^% e1 q3 m! V& o
{9 F8 r8 y3 m* e( s9 e
    logF->WriteLine(msg);
+ V) h2 }9 p9 r+ {+ ?}
, e5 A; k* c- e( b1 C1 c% k. `3 I# A4 o5 ]0 k# G
// Callback triggered when opening resource bar tab
! L9 ], |6 M9 ?1 X+ pint MyClass::ActivationHandler1(int tab_id)$ `( _/ o' [/ `( z
{
5 d5 }2 ]. K" s8 q    // Get the WindowHandle object
, i" x4 F$ e0 g( O* Z    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
2 Y5 ?- h2 A* R3 O5 }9 g2 T    // Get the real handle
' @  [# O5 J% B, R) k    HWND parent_handle = (HWND)window_handle->GetHandle();* M* Q; E! ^, Y6 N* p8 |1 P  \
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!+ h9 K4 t7 D( C3 O
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);2 Y$ f. x" L' _, r: M& R2 r
    ASSERT(wParent1);" M9 a9 c3 ~8 e* T. ?
( R* Z+ q, G% V( ^* X, f
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
) v% @8 E6 c! |3 V0 G' L    AFX_MANAGE_STATE(AfxGetStaticModuleState());' R% i# e% C: R

. m2 E* I; p% y" L. c4 _    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, ) y$ j, ^+ t- U) H
        CRect(10,50,510,1810), wParent1, IDC_TREE1);
! x7 @/ E. x% f# W    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);; f. \0 u. i9 O1 ?) q! X
" O. p% @& S& T% j" s, R. x
    Populate(displayPart);
, y0 z6 d9 f$ k+ O" g: P5 j" I" d) P6 h& |
    return 0;7 ~4 D; w6 X; |" V1 L
}
* L/ b% W7 E/ b" r$ ]- \
8 `) ~6 D. ^% t# a2 X" F' g2 s; `//------------------------------------------------------------------------------( Y+ c) T4 _" G$ o& L
// getAttributes; {: a8 r, K3 m& Z$ Z
//------------------------------------------------------------------------------
. h4 p9 M& u" L3 H* u$ j7 o( M
游客,如果您要查看本帖隐藏内容请回复

$ r  i, ^5 K$ z% E8 R5 ~4 R3 ~
0 K7 x% I: A5 f. x. A8 Z
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了