PLM之家PLMHome-工业软件与AI结合践行者

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

  [复制链接]

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

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

admin 楼主

2015-3-27 11:17:17

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

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

x

$ q1 c! V+ N9 r" Z/ y- J1 ]

: Y% ?% F4 q* e" `4 J
+ f& R3 ^9 F: W$ i6 k- H
/ r) M( l0 v/ k2 S
NX二次开发源码分享:NX10可以直接对资源条进行二次开发: K3 o% K' R1 F! n7 w1 I7 S
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。! X) z9 F/ W# }9 D% f7 Y4 R+ n

' p$ v& v$ v9 L* `, G! \) A// Mandatory UF Includes
2 f5 {" `/ K' T, J  s: f#include <uf.h>
+ `. l/ c- K. Q! f
, J' h8 {3 r8 [+ D. P4 o5 L& j// NXOpen Includes
: F# c7 W3 G4 ^, d#include <NXOpen/Assemblies_Component.hxx>) z! G/ m4 m. ~7 S$ g) u' }
#include <NXOpen/Assemblies_ComponentAssembly.hxx>
' m9 h" [2 l- T0 [1 c0 P#include <NXOpen/ListingWindow.hxx>
5 c1 p5 Y8 x3 e& E6 C3 h: [#include <NXOpen/LogFile.hxx>
  F. s! r+ ^( W+ d! w; b#include <NXOpen/NXMessageBox.hxx>
' D; U  l% J# c7 B$ c; _2 S# }#include <NXOpen/NXException.hxx>; z; C3 R3 R) @8 ~3 m8 g
#include <NXOpen/NXObject.hxx>9 m; W3 d7 V" v/ V8 p5 O8 Y
#include <NXOpen/Part.hxx>
+ c' R3 ~5 O  M$ @& S#include <NXOpen/ParTCollection.hxx>0 L6 Z+ u" A- F4 L0 G- S
#include <NXOpen/ResourceBarManager.hxx>9 ~8 z; C& B6 K, j
#include <NXOpen/Session.hxx>
+ q+ h' C/ c1 Q8 J0 S: x( @( P#include <NXOpen/UI.hxx>) w0 ^! e$ I' N& L# v# m
using namespace NXOpen;0 g3 i4 Q! d8 x0 V& |# q- f
using namespace NXOpen::Assemblies;3 f- p4 d9 Y$ `4 @3 [/ G. E6 O

$ `6 O7 m. H) ?2 @// Std C++ Includes
' K: _0 h1 F/ b* i/ w1 _' E#include <iostream>9 k/ |$ h& N2 [% t6 Q" r/ s
#include <sstream>
) w# E9 a: j" G! ]#include <map>( t9 r) j" e6 {: |+ P; _. a. U/ F
using std::exception;6 N5 k/ P3 B9 N/ h, V) V) N9 q0 K
using std::endl;
$ \: [- H0 a9 e' {( Yusing std::cout;) ~% u' G) k0 V
using std::cerr;; B% h# E$ y7 w! U
8 c3 M& I7 S/ `  ^
// MFC Includes3 t3 j$ \1 E6 Q
#define _WIN32_WINNT 0x06010000
2 e4 M8 F- X# N- |- `# g; v1 P#include <afxwin.h>
" }4 ]" e8 H7 V$ I: K8 V2 O; y#include <afxcmn.h>
, f; ?+ n/ h+ K; s
: h6 t2 W% _$ K+ g#define IDC_TREE1   1002; N- }  ]" B2 h1 k2 I* k) b; ]; i1 i8 m

0 U. C  g7 o# L//------------------------------------------------------------------------------" X8 W, L, z. h6 C. Y) Z  ]3 @
// NXOpen C++ class
; J9 r$ v; S1 D9 h! q, O//------------------------------------------------------------------------------/ H" u: U- d2 S# R$ y6 j
class MyClass1 M( z: J% K) c& B
{
* N4 y3 c& n. f0 ~$ m// class members7 s& R# r/ ]% p+ |$ H
public:
- v# n  m# O2 a: Y: J% g" b( K    static Session *theSession;
2 l7 D2 F; w+ d2 {! I5 ^    static UI *theUI;
8 R: y& V5 y- o+ n    static int m_tab;. L2 [: b' U; P. Q; |9 I
    static int m_cbID[2];
) m  k2 ^  _8 I0 U% j4 p* B' a3 T3 p7 |" e; b. n! ]
    MyClass();
1 c0 Z8 @# a% V2 y& ~) C    ~MyClass();  e% n  n3 W  Q
& t. e4 q0 P7 {& }+ D
    void print(const NXString &);5 b# q8 T5 y+ t+ B! }3 n
    void log(const NXString &);
1 h3 [" g. A8 f" C: e4 ?' h6 a    void getAttributes(Component *, HTREEITEM);
8 I# I9 J: G1 u2 v4 a0 Q; x9 ]    void getComponents(Component *, HTREEITEM);
2 J  s  D+ Z( C) C- [. ^    int ActivationHandler1(int tab_id);. J; g, @0 Q/ _& ~( F1 Q. e5 n  f
    void Clear();
# c/ H; _  Z' Y6 @) ^3 G1 ]    void Populate(BasePart*);
. B) S6 B: a3 J  f' b  k  ?- ~    void cbPartOpened(BasePart*);" B9 d, H. M5 X/ ?' f6 E. c
    void cbPartClosed(BasePart*);
/ w. m6 u7 w. V! P0 A5 g) y6 b) L7 W, ^* z2 Y, U
private:
* O( V# T2 |7 h6 X    Part *workPart, *displayPart;* J: p  S3 t' U- y3 K
    NXMessageBox *mb;
1 {' Y  j, V0 y    ListingWindow *listW;
5 d: ]0 h- J) V- \0 H3 d    LogFile *logF;
/ {1 ^/ G+ m: G0 G9 v7 U$ H    CTreeCtrl *m_tree;
7 G# ]# M4 _! C. r( X( C$ U$ M* s2 W    CImageList m_Images;8 i% u# |- R' {2 i0 u# G
};
$ q% \3 m% P+ k+ q+ {% F
" P- H0 n) M# ~8 S' p//------------------------------------------------------------------------------
  J4 L4 @! v$ }- |6 y// Initialize static variables# q  f$ |: U" h" @2 N( d
//------------------------------------------------------------------------------. U# h0 D! T: K% a
Session *(MyClass::theSession) = nullptr;
+ t3 `6 E$ k" n# k7 ?# j8 n* jUI *(MyClass::theUI) = nullptr;* P" L6 I- \% A4 d8 G4 }- L3 P
int MyClass::m_tab = 0;) c  i* ^; w$ e2 u
int MyClass::m_cbID[2] = {0,0};
% m3 `+ G4 t3 |$ T5 h/ W; o7 {" a0 U% @4 H& {
MyClass *theApp = nullptr;6 V! Y* M4 v5 n+ A

/ E8 f: Q1 _4 t- T$ }6 e//------------------------------------------------------------------------------: k$ D. ~0 L; C
// Constructor
4 v% r7 }0 _5 z8 ^2 y//------------------------------------------------------------------------------
6 w6 T' O8 V$ \( j% k: QMyClass::MyClass()
. T; G# F% y( I0 J" r% S{
; Z% M5 D+ C: p' p    logF->WriteLine("GTAC: MyClass Constructor");
# H) N1 t: @- {- N1 F1 h4 r    theSession = NXOpen::Session::GetSession();& g0 e0 L6 g: \2 @7 t9 z6 Q; a
    theUI = UI::GetUI();
4 U2 S  j7 q& N7 t7 H    mb = theUI->NXMessageBox();  n& \( i3 @" B7 O) P7 l, y% L* p
    listW = theSession->ListingWindow();; g* T. g, M8 P
    logF = theSession->LogFile();
$ a; E  H* `7 u- z2 M7 R4 l5 P5 w- M$ Y+ }+ g
    workPart = theSession->;Parts()->Work();( @9 Q$ G) X8 D
    displayPart = theSession->;Parts()->Display();
  ^2 f1 J, j0 ^* R5 ~# t/ N/ C" s( J9 k5 J9 [8 J1 S
    m_tree = new CTreeCtrl();5 u( h* ]  Y+ b. W' [* x
8 d$ s; g9 w5 ]$ _; x
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);/ v# Y; J- z6 n' N
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
3 I+ t& a* Y+ Y9 X" m, N! b    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );$ m4 [# Q% U1 _; h/ [/ o+ U
- L' P3 [# R2 Y0 c
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
' ]' {) c0 F4 M- O) H& j6 T    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, 3 Q* y6 I$ v5 B0 h
        make_callback(this, &MyClass::ActivationHandler1));
) [9 ~$ H1 n7 d/ d0 Q    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);( ?$ w; c, A' V
- K1 U/ B6 A" y; @' h6 m5 d5 H
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
- D: C5 ?& I4 t$ I    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
7 Q) k$ ~  W; v7 I+ Z" S# i. }% v' M}5 S- }! [4 [) ~
$ b* W! \. `2 a8 `+ q: w4 k3 [* Z
//------------------------------------------------------------------------------
& x: l: G; W* C3 ?  o// Destructor% r% b" e) z3 L
//------------------------------------------------------------------------------; F2 v6 n* U- z) [; b
MyClass::~MyClass()# k4 g  v( k+ T+ J$ |" B4 l
{
: ?8 G8 U8 F0 @! i2 l( c+ D    logF->WriteLine("GTAC: MyClass Destructor");
1 G' f& J' @$ u6 i    if( m_tree->GetSafeHwnd() )
( T: N+ y1 o6 M4 n    {
% L. I5 b; q/ H* J        BOOL bSuccess = m_tree->DestroyWindow();
" x) x3 X; D4 O2 p    }
9 \. S. S' \# G) n$ Q& R$ l4 `0 U" E+ D0 M: M  E) d, p1 f9 t$ t
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
7 i' {) Q# _' {    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);' x; Y, }/ K- h7 T  L& B* O
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);7 \! {5 r  l2 @" I7 v

6 c2 A6 W2 y# t* ?7 s" ?- @}
( x, X4 U2 Z" q3 F7 F8 U" T4 e7 u: B' \: |# Q
//------------------------------------------------------------------------------
7 ~  V  r1 r, X- Q. S* g& i// Print string to listing window and/or syslog
, ~$ T/ _! q6 l/ |5 ]//------------------------------------------------------------------------------
+ h( }. ~2 Q9 O; Evoid MyClass::print(const NXString &msg)6 Z! }1 Z' {' j: D" b
{( d' \; E8 M( L
    if(! listW->IsOpen() ) listW->Open();
/ Y' b: T7 |; m' n# f! Y    listW->WriteLine(msg);  B2 V0 K0 K+ i& w- r- p
}* @: h4 h! f  e2 Q2 S
void MyClass::log(const NXString &msg)2 H6 f5 F4 h7 b, @. h0 V6 i
{
/ Y( l8 B% y; I' H0 w5 L    logF->WriteLine(msg);
8 s4 E8 x) B: W9 x* p9 k# Y}
$ ^" i. ~7 b. d' W* F6 }3 `* `2 q$ O( n1 O
// Callback triggered when opening resource bar tab
" X- }7 D- _2 B2 B: c0 qint MyClass::ActivationHandler1(int tab_id)
9 h% B5 c* ~0 Y& S5 y{
# G7 b7 X2 I2 Y# A3 r% L    // Get the WindowHandle object
, T* D$ m) b8 I1 _: ?) G5 j: D    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
+ N5 U( _: D/ _9 d) o    // Get the real handle
" y, p* e0 \- F4 z    HWND parent_handle = (HWND)window_handle->GetHandle();
) @4 `. @; t2 _9 ?7 [- n  l    // Get the CWnd object from HWND, FromHandlePermanent will return 0!3 P( m0 n% L: ^0 \( Y
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
" R& j  {3 \; s/ X* ^    ASSERT(wParent1);7 G, {6 z7 P, t% L. ?3 M$ N

, ]) ?9 p. {- L' G9 o! ]" o    // Switch module state to avoid Assertion from afxCurrentInstanceHandle: f9 ?' o/ W; y  d% p6 V
    AFX_MANAGE_STATE(AfxGetStaticModuleState());. U' G5 [" j/ v; ~

4 H2 j' A: w) C# B7 t    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, + Q% F/ m  K7 \8 Z  ]7 \* R9 ~
        CRect(10,50,510,1810), wParent1, IDC_TREE1);
2 g9 [/ d; K5 R    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);, U- f0 W( q3 m) n% @

& b/ L) _3 h2 W& s, i6 A5 h    Populate(displayPart);
3 U$ ]9 V- O# R4 i! f8 L8 B- q' U  L! C7 ~: N6 j; `
    return 0;' I! A2 v' J2 w( _8 R+ c  \" s: y
}- _0 ?; A" c3 W; L
0 [/ [& x- ?$ Q: ^% p- o: s8 P& |5 H
//------------------------------------------------------------------------------
& H/ f% {, D( F5 X( }2 j5 H# N8 ~// getAttributes
! `1 V- S6 V  K: J& v" T: D//------------------------------------------------------------------------------
: B' _! G+ r+ \% `. X6 C! e
游客,如果您要查看本帖隐藏内容请回复
$ i* F: F0 y0 S/ C* E! ~4 t$ e
2 K8 f! k. Z+ q6 d6 D
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复44

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

    我知道了