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

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

  [复制链接]

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

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

admin 楼主

2015-3-27 11:17:17

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

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

x
% \5 r; g* ~1 d% v

+ A: j3 @. @9 F9 R
! v; T: `. G- B0 F" J7 B

+ Y% Q% w3 s4 m+ vNX二次开发源码分享:NX10可以直接对资源条进行二次开发
, x2 `$ X* L; T- Z1 i8 S0 h这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
4 |' S$ N3 D# a( X/ J5 J' n' a
# s% j+ ?" m% }% c// Mandatory UF Includes
% J! z7 u2 l: @# g1 {5 P: \8 \#include <uf.h>9 L+ ]3 p5 {" s% Q' u

* \+ X6 p0 D: e4 P) [// NXOpen Includes
2 u) `5 g+ h' Z2 R5 K0 R) g#include <NXOpen/Assemblies_Component.hxx>
: w3 k8 o5 N6 u; j8 i  A5 |#include <NXOpen/Assemblies_ComponentAssembly.hxx>) Q9 C; _+ R  ?! {3 D% d
#include <NXOpen/ListingWindow.hxx>
1 R: s2 l7 n; B) T9 Q7 J#include <NXOpen/LogFile.hxx>
* o% ~- ]" w2 n/ W$ ?6 V#include <NXOpen/NXMessageBox.hxx>* V/ ^8 D, j2 b2 ~# v4 ^
#include <NXOpen/NXException.hxx>
7 a: ?; x0 W* s7 U4 L- i, S" o9 N4 G#include <NXOpen/NXObject.hxx>
; T6 j7 u7 ]2 V! X' {#include <NXOpen/Part.hxx>% Y+ C& s" ~5 m. W; S% @
#include <NXOpen/ParTCollection.hxx>
0 r$ M, D# ]& i1 A6 S# K#include <NXOpen/ResourceBarManager.hxx>% ]* X7 N6 `+ t$ Y$ v' ]
#include <NXOpen/Session.hxx>8 F- z6 S0 C$ V/ f; g( m* U
#include <NXOpen/UI.hxx>
7 G# e8 r* h* D; f# {, K, o/ Qusing namespace NXOpen;
! ?; S* ~$ v: V: pusing namespace NXOpen::Assemblies;
+ y) {5 j2 T) r* T" G
/ Q: p0 @8 M* n* |% O// Std C++ Includes( }& J; [& [1 m) r% E+ P
#include <iostream>+ \' p5 D; X3 P  a6 \/ p2 Y
#include <sstream>1 A8 D7 ?7 m8 D
#include <map>
$ l/ F4 ^) S# G. \4 Yusing std::exception;0 t; A: Q8 o; K5 k6 Z1 P: ~
using std::endl;
; K$ j% [) H3 o7 S8 Eusing std::cout;2 ]6 {/ {8 Q' P! H( m& K* e& J
using std::cerr;1 b6 q* D+ F8 T" P5 x3 Q

% R' w0 y1 m; M; I7 C// MFC Includes
# Y( R3 Q& e! z4 h5 [& ?#define _WIN32_WINNT 0x06010000
, O9 P9 x; n  R$ ^, L' Z#include <afxwin.h>
$ B1 k4 P, p* X' e  V4 l! k#include <afxcmn.h>7 H& ]* o& l, \5 Q$ k
3 e% m- M# Y* A7 V8 N6 ~
#define IDC_TREE1   1002& I( h- }* C& _' g. }6 O

, W$ m4 `0 I7 {0 ]: Z# F: f4 I" h//------------------------------------------------------------------------------8 q3 w* w. D2 K  d& {7 K9 G
// NXOpen C++ class
$ I7 V4 v& H9 x) H//------------------------------------------------------------------------------
0 d. O8 C# t( ^: ~class MyClass- _. h1 b- k9 d$ E
{
$ c" g. s- d/ k6 G2 i7 Q// class members; `& U% i0 r5 k; r1 w0 b  d
public:
9 `; {. ?  D& ~    static Session *theSession;& b5 q! v2 d% n6 C$ k0 q! u
    static UI *theUI;* Q& s$ A, u2 x7 {7 }
    static int m_tab;3 J6 m* t# k1 V+ }  j9 U
    static int m_cbID[2];7 }0 e! _3 Z/ ?; ^

3 m) o$ Z3 K! o1 w, ], \2 X% r    MyClass();
3 N9 K& W  c  d; `    ~MyClass();/ D" A# }4 f) A5 e# Y4 T
3 }" R4 l$ f' F8 R: ^4 p8 k8 }$ j2 S
    void print(const NXString &);
& c) B5 Q* q, b1 x% @. [: {    void log(const NXString &);, ?4 t) H# o; c- _) j
    void getAttributes(Component *, HTREEITEM);+ v" u) n' g5 }9 S# o4 A
    void getComponents(Component *, HTREEITEM);) C. e& k( H$ E4 e0 [1 p0 D
    int ActivationHandler1(int tab_id);
4 Q* g8 v1 W/ i  u" J: Y    void Clear();! h1 R! U0 e7 B) A0 N( c
    void Populate(BasePart*);* |$ S! X4 I4 |& Q
    void cbPartOpened(BasePart*);# K9 p4 e5 N% L+ p7 K$ p& X
    void cbPartClosed(BasePart*);
- _' o+ u$ j9 {* X( q( n! g
+ y) K! x2 U+ ]3 i/ j1 D) Fprivate:9 i7 \; l% Z& X. W# H6 h
    Part *workPart, *displayPart;
. G+ B1 c, {: a1 W* s  Z  O    NXMessageBox *mb;/ m& K8 S6 a/ `
    ListingWindow *listW;
/ J9 s5 b- u  t( `# t- C    LogFile *logF;
. P: B6 a: v: o2 r% I( H, Z. n  j    CTreeCtrl *m_tree;
9 T3 f! h3 e) a4 {    CImageList m_Images;
+ D7 o$ J; ?6 m" E6 ^7 s: a" x; e+ {};7 I+ U. F( j! t; l! z- M

1 _7 s: J7 V- C; Z//------------------------------------------------------------------------------
0 S8 k: r& ?4 s8 o$ ^// Initialize static variables
. Z, o" t4 |8 q//------------------------------------------------------------------------------+ a6 A2 P1 I8 G5 p# \4 W
Session *(MyClass::theSession) = nullptr;4 E; U5 Y/ w: |" I3 s8 H
UI *(MyClass::theUI) = nullptr;
' B. r+ H7 E! I5 K; Aint MyClass::m_tab = 0;
; q2 _! O" J+ zint MyClass::m_cbID[2] = {0,0};
% m; q0 U9 M$ |3 I' q/ O& p- Y) G* w. c2 S
MyClass *theApp = nullptr;
8 _& W3 ?% @8 U' N% h" |. _$ _8 t3 B" q8 N* g0 ~' _
//------------------------------------------------------------------------------- I0 Y9 N% a- d" d9 M3 C& o7 C7 E% U) T
// Constructor 6 j5 O: @0 M, Q. ?6 P
//------------------------------------------------------------------------------
; ^4 H! E. v! VMyClass::MyClass()
- i6 p9 g6 @+ @: ^; G/ r{) R; C( @6 p% J; L$ a# w/ x3 G# S
    logF->WriteLine("GTAC: MyClass Constructor");% _2 M/ `9 K7 ~  L1 S; _$ c$ j9 c) M
    theSession = NXOpen::Session::GetSession();0 S' ^, p4 x# ~; v0 ^
    theUI = UI::GetUI();) {8 M" {, I" F+ j  Z+ [1 h8 P
    mb = theUI->NXMessageBox();
2 h: n/ t. ~/ G    listW = theSession->ListingWindow();
9 D" c# r/ B! Y. x( [    logF = theSession->LogFile();
5 l. V% n" [8 @1 ?2 c2 l: m, d& H4 C. N3 z; y; F$ U' o9 G, g
    workPart = theSession->;Parts()->Work();% w* V, T8 g. [* s$ ~1 }0 ^5 o
    displayPart = theSession->;Parts()->Display();/ T3 o. ?' A$ Q- t' O( P

2 O) Q1 o1 Y/ |/ i9 ?3 ^    m_tree = new CTreeCtrl();7 ?: |6 L7 `4 G) S" u
" `, B/ Z, n, ~
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
, o  b0 c$ W) L    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );* a2 `# e5 e  [/ |+ L- J( s
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );6 [( C2 ~- @  k$ @; ~: n/ f
4 g% T7 U" W3 k# `; h* F
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
, {7 X, G: \" n' u) b    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, ; A1 c9 Y5 `" o3 N8 s, ~: {
        make_callback(this, &MyClass::ActivationHandler1));: b# Y9 Y9 t+ A
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);* I. P+ M# z% R# E+ d: ~* z
4 r" c( I- X7 o
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
* X+ `1 T2 N/ d, W    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
8 z, M) J$ b- p}
4 o9 N6 H$ Y* |8 f* G2 d3 A  r7 `" J" {7 ~; s# c$ d/ d
//------------------------------------------------------------------------------
6 ?5 Z4 S$ _; h// Destructor0 Y& g4 b0 O* s- k
//------------------------------------------------------------------------------0 F5 M' u: L/ Q0 V
MyClass::~MyClass()7 t- k, i$ R* |' h4 B) o* d
{& N# `. D' s4 f" W7 m5 l' s* B
    logF->WriteLine("GTAC: MyClass Destructor");" g. k* U' S- w0 e% Z1 J2 T
    if( m_tree->GetSafeHwnd() )- G$ R( o; o! L& J
    {
: V( }" g5 V+ \- N' Q" `        BOOL bSuccess = m_tree->DestroyWindow();& h3 @9 b) O- ~9 [
    }
; ^5 E9 I' U+ `3 s2 c
6 l4 }5 ~( e, B: `8 M" k    theUI->ResourceBarManager()->Destroy(theApp->m_tab);" [7 l7 }6 I3 e
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);( a1 B! z3 s- U8 s* l8 G7 D) [( n9 J
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);8 q6 W  S7 p% O
& p6 p: x- ]' M# K  M  H- S
}
. _5 W: v8 j1 u- ?1 X8 V7 p2 g6 P0 d) u4 z" Y9 A/ y) d- D3 g* H" g1 S
//------------------------------------------------------------------------------
; g/ `0 m  U0 u// Print string to listing window and/or syslog1 e6 u2 g1 e# H# v8 U; i# x2 l
//------------------------------------------------------------------------------
5 J2 r( d- T5 bvoid MyClass::print(const NXString &msg)" v  h1 r. }0 X% Y9 P3 [" F
{" ]; {. R2 R* Y2 ?6 f; K) J/ ^
    if(! listW->IsOpen() ) listW->Open();* M$ [/ T" e5 P+ R. \) _6 d) d
    listW->WriteLine(msg);$ f) j: Y. W4 X6 B9 Q' {' {* f
}2 `  B6 [# j% W8 x$ h7 s
void MyClass::log(const NXString &msg)6 |6 N: y3 i- G% n( o/ f& p* W
{  {# o: B3 R& H/ i* ?  u! \0 z
    logF->WriteLine(msg);
0 @) @( t. S# N% }( w}5 d/ l) e. y- T7 g' m4 }0 i

& ~! y1 B$ `0 ?) e// Callback triggered when opening resource bar tab
6 o2 t7 h* r+ }+ u$ fint MyClass::ActivationHandler1(int tab_id)1 }) y' T9 P" o9 X
{
7 a" F6 V  ?* k- |    // Get the WindowHandle object
3 K% X+ q, f- c% `  `2 e    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);5 i1 [( Z/ d( B, l1 }. v! Y  e
    // Get the real handle( q2 ~6 A9 j# N( T8 t7 N: Y5 j
    HWND parent_handle = (HWND)window_handle->GetHandle();- }: z  \7 h9 v" {% ?. @
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!$ u1 O( g: x7 Z! R) |8 f3 @9 K
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
1 I5 O8 K* t2 [. a  ?    ASSERT(wParent1);
* r/ k" \) a1 M8 W3 B+ w
# N8 C; h( I5 r' z2 M( h2 r    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
. T- _1 j! R- N5 H% Q  w    AFX_MANAGE_STATE(AfxGetStaticModuleState());
* ~9 V$ J2 {6 J0 }7 n) X  F8 }5 u2 T) Y" e% @, @
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
8 W) x9 v9 k# v% K& J7 X% E3 {- q        CRect(10,50,510,1810), wParent1, IDC_TREE1);, J- z/ t0 d; u9 h" m5 N
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
2 \6 X9 w( G( a* c7 t
& k. F" v4 T' X; v    Populate(displayPart);! A2 x! U! _' N/ r$ P9 @
2 O* b4 y5 t1 \, P
    return 0;
; m. m- |( [% g6 T. N5 t+ a- F}
8 P; o1 b* p+ \
( m3 b8 ?4 R6 y( g$ Y$ t8 u//------------------------------------------------------------------------------
6 \' T. b; z( q( M! w: O// getAttributes
5 e1 O* [8 }; I3 f) o  p//------------------------------------------------------------------------------0 e/ |0 r: _- m/ k* i* h
游客,如果您要查看本帖隐藏内容请回复

1 @/ T. s- U4 y
1 ~0 q$ O4 M" k7 J0 n9 F% M( T! ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了