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

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

  [复制链接]

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

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

admin 楼主

2015-3-27 11:17:17

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

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

x

+ E0 s5 q+ Y. w( ]+ U' w
3 t, `1 N5 ]+ F8 c" C$ @% e
2 [# W  X' T) L) t
  b+ d! U$ w# \! a& c2 _
NX二次开发源码分享:NX10可以直接对资源条进行二次开发+ r; ~: f2 X: j2 @/ b
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。7 x7 z  X1 R7 J) p

/ R; v. c$ O2 h3 I: |$ g8 `& U// Mandatory UF Includes4 s. z, a6 x- [! S9 Y/ Q, o
#include <uf.h>& ?. r0 x' a: j

% Q2 Z7 w. n. H9 i# H& w// NXOpen Includes
5 c5 B9 r- {, K8 h0 r8 n9 C" e#include <NXOpen/Assemblies_Component.hxx>
" P) B; \$ I- H) p* Y) p#include <NXOpen/Assemblies_ComponentAssembly.hxx>
- x' H' w: P" A+ u8 I# t5 [/ M, j+ H9 E#include <NXOpen/ListingWindow.hxx>: h( e9 v2 A& {' c& s
#include <NXOpen/LogFile.hxx>6 Z) E  F& w& ?9 c8 Q( Z
#include <NXOpen/NXMessageBox.hxx>) w5 h" T; V" o# @; c4 T
#include <NXOpen/NXException.hxx>6 i% G0 V8 q: C) O, B
#include <NXOpen/NXObject.hxx>% b( G- G  |8 `' _- t6 B
#include <NXOpen/Part.hxx>
2 G5 g  J+ a4 s) |#include <NXOpen/ParTCollection.hxx>; l/ K+ `- m2 M/ L9 R% @; S
#include <NXOpen/ResourceBarManager.hxx>
' i: s; c" N: Z# T' o! s6 P3 J#include <NXOpen/Session.hxx># U0 A- s6 f% }- A1 p
#include <NXOpen/UI.hxx>$ G7 w: w% N/ b: N4 d2 r
using namespace NXOpen;
: k4 z) F1 O) ]8 r5 wusing namespace NXOpen::Assemblies;" d3 `2 H: z. V5 ?+ b- T# ?/ g, R, x

1 ^* m2 _6 Y4 ]- @0 q// Std C++ Includes
1 D4 N; x2 M$ _% p#include <iostream>
- C( m( h: ^# y9 Q0 R* F#include <sstream>, ]: p  E+ Q$ A. [
#include <map>+ E% `' I5 a% C9 ~6 H, M) d5 }! A+ u
using std::exception;' I1 r& X- G+ e" J$ p
using std::endl;
( W; e# x' I7 T: ?+ a$ R# c  @7 pusing std::cout;, D% P3 B) v  b; K) q/ ?6 V
using std::cerr;. t) h/ T% F& J0 e3 F
# O  Y% l9 I0 e# I& d$ Z# Y# d( R2 ^4 P
// MFC Includes
- I% G; s# h" [* }8 }3 V#define _WIN32_WINNT 0x06010000 1 i, O* `/ a% g9 |; C$ I. F+ _: t
#include <afxwin.h>
) p5 @5 G1 r7 a0 ^' r#include <afxcmn.h>
, \% [4 }  o* b
! ^* q' g3 Z) \* A, i#define IDC_TREE1   1002
0 Z5 |- G% z1 K7 O1 b
0 }1 V+ q1 d4 e1 l# ?//------------------------------------------------------------------------------
, ]9 i8 f6 K! Y% R: R  U1 |7 E+ ~& k; g// NXOpen C++ class
! T2 v4 Q$ W% @, J//------------------------------------------------------------------------------0 j1 i. _! ]3 E2 [1 ?' B
class MyClass
, L' V( v& r9 Q  ^* m{
( C1 ~3 e' {- L) U# t7 V: W// class members+ _, K, g# w0 m1 ^, K, {9 y9 e
public:& i' u( n$ H1 a! R" h' y
    static Session *theSession;9 @: D( W3 y2 y( U$ {6 ]
    static UI *theUI;
& E% l0 ~7 @' L5 ?+ V; K$ K8 {  K2 z    static int m_tab;# Y% v+ E' g" |, C# T
    static int m_cbID[2];
/ X0 O0 c, L. _1 G. p3 X8 r- \8 W  W2 ], R/ p" Q$ Z4 V' b, @
    MyClass();  M9 z" ^4 c0 x: m2 X5 l
    ~MyClass();
* @2 q& m& ?8 i  Y1 m! Q2 u$ ], H7 c+ g, r; S0 K
    void print(const NXString &);: d5 F# H! W4 D8 k) V  S5 {: V
    void log(const NXString &);
7 }- ~  c# v0 ^9 ]# A; g+ d) {) \    void getAttributes(Component *, HTREEITEM);
' M6 F" W$ J7 S* w9 ^3 |    void getComponents(Component *, HTREEITEM);
  I8 K, L5 Q) d1 {% V* h, ^4 Q    int ActivationHandler1(int tab_id);
! j1 Z5 |2 X+ S2 ^, S6 s  M# {    void Clear();
+ c6 D" c' z0 T% t    void Populate(BasePart*);
3 K; q( A/ |) G; n/ X5 r    void cbPartOpened(BasePart*);
* n# @, b% j; Q' n    void cbPartClosed(BasePart*);) U" q, ^0 T  s& I$ y

; G  g4 U) c1 C7 ~5 I! x  zprivate:4 p+ a' D: q/ m" y: ^; ]
    Part *workPart, *displayPart;
& J* N: ?. e" M  I2 q* d: T    NXMessageBox *mb;
4 y( D$ ?( O& i/ m) H    ListingWindow *listW;4 R' q% q0 Z9 C+ N2 E# }; V
    LogFile *logF;
6 Q8 l7 s  Q  z    CTreeCtrl *m_tree; 1 r. }3 O; r0 t$ x1 u. y
    CImageList m_Images;
) `5 r4 o7 u9 A0 J+ ?4 U+ p2 W};
/ L& o; F7 r  a6 P: e6 r9 M, Y( g" e. l! s3 t
//------------------------------------------------------------------------------
$ n3 L2 G5 U: C( K+ S// Initialize static variables
: B) {" O1 \& j//------------------------------------------------------------------------------
1 z# }" f) }5 E" x/ d% rSession *(MyClass::theSession) = nullptr;
9 H3 y1 s( q* S/ P1 l8 X  hUI *(MyClass::theUI) = nullptr;! @' G% ~6 W0 a4 h. U
int MyClass::m_tab = 0;/ i' T( H6 ^' a0 @
int MyClass::m_cbID[2] = {0,0};0 w1 X; _8 d3 D* B( w7 x

: D9 v6 y; C1 TMyClass *theApp = nullptr;
9 w! C  t: r2 G7 J- m! f8 K+ P6 `% j0 T- q, s( s6 Q
//------------------------------------------------------------------------------
: s: k" \5 V) z% p& h// Constructor " P$ s/ }) c) [0 h
//------------------------------------------------------------------------------# h; o% d' }$ l/ G: ?" `
MyClass::MyClass(). w" S0 y( i0 i5 P, c' z
{$ ^; r$ @+ J* }
    logF->WriteLine("GTAC: MyClass Constructor");
8 p0 B* W5 s+ x  x    theSession = NXOpen::Session::GetSession();7 _2 O. V4 ?7 N: ?7 K. b* j. z& ^* R
    theUI = UI::GetUI();
9 A0 c, q% L% @% W3 h3 p    mb = theUI->NXMessageBox();" }% b! G! D. `/ z
    listW = theSession->ListingWindow();
* {0 r6 J, T+ L7 m$ X  A    logF = theSession->LogFile();; q: b. X7 Z; i* f: R3 S" C2 b
/ b4 H0 i) m7 @2 N1 s- o7 ?
    workPart = theSession->;Parts()->Work();6 n4 h! g! y: h3 \$ ]  k/ w9 {
    displayPart = theSession->;Parts()->Display();" h# J: w' e* C5 I

& W# t/ }3 {  m  J5 J    m_tree = new CTreeCtrl();# K0 D( l- |# p
! S1 V4 q$ d5 Z5 G
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
( M' N2 h6 d! A5 m    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
# c4 Z, h5 `+ z8 x7 h7 r: L    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
1 Y2 Q1 r5 I( W% V4 R6 Y( T3 b; L  [
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
) s+ b; E& ^  N+ F    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
' U' Z% t( A/ @        make_callback(this, &MyClass::ActivationHandler1));# [: d1 I  L# l8 @, W- e8 S
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
! m# Y7 }- |4 e8 v% F) S) D; r% ?
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));  [4 }/ m4 \5 D* \% ^7 J
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));) E! X7 x3 L$ Y2 l
}
3 A  E6 W; a& X# Q* R
! u) `  X& ]: o/ p$ S//------------------------------------------------------------------------------8 b; s/ X% f' C
// Destructor
8 w# c0 X0 c1 j) S# b0 T//------------------------------------------------------------------------------
# D6 A- X, X: w0 r/ Z; J2 z' ^4 ]9 ?MyClass::~MyClass()3 _4 M/ O9 q! l2 z# t
{
( _- t' ^# x+ M* K    logF->WriteLine("GTAC: MyClass Destructor");/ t6 T8 B! g# _
    if( m_tree->GetSafeHwnd() )6 v* }% B1 {. p* u& F% b
    {
' S* N% }" n$ x9 A  b  T6 i        BOOL bSuccess = m_tree->DestroyWindow();$ i& [+ M# h" C4 T+ w* V5 @; ^
    }' }9 c) V& k9 |& U+ n

# Q! X0 j$ }! q2 M* T    theUI->ResourceBarManager()->Destroy(theApp->m_tab);9 k4 L7 f' {9 h+ [
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);% i6 L1 d, p/ G  [/ _. \. h/ _( W  M* P
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
5 ]6 c' Z' x0 e" m; i9 e, ?* f/ p: f3 ~# T: Z
}
- `6 a7 T( U. [/ {) r; v% f) G+ D# y& [2 m7 m
//------------------------------------------------------------------------------
+ m4 D* }3 `0 n0 N  U7 X+ E0 U// Print string to listing window and/or syslog" h. N' H0 j; @* k' X# h4 {
//------------------------------------------------------------------------------
: ^8 K9 `* U8 ~* ^% Y8 D; _# ivoid MyClass::print(const NXString &msg)) V/ _8 y/ s6 N) `! D5 L8 i6 m+ ~
{+ f: ]! N9 O' c* S' O
    if(! listW->IsOpen() ) listW->Open();
; \7 h8 O+ l4 h% E2 c% _    listW->WriteLine(msg);
9 P2 D& h/ k) ~0 ?9 F+ E% h}9 k! l4 B, R. d" r7 m& H) B
void MyClass::log(const NXString &msg)0 \3 C$ e7 i2 p* i. S6 b. n/ o
{
( T7 p9 F. J6 r- u: K( W$ t/ v    logF->WriteLine(msg);( H6 W' }, W4 _2 z; [# j
}8 Q" G7 C' M3 V. e  A
6 Y. i0 `! F3 I5 N
// Callback triggered when opening resource bar tab' S6 Q' u( l2 V/ V
int MyClass::ActivationHandler1(int tab_id)
! O% l( y2 R; L9 C* I: h{
0 |& k7 k0 t: R6 N. x7 e    // Get the WindowHandle object2 Q* F% A* y: d) y$ m7 m
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);  k! }& s' ?* T* K+ m6 E3 b
    // Get the real handle
: e& Y$ |2 k" c* d    HWND parent_handle = (HWND)window_handle->GetHandle();
/ R! [8 {8 u6 n2 o( g: k    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
" x/ K; z6 i6 ~* v    CWnd *wParent1 = CWnd::FromHandle(parent_handle);# D7 H1 A, Y! C) P, R) A
    ASSERT(wParent1);
! N! A* P8 z- _3 r! X/ p
3 L8 k# V* R. R( O9 Z    // Switch module state to avoid Assertion from afxCurrentInstanceHandle5 P  A$ n/ [+ Z$ z
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
0 C% _& S8 k0 z& x5 K5 P1 J1 M% g) v
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, / j: p4 t1 n: Q" p9 \
        CRect(10,50,510,1810), wParent1, IDC_TREE1);
- s; d. i( c( h- y( u  `. K    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
6 n# U6 p1 M. c8 I4 M3 D
+ H+ k* X8 j2 P8 O' A) i    Populate(displayPart);; u3 w, l6 n0 [- q. l8 F

- L8 h. q& U& b; d5 }9 ?# l; R    return 0;
% ?1 ~* S# R" E" f& D}
8 I; d5 N7 J  A* E  G' E1 I; P. _% |) p' a) Z. a7 X4 x' I2 Y" F
//------------------------------------------------------------------------------
$ o5 F$ a- ]8 Z. u9 z. k) \% B// getAttributes; Y/ _3 f0 S$ M  k( K6 M
//------------------------------------------------------------------------------0 H% G% J( e  ^  r4 _" B& U3 w
游客,如果您要查看本帖隐藏内容请回复

$ ~( p6 U- v) p( A% j
& P  a  G  k2 y  U$ G
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了