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

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

  [复制链接]

2016-3-8 12:00:27 21773 43

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

admin 楼主

2015-3-27 11:17:17

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

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

x

3 A0 _0 m& S/ e) ~5 G- B0 N& q

0 W6 W0 J0 m8 Y& L& @7 p, W1 M# h: s! k7 ]6 `

7 Z7 K# O0 o+ T7 ]7 Z& xNX二次开发源码分享:NX10可以直接对资源条进行二次开发
0 c' F! l) F$ U" w" A  T+ X+ D/ ~这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。. c% K* @6 w: |& }4 X
; `& Z( R/ A' c! b  w$ c. p
// Mandatory UF Includes
0 ^+ T4 T, n% v  N9 X0 l#include <uf.h>! B' l: x. V: Y0 D( ^* M2 e  M' R- J

, }. g4 k2 [' I8 k// NXOpen Includes
* X3 v: d$ y7 G) |$ o#include <NXOpen/Assemblies_Component.hxx>: w/ K& @8 ]7 q" i
#include <NXOpen/Assemblies_ComponentAssembly.hxx>: w- U6 N  }; x9 @  `+ }
#include <NXOpen/ListingWindow.hxx>' s3 A8 N9 [* E% W; D
#include <NXOpen/LogFile.hxx>6 X6 J5 u! X5 j
#include <NXOpen/NXMessageBox.hxx>
! I8 ~, q" {2 @  z1 |#include <NXOpen/NXException.hxx>7 }; X$ m( r4 x* V
#include <NXOpen/NXObject.hxx>
6 P$ S, t( {, F3 N3 r1 _, J7 V#include <NXOpen/Part.hxx>5 o" v' F. T/ ?' \6 T: Z& q, J
#include <NXOpen/ParTCollection.hxx>; h) m3 q3 [% s& K' I
#include <NXOpen/ResourceBarManager.hxx>
/ N' Q# c! K3 m' D& r8 m- X# @; G" I8 r#include <NXOpen/Session.hxx>- e" d8 p4 f5 N, ~6 }# f4 w) J& v- |
#include <NXOpen/UI.hxx>
! L0 G9 l) Q+ a, r3 D0 rusing namespace NXOpen;
8 ~( D, w3 ?' B; ]using namespace NXOpen::Assemblies;7 V1 A) b0 g" k  d
1 P& E; h$ [& S% i
// Std C++ Includes
% h7 G, _5 b$ H# B% g' O3 x% f#include <iostream>! @8 _* L7 e( n, D- k
#include <sstream>8 ~" O( y2 |* S% u
#include <map>6 x2 e* t. x" g
using std::exception;( c8 G% B& A" e7 c1 |/ q3 T8 }& i# j
using std::endl;
, C1 i* W! G) L$ z' y: }3 Vusing std::cout;
, V" N% D9 i, O' {using std::cerr;
5 E0 m# N$ L2 B, R
) t! Z1 d; [' X// MFC Includes
9 n8 @4 F9 u" w1 w* k: R#define _WIN32_WINNT 0x06010000 , y8 x1 {! [: |( d8 h" V- g2 |
#include <afxwin.h>
4 R( V6 X, s% a#include <afxcmn.h>9 L& w7 a: P9 s
' q5 D! O' T: s5 `
#define IDC_TREE1   10026 H# U. ^" S$ s  s
* L& T! \- W2 n
//------------------------------------------------------------------------------" r. u" d# |7 P5 w: v
// NXOpen C++ class
' C% m8 s; ~& j//------------------------------------------------------------------------------
8 }6 C2 T, `, zclass MyClass
4 i8 z& K1 J( @. ~" `5 l( l{. E9 x6 _$ ~0 V3 t3 R4 b" b& y
// class members
* H$ H& Q+ {, l+ a( npublic:) T$ T) s& R, W- U) v) l2 q# r
    static Session *theSession;
8 g2 L7 x. }4 G5 I! p1 c    static UI *theUI;
9 b: w' @+ s% w+ H$ l- X    static int m_tab;! R0 j% s9 l1 Q. n8 ^7 m
    static int m_cbID[2];
! K; E4 O  u$ p9 w% w) {) N. [& S9 y
    MyClass();
: Z) {& S8 l, ~    ~MyClass();
5 T" e* J% U4 U( k8 r
- I2 b+ d" I4 s  u+ R" Y5 p" k    void print(const NXString &);7 ~3 r- d) [& V7 {! K" r
    void log(const NXString &);% k8 k: ]; m/ ~: i
    void getAttributes(Component *, HTREEITEM);* h9 u" I! i( t
    void getComponents(Component *, HTREEITEM);0 n# |& U( B5 S; _& J# [" D" C
    int ActivationHandler1(int tab_id);
! O5 @" c6 D  G* U+ R! d    void Clear();+ t5 f; H. z0 V* D
    void Populate(BasePart*);6 L6 }' D$ E/ s0 {2 Q! P9 t
    void cbPartOpened(BasePart*);" H; ]8 J( ~& t
    void cbPartClosed(BasePart*);: Y. ~$ B/ Z  ?- a

5 K; A/ w2 {; ~/ w# vprivate:
  V. |: L3 e% v6 F  }7 s: u3 f    Part *workPart, *displayPart;
- y! H/ E% M; S& Z" J    NXMessageBox *mb;+ M- L$ U8 ], f. E
    ListingWindow *listW;
, n$ {& l, A% E6 [+ z, c: W    LogFile *logF;( a3 }4 M' B4 w3 Q
    CTreeCtrl *m_tree;
9 C$ K- d) G$ G- `6 U+ z, X1 K# U2 G) s, x    CImageList m_Images;# b) Z$ y3 a2 B
};* {; P% X) B' F2 F3 z

% j! n2 ~& @7 |& R& k( u7 Z; p8 E3 m//------------------------------------------------------------------------------  U- y3 z, f0 b
// Initialize static variables
- l/ k" d2 P: v3 }//------------------------------------------------------------------------------/ C0 C6 S3 ]4 l! n' X$ t
Session *(MyClass::theSession) = nullptr;
6 e  m+ P% A: i' t$ S$ G; lUI *(MyClass::theUI) = nullptr;9 I, V) C& g4 f- K: q
int MyClass::m_tab = 0;
, d/ o! {, B! \int MyClass::m_cbID[2] = {0,0};
8 T3 j0 X1 X2 O& H; ]( f. J- [
3 N9 e! a: @& ?* c  ?MyClass *theApp = nullptr;7 t( R* }9 O! Z. a+ E
: H3 R8 C: p- N4 e5 l; ~9 F
//------------------------------------------------------------------------------
3 P& Z! M: J5 ]& L0 N- {& A// Constructor / ^% }& s  C1 @( d% a+ i# x
//------------------------------------------------------------------------------; a) y8 x& C" o  i9 m" K4 _; b* j
MyClass::MyClass()* @- ?9 }6 w8 |% X7 X" H3 ^7 ^
{: w/ u- |4 t! m) _
    logF->WriteLine("GTAC: MyClass Constructor");
5 ~1 L$ Z) @7 l% I: v    theSession = NXOpen::Session::GetSession();
1 r: V# _$ _  B) ?2 d4 l0 P4 \( j$ M. B    theUI = UI::GetUI();0 i) |# o; a; s# R# h
    mb = theUI->NXMessageBox();' g/ J( L' f% E
    listW = theSession->ListingWindow();
5 {2 B. N1 D: v- t* E8 F    logF = theSession->LogFile();, x( R% q6 i8 h9 n( [- H3 U/ E

6 G6 P( V3 F- j    workPart = theSession->;Parts()->Work();/ T% m( P$ r. ^2 d
    displayPart = theSession->;Parts()->Display();7 [" U- V" w6 ?& {7 X

. Z  n1 T8 F/ m! S    m_tree = new CTreeCtrl();. ]! z; e5 I; c% R/ w  r) N
6 V6 x5 w1 w/ }5 w: B
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);! }- a( W. r* C" H8 R
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );% G3 v5 ?8 Z8 a6 F+ P5 }
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );% G6 D* x: M% `1 H  a- W

/ M/ m, r% V, G% F    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
) m0 E6 S9 K+ X3 z7 r' h2 m& O. u    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
  Q, A4 |- [6 v' m! v        make_callback(this, &MyClass::ActivationHandler1));
9 G6 _+ u5 ~) A: j4 `. n' C    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);2 X  w) y1 ^. h6 S) t6 ?7 ~

" j6 D  m0 P: X; |) y" A$ P0 J    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));  A+ @9 n7 R% c0 i6 g: {9 K
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
" R5 g! @) {3 `3 I}8 z4 x, n  L" H

0 a) c! @, b1 F' D  \  y/ K+ L//------------------------------------------------------------------------------
' M% C( b5 \7 z// Destructor
3 J: @  |. ?! Q  f: B# J8 [//------------------------------------------------------------------------------
, h/ t0 I. ~( \$ y6 eMyClass::~MyClass()) l$ W' v: a4 S$ Q& l
{
" \7 J. y5 W1 V+ E    logF->WriteLine("GTAC: MyClass Destructor");9 }0 `( h1 N+ m$ \2 R
    if( m_tree->GetSafeHwnd() )
3 Z% I+ Z6 d1 B* y# x( l. `1 \2 c    {7 E. y, z# V# o8 K: P. O8 ]
        BOOL bSuccess = m_tree->DestroyWindow();
3 a8 p3 T( e3 x# N" ]. K    }3 _& X$ E* S6 ^5 y+ {) g( j/ E
; ^" H  d6 H9 U0 c+ p* n
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);5 M& N6 Y7 u% I$ c- y
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);6 M$ _+ W9 `2 ^2 T, D. |& t
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);$ T8 B4 w* V% V) H9 n
0 S1 N4 E, y3 B" Q4 l5 s3 V  E
}8 }* V4 V( s5 z2 s% C4 F  t

8 n% Z9 B9 N% O//------------------------------------------------------------------------------
- M% K: s( F; k4 K// Print string to listing window and/or syslog0 W, O9 I, }  i0 X0 A" J9 d
//------------------------------------------------------------------------------
3 H' b5 t4 W2 q$ Z; U$ pvoid MyClass::print(const NXString &msg)% z1 i# `% s0 Z& W
{* H4 {  |3 i6 `. |5 e$ M" P
    if(! listW->IsOpen() ) listW->Open();( ?3 [& @6 y9 \+ T
    listW->WriteLine(msg);8 v3 [& k0 w& p
}( t; L3 c4 J2 J2 ]" F+ t( [
void MyClass::log(const NXString &msg)/ [! \" R" g% w  @7 o; w
{3 {) a7 D6 \/ n6 |7 f: j/ D' s
    logF->WriteLine(msg);
, L! T# \$ i: q: B2 S, C3 i. F}) j" N/ S$ S/ p0 @. I( o. j
6 O. |4 t0 U' O. a! i
// Callback triggered when opening resource bar tab( |  l+ d1 c/ v
int MyClass::ActivationHandler1(int tab_id)
" j5 i  _& i: v. g' i{
: |! `+ x9 q, O6 i% f0 e    // Get the WindowHandle object
* ~" H9 S( n" W3 w! {0 f    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
+ ~( A: Y4 }8 y5 s/ v* E; Z' o. l    // Get the real handle
$ X! B/ b1 W, S* t    HWND parent_handle = (HWND)window_handle->GetHandle();4 ]; s+ s+ h1 {/ K3 }/ p
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
, Y2 f/ c( M: _! W    CWnd *wParent1 = CWnd::FromHandle(parent_handle);3 f7 n! h6 `: [' E$ R
    ASSERT(wParent1);9 `/ a6 @; J8 C  u1 J
6 M1 P( B' H3 g6 m. X
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
" e9 P" R- t1 d8 z/ V    AFX_MANAGE_STATE(AfxGetStaticModuleState());5 i( g3 q* J( L: @" N" N, Y

$ D" q4 {5 }6 w2 J+ t$ R' }5 ]4 ^    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
2 @# _) ~; q$ C9 o3 Q        CRect(10,50,510,1810), wParent1, IDC_TREE1);0 _( r- h6 ]; K- C0 y. G' y. x. i$ L
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
9 H- e8 n8 Y1 Q" R) U1 L# y% O" Q( F
4 O( |/ x1 k. J/ x. N" Z    Populate(displayPart);8 W! g: Y. n- X) A; H8 x

" F" u5 p1 ]4 M& a; p: F* R4 F. u, U    return 0;1 X$ z# y! @% a% b
}5 n; X/ U5 \7 {( L8 p

0 m# t. Q- ~2 A, A//------------------------------------------------------------------------------! ?9 s2 F/ b* ~* b/ h; |
// getAttributes
. I; I6 |7 _. M//------------------------------------------------------------------------------
3 M0 D1 b6 j8 I" ^! \9 B
游客,如果您要查看本帖隐藏内容请回复
- `! h2 N. U* n2 ~/ F2 N

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

使用道具 举报

全部回复43

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

    我知道了