PLM之家PLMHome-工业软件践行者

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

  [复制链接]

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

2471

主题

1276

回帖

8万

积分

管理员

PLM之家站长

积分
82197
QQ
发表于 2015-3-27 11:17:17 | 显示全部楼层 |阅读模式

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

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

x

# o. D4 D3 |# s& C; _8 R' v
0 {, L  Q! P% z. K# L8 u0 E; j

( B0 e2 D. n# _

  n6 v  g% d6 g+ E/ Q6 g! R, tNX二次开发源码分享:NX10可以直接对资源条进行二次开发
+ B9 b9 q. p2 v, z0 x8 W: a$ c/ P这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
5 y2 q& y2 o6 b* s% j
! i0 z& C8 M) j// Mandatory UF Includes# n# \9 p5 n5 n4 G
#include <uf.h>
  a$ H' j% Y8 E8 J1 R$ b( M/ b* W  g. {8 ^
// NXOpen Includes
6 S' W$ n4 v2 _/ C5 u2 ^( T- m#include <NXOpen/Assemblies_Component.hxx>: E! t5 d  K8 S8 c$ A
#include <NXOpen/Assemblies_ComponentAssembly.hxx>
% E9 t6 Y- n9 T6 y2 L- t- ~9 |( G- |3 p#include <NXOpen/ListingWindow.hxx>" d1 q9 z0 A; Z1 K; ?
#include <NXOpen/LogFile.hxx>! C4 p4 r! A  B: b- t
#include <NXOpen/NXMessageBox.hxx>5 y/ ]! ?6 x- s, H; t
#include <NXOpen/NXException.hxx>% X" R! \$ E7 J6 v
#include <NXOpen/NXObject.hxx>
  _) m, H( Q% G! w  O' O#include <NXOpen/Part.hxx>( F; J  b$ N  u1 ~$ M" F
#include <NXOpen/ParTCollection.hxx>
# j4 C8 o5 w$ @3 A- c" o8 Z; o#include <NXOpen/ResourceBarManager.hxx>5 A" Q; P* E5 V- Q$ C1 C! F
#include <NXOpen/Session.hxx>) I' N4 a- S6 L1 B! X6 R8 |/ D+ L
#include <NXOpen/UI.hxx>
; o" E; k/ C- i3 t' C  z0 Jusing namespace NXOpen;
; X& o) ]( O% _- ?4 q* S7 z/ Dusing namespace NXOpen::Assemblies;
2 e$ D: m7 W5 V6 O. X1 e2 N
$ t8 Z, [& ^. n, |$ E6 s// Std C++ Includes
9 d3 \9 g; N. N  p' I' q8 U. [#include <iostream>% Q8 E2 [5 i) ?( B
#include <sstream>8 d: F% l# ~; g& Q9 i& d4 y6 W
#include <map>" g# ~9 _! `1 F* w# M2 `
using std::exception;  i1 d1 Y: P6 }
using std::endl;3 S7 }2 }1 Y& Z# Q* z7 C
using std::cout;+ Z+ p3 U, Z0 p5 V% \2 c" k$ Y0 ~
using std::cerr;$ j9 t! P, K0 U: D! ?( `% U
. }. R$ j# ~+ b5 ~. M! a  H# E, L
// MFC Includes( t& ?6 U, |# t' m  T" ]/ `: `
#define _WIN32_WINNT 0x06010000
0 b: R- i/ @: K& K#include <afxwin.h>* g6 X( M9 `) G" n, K9 `( Z
#include <afxcmn.h>
( H  e! p9 m2 V, }2 h$ B% b) W0 Q* T  h
#define IDC_TREE1   1002
8 D% B" n- v7 ]' J* j
' ~+ f0 |. Y) o& l9 d//------------------------------------------------------------------------------, v$ D" J5 M% _. h+ F+ n
// NXOpen C++ class
$ i! M' N2 n1 m, _' N8 \//------------------------------------------------------------------------------0 e1 P/ z; Q* ^7 C5 d
class MyClass1 X/ v! C8 ]0 Q; r' e; ]
{6 t: d: Q4 G( O* C3 j2 q0 a
// class members
3 L+ p- o3 n3 {9 Hpublic:- T) \" N: l( t8 K
    static Session *theSession;
1 Y9 b- D7 |9 f: A$ E5 }    static UI *theUI;
7 J% G" V4 m8 h: \; ^    static int m_tab;
0 a5 O# D- L: _0 I' Y    static int m_cbID[2];. I4 q7 W# A, K; N
( J7 }. ^) r  P' E2 z
    MyClass();
" r5 J$ P6 t# b2 i    ~MyClass();
0 k. G- G; E! f' T: p8 ]' |- r
9 l. z8 N* }$ X9 n( U7 X; [    void print(const NXString &);9 @* l2 ^; T) O" ~
    void log(const NXString &);; y& j) h5 B. z  ]  L% |
    void getAttributes(Component *, HTREEITEM);9 q$ `9 ~* K/ _+ \+ L4 y; K
    void getComponents(Component *, HTREEITEM);) Q5 M+ A& q% a* {: }. M( ]
    int ActivationHandler1(int tab_id);" u3 R/ W$ E1 a8 X5 u0 V9 f; T2 N1 c
    void Clear();
9 L$ k" s. ^. i2 [* D    void Populate(BasePart*);
2 W! K" k; W' d8 r    void cbPartOpened(BasePart*);; E' x5 B  ?! J( U$ N( W$ l* U
    void cbPartClosed(BasePart*);1 Y" A! ]7 e- M3 r

3 |- J/ @- C* ~  K6 V1 c0 z5 x* g$ Wprivate:. Y7 B  Q; x; \1 b
    Part *workPart, *displayPart;
2 F2 K, b+ Q8 e6 o& _+ B; E8 Y5 l& O  C    NXMessageBox *mb;7 p5 v3 }! ?. q
    ListingWindow *listW;! F3 H1 V1 G5 D
    LogFile *logF;
  E6 [& S+ ^9 D    CTreeCtrl *m_tree;
+ B8 `; R* g7 y( \; b: X) R    CImageList m_Images;- @/ i* e4 k0 g" O) I' w2 e) M
};
9 s+ g: U+ ^  ?% M1 q
, }6 w! u  {0 R4 U+ B//------------------------------------------------------------------------------
' e4 _: l% X  I; y// Initialize static variables# o/ B/ ]& w- l6 P! z% K. g
//------------------------------------------------------------------------------' J2 Q5 |( E: N9 I6 ^' W9 o* @
Session *(MyClass::theSession) = nullptr;
: Y. w' U8 q0 N9 _$ d( v' rUI *(MyClass::theUI) = nullptr;  E+ ^; l7 {# Y# g# ~. t! u5 k3 V5 ~
int MyClass::m_tab = 0;4 d8 A$ X6 z4 A' P, k+ Q
int MyClass::m_cbID[2] = {0,0};5 D2 C$ `& ^% B) L" n$ H5 w
& E  l6 ]( X6 k( B1 @
MyClass *theApp = nullptr;6 g9 }4 ~$ A* k2 |# ^

  }+ K0 d. ?, l' W) u7 J2 l4 z//------------------------------------------------------------------------------4 \: {0 s' K; J2 x
// Constructor / Y$ u2 a1 h, X( _0 z! y, I/ U
//------------------------------------------------------------------------------* X: J/ Q9 s3 b" J
MyClass::MyClass()
* c, d, \+ m% |2 i6 u1 f2 y2 m0 I{: D# F6 U) N) W5 S  S
    logF->WriteLine("GTAC: MyClass Constructor");9 w" I: R- Q! `. _/ ^
    theSession = NXOpen::Session::GetSession();4 |. c. S2 L' G$ J8 S
    theUI = UI::GetUI();/ x7 u  G- k7 D3 z* @
    mb = theUI->NXMessageBox();
) ^7 c+ @4 o7 c- u    listW = theSession->ListingWindow();. |% ]; W, c6 [" f# Q* z
    logF = theSession->LogFile();7 ?3 i5 y" k  ?  ?- e
& ~& N# J( N7 T9 E5 d8 L4 z2 T' C  v
    workPart = theSession->;Parts()->Work();/ N" I3 g3 ^4 B* c& k  Z3 d
    displayPart = theSession->;Parts()->Display();
4 t& p# s9 N1 Y4 Q+ ]
  U7 }" U' M1 i/ r    m_tree = new CTreeCtrl();
6 g/ G, U: _  k
, k5 K. e+ K0 V* d7 ^& p2 w& z, T    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
4 K$ M9 F7 i# }; C    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );$ f. d3 |1 q0 _, `* b
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
" `7 O& R3 |6 w; o6 @/ B: S! l2 B6 X" \9 ], k: V2 ~$ ?
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
% g& o8 n2 b9 u- O    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, + j. Y" J7 L3 i9 l* ^% L
        make_callback(this, &MyClass::ActivationHandler1));) s( c% k$ R- t" c
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
4 F9 ?, Y: {) x/ }. T4 Z* j' t$ J# D4 _$ H- }! Y
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
, w8 K5 d+ S. O( E# _$ @; X    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));$ O$ X0 C9 z* A5 D
}8 _- S: |& l. A! y' i% c) t
7 e3 L5 ]7 S! u0 v% p
//------------------------------------------------------------------------------* O/ V2 {8 L4 Q
// Destructor, f/ W& s5 p# d" d9 m: k) [$ ~* Z
//------------------------------------------------------------------------------
! I0 U0 s( @4 a: |# q) qMyClass::~MyClass()' C: c1 Q1 }: ~' K
{
; Q% q1 `  H; @% f3 w' H5 v) g    logF->WriteLine("GTAC: MyClass Destructor");
3 s2 v( ?2 }8 k4 E9 h2 u8 d- W3 q    if( m_tree->GetSafeHwnd() )
5 K9 m# ~9 o* {    {' K1 f# Q3 I) `* \# R% @7 B
        BOOL bSuccess = m_tree->DestroyWindow();9 I! C: C2 E2 M8 ^
    }
( F' p( d! C9 U4 c, z! Z; v" V5 ]8 Y. G+ ^5 [
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
6 X8 [  q4 y! X8 T    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);: J5 ^% D( Q9 }( v* O' ]
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);+ O* D3 `" i( g; S% z
: ?8 q! ]6 v1 A2 t& Z/ ^6 a7 D% H
}, i8 }4 D) C6 W1 F: h/ @5 n

5 S1 S% }0 L4 A: H  K//------------------------------------------------------------------------------
5 V7 e% t) y3 Y5 V// Print string to listing window and/or syslog
+ `* `( W0 H( j7 A  W" c//------------------------------------------------------------------------------
! w) L+ j- F$ t1 Fvoid MyClass::print(const NXString &msg)7 X9 K4 x8 Y! t# D) M3 ]
{
; i9 @6 ]3 T! l* h6 ~% ~2 J    if(! listW->IsOpen() ) listW->Open();
! K# A; z$ l' T3 {    listW->WriteLine(msg);& @3 M1 K  m& x( L9 t
}
. G- w' @9 U$ {' cvoid MyClass::log(const NXString &msg)6 v* ]$ E" l3 T
{
2 n- T, b1 g% V4 ^5 D( d0 q, o    logF->WriteLine(msg);& _2 J. p; |* `3 t
}
" ]; x9 a1 w- {$ Z& j9 }; z. A; n1 f5 A5 G3 |7 L
// Callback triggered when opening resource bar tab
8 p9 y5 y/ k# v& vint MyClass::ActivationHandler1(int tab_id)
2 u  z3 a' B8 f3 R9 [{
! G4 H3 _  M" I/ l    // Get the WindowHandle object
; u0 V6 u; g! x" g/ z    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);0 h2 M5 D3 L- z# N) e: _
    // Get the real handle
  l) L4 f1 w  n8 k2 d' s    HWND parent_handle = (HWND)window_handle->GetHandle();
2 S- A0 N. k4 K& Q3 |7 m: c- I    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
3 S: k2 G$ e; O/ E9 Q4 {    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
! T. b2 J' t) {1 N& T' ~    ASSERT(wParent1);0 _  P9 `/ A8 a  X& Q
" Q, U8 o) y1 _/ U9 ~, y
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
6 `1 ?( A' \1 f: G& d* g! `1 [    AFX_MANAGE_STATE(AfxGetStaticModuleState());. q: X; j, z" U5 p( I* x+ y* z/ L
5 H; @+ I! S  E1 T! d. P. M
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, 0 H+ d4 \5 q3 J0 Y
        CRect(10,50,510,1810), wParent1, IDC_TREE1);
3 V; G5 x& X2 @/ f0 l    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
, {, {5 w3 x/ j/ s/ i9 @
/ e, `) C; V; ]# U/ E    Populate(displayPart);; d3 A. \0 w7 B) A" a5 D
0 j( b5 ]4 P  \4 l4 R/ h2 q$ X7 V
    return 0;
+ m5 W2 U/ X$ d; i2 t/ ^& y}: j% u0 N( S* I( a# V5 d

: _! Z+ R1 e! z# O//------------------------------------------------------------------------------, y# S: Q# N/ i9 O5 G
// getAttributes( |5 G$ x$ H4 @8 I0 B8 `9 \& e( q
//------------------------------------------------------------------------------
# t# I4 ^6 Y; E/ s9 C# r" g
游客,如果您要查看本帖隐藏内容请回复

. Q& W; I4 u  I% [7 W
; `6 \6 s9 f8 e2 i- `" ^
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复44

0

主题

4

回帖

20

积分

新手上路

积分
20
发表于 2015-3-28 08:52:40 | 显示全部楼层
二次开发完全不会啊
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

28

主题

60

回帖

530

积分

超级版主

积分
530
发表于 2015-3-30 11:24:29 | 显示全部楼层
我想看看,进来
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

2

主题

34

回帖

505

积分

高级会员

积分
505
发表于 2015-5-24 12:02:04 | 显示全部楼层
看看,这个好像很牛的样子!
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

3

主题

53

回帖

551

积分

高级会员

积分
551
发表于 2015-7-26 01:33:35 | 显示全部楼层
谢谢高手的分享哈
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

3

主题

34

回帖

203

积分

中级会员

积分
203
发表于 2015-8-12 14:24:53 | 显示全部楼层
学习学习学习
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

0

主题

31

回帖

409

积分

中级会员

积分
409
发表于 2015-9-15 21:49:29 | 显示全部楼层
ddddddddddddddddddd
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

0

主题

28

回帖

152

积分

注册会员

积分
152
发表于 2016-3-8 12:00:27 | 显示全部楼层
卡看看 阿发撒旦法撒旦法
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了