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

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

  [复制链接]

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

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

admin 楼主

2015-3-27 11:17:17

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

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

x
9 O( k! g9 [2 ^$ j: W& C' D

1 l/ E# q: s2 `0 Q9 Z9 Z0 W' |6 B% X# u/ {2 [3 `" K

, ~& S  [* J- k- a8 N, D# ~5 aNX二次开发源码分享:NX10可以直接对资源条进行二次开发
7 h$ J- H$ G7 |" `3 N" P' R7 \# ?0 n这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
$ T8 |; p4 {  t' K, s: B5 l, L0 f- m# w6 ]. I( M) a6 O5 G
// Mandatory UF Includes5 n) A, O! t2 [/ a: v. b! C
#include <uf.h>% z  y1 i+ {, @0 x7 {

* x  u5 Y) s* Q9 N% P  Z// NXOpen Includes
$ u0 a, h0 z$ G4 T+ S* k#include <NXOpen/Assemblies_Component.hxx>
" R; U, D5 K# P  I9 t. \& T4 l) y#include <NXOpen/Assemblies_ComponentAssembly.hxx>
/ k. r( y; i# o#include <NXOpen/ListingWindow.hxx>
7 d0 y. n% w; a2 l8 u. P, L#include <NXOpen/LogFile.hxx>) N) \1 s! T  r
#include <NXOpen/NXMessageBox.hxx>
' y: F* w' U: _9 [$ z#include <NXOpen/NXException.hxx>
7 b" }* i: [2 r$ T& @#include <NXOpen/NXObject.hxx>2 m1 O3 Y! b# w) Z3 L' F2 J
#include <NXOpen/Part.hxx>- `5 F  ~( _+ |6 e# [# C
#include <NXOpen/ParTCollection.hxx>$ B6 B6 u3 {, L( B3 U) D
#include <NXOpen/ResourceBarManager.hxx>  r8 {0 r; u7 k# Z) L: A
#include <NXOpen/Session.hxx>9 }: ]6 C9 T" I2 u6 ^: G" U2 [
#include <NXOpen/UI.hxx>" D4 y' P& O5 u5 U! N  w, `
using namespace NXOpen;2 P! S$ e$ q; j: L
using namespace NXOpen::Assemblies;& w% w2 [6 a5 ~; _/ V

) R: U4 v8 b6 Y0 Z( R2 e: q: {// Std C++ Includes, v" K1 w* A( E4 f" t" ^4 g% @& H; E
#include <iostream>  i1 i  _8 Q/ T' O
#include <sstream>
9 v4 W. l; R& L#include <map>
, J- j. z. e( Uusing std::exception;6 N2 P  a+ o5 G9 s. w, z& s+ r6 {- E( M
using std::endl;
  y6 D* G0 ?5 }8 ^  {" b2 pusing std::cout;& U- B, @8 y7 S3 N) S
using std::cerr;
! F, M& ]  _& N, Y8 }
- Y  H& j  \5 i! W/ V( }% ]* A// MFC Includes! B- _6 v& Q) k* ]
#define _WIN32_WINNT 0x06010000 1 B- S; p9 [- e" g' H0 p6 c2 A
#include <afxwin.h>
4 a. [. w2 _5 N( |- k/ S; j#include <afxcmn.h>% `  ]3 k; }, d

  n9 L, g+ G- B+ X% @) l#define IDC_TREE1   1002
) h1 J" V! h% G: k9 I' R* W3 p
( E# k, P; S" P5 N) w//------------------------------------------------------------------------------, @3 ]# _8 I. w- f1 `
// NXOpen C++ class
/ b$ f, z8 T2 i, r! J5 K+ R//------------------------------------------------------------------------------
4 d/ i% X+ X) lclass MyClass; O3 k% e2 I/ l
{
! g0 R5 c' X4 A6 L: R// class members
5 |+ ~, I! h; @' A6 ^$ Fpublic:5 L+ F" o! h' K& @2 w, a# w
    static Session *theSession;
. n- \8 {. R2 y- l3 d! A; ^- x7 [    static UI *theUI;3 c' M# x  X, e3 M1 `
    static int m_tab;
4 ]- ^1 `) N) w  k4 k0 N: a    static int m_cbID[2];5 Z" L7 D+ J) W, f: I

/ Q, Q, U8 C2 D' S- |" }3 Z% J& Z$ z) f    MyClass();7 R: ~# C3 Z  v7 g
    ~MyClass();* G( W" c1 N  ]
- Z9 q* I* D& Y6 a. U
    void print(const NXString &);
" L9 O6 j3 q, e2 M0 Z    void log(const NXString &);( ^! y( R; Z5 s: s: t- [7 r1 j7 n
    void getAttributes(Component *, HTREEITEM);) a0 n" k$ Y3 G8 D- c3 y) t
    void getComponents(Component *, HTREEITEM);3 R5 A# |2 T; |7 J+ C+ v8 }# i
    int ActivationHandler1(int tab_id);
$ j0 ~  |% I$ ?2 v6 L% k    void Clear();3 p& _) m- o6 B
    void Populate(BasePart*);
! Q6 h# T; O- K) L5 J0 e, j    void cbPartOpened(BasePart*);
& d" `% l$ i# j, M$ H. V    void cbPartClosed(BasePart*);
* q4 E! n+ @2 D
' N2 K$ ?) |4 X( L6 ~5 x5 ?! cprivate:/ j" t& k- c% d, w
    Part *workPart, *displayPart;( z" E0 [8 E/ F' c" S, Y, Z0 a
    NXMessageBox *mb;$ W, y2 b9 o" h' E- y3 Y
    ListingWindow *listW;
/ O) ]( [) q# D    LogFile *logF;" c" |4 o8 c; \' D& a
    CTreeCtrl *m_tree; ; p6 n8 [1 v/ e5 N% C
    CImageList m_Images;
7 o5 K2 C% ], J/ h};
+ u  h. {. S& a/ u% f# l5 {. c7 [7 i3 Q5 @0 {2 C7 W  _: k. F
//------------------------------------------------------------------------------: N* H& h" O/ |! P! ~+ A3 B. T
// Initialize static variables, N% @2 o% I, \8 D& ^
//------------------------------------------------------------------------------: F- b# i4 b) ^' ~  n
Session *(MyClass::theSession) = nullptr;
3 ^# o/ X9 @) J* S) T. {" N! h* ?UI *(MyClass::theUI) = nullptr;
  g0 ?' i* e, bint MyClass::m_tab = 0;+ K: u# y- \' U% k- z6 D
int MyClass::m_cbID[2] = {0,0};4 |3 D- b) Y8 v1 q# Q; H/ }( r! U
  O/ H. ?8 c# L
MyClass *theApp = nullptr;
4 X+ o8 i, ^) S( e1 B
, S6 W2 H& I, l+ {//------------------------------------------------------------------------------
3 q; d6 g  m8 B. m5 l2 J// Constructor 1 h$ B( l& @# f/ H; ~
//------------------------------------------------------------------------------
! n+ S  O9 }% A% PMyClass::MyClass()" ]8 q- }- q2 C/ i
{
& ]' f# f) o- S7 }$ k& Q; M* b    logF->WriteLine("GTAC: MyClass Constructor");. e$ d1 m; l1 ^4 J
    theSession = NXOpen::Session::GetSession();3 L7 o8 P1 ^/ R0 \9 f
    theUI = UI::GetUI();
6 C, d9 ?6 Z( Q& K6 B9 v    mb = theUI->NXMessageBox();
: E6 x0 {) d" h& i4 s& X    listW = theSession->ListingWindow();
1 E9 ~. I$ h2 P: q    logF = theSession->LogFile();
! G% g  U3 [$ _- o+ C# I5 s" q# L
1 U; @% F: |- P% Q    workPart = theSession->;Parts()->Work();- o( Q4 @* u* v( L
    displayPart = theSession->;Parts()->Display();* {! O; G2 G" x; k( m, N
! K- F) v, I; J5 v. A9 w
    m_tree = new CTreeCtrl();% z8 `: t; @; a/ E: b
, T' E9 m; n, W( I8 R/ q2 t
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);+ N( f# X6 g! q& i3 |6 R; C
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );* y- R# N* h* u& }. D, ^, e" q
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );* r+ U5 p( a6 a* ~* \2 r9 n  s
; O% M/ r$ i. |! m) _
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
! H& G" q( w# @, M# P5 j7 R7 u# U    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, 5 M8 n' Q* x9 c7 g, D
        make_callback(this, &MyClass::ActivationHandler1));
  c- T2 F% h* q7 I    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);5 n5 ^  j5 D3 f2 _$ \
# d1 x; v$ s' U$ k3 b
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
# Q5 ?% B4 a3 X* x3 X8 u    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
( }+ w7 \6 j$ A0 |' q8 k/ z! r& O% K}
; R& Y3 \$ R, G& m4 b4 l& W  V- L- X+ L
//------------------------------------------------------------------------------/ L- Q9 O" ^$ d
// Destructor
; |& G: @, b$ [! H//------------------------------------------------------------------------------# \) z7 U1 ]9 {3 q( u; r8 q
MyClass::~MyClass()& u* D) \  j* {: h- V% m" o
{
' @, r5 `+ d: \3 }( F( f7 \    logF->WriteLine("GTAC: MyClass Destructor");+ Q& e+ F' g2 _; x+ N3 L0 n1 {
    if( m_tree->GetSafeHwnd() )- Z" m3 I0 L5 c- T9 u7 ]1 w
    {
7 J4 L% g9 F2 o' r6 o; L% U' D        BOOL bSuccess = m_tree->DestroyWindow();$ X! b+ O; n9 Y/ `: u6 J8 s2 s
    }! R% k. U5 D' X7 K6 ]

- B1 `3 H$ h" Z. ?8 `4 n% p* ~8 w    theUI->ResourceBarManager()->Destroy(theApp->m_tab);8 a' Y7 ^. n% l' e( w% k
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
: R! j) ^) J' J! E- g    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);+ f4 _  ~+ \7 ]  w8 k
; `/ O/ X9 G, Z+ ^3 g
}' ?2 X7 \+ n7 [% \8 U8 _8 ~
; M: r9 r" e/ T' |( {+ q
//------------------------------------------------------------------------------
* c4 ]' u0 l5 x- _! f- Y' H4 t// Print string to listing window and/or syslog" v7 f5 L  O, [6 c8 G8 a1 s
//------------------------------------------------------------------------------  `% X4 T' o' \5 I3 O1 c; v
void MyClass::print(const NXString &msg)
; L/ c5 W- r& B2 \% ]+ {; u{
. M8 d, T  k. W, X& A. T, b    if(! listW->IsOpen() ) listW->Open();# i: j- V3 g- U/ c0 n, y! g
    listW->WriteLine(msg);' T& z, w; E8 _8 B/ a! Z4 s- d
}. O; Q* o1 t) ^# V% B( b: q
void MyClass::log(const NXString &msg)- h1 S4 l+ F1 `" E% m
{$ ~+ J, w! R+ a0 a
    logF->WriteLine(msg);
+ |1 O% o7 r% L8 E* G}
% x  i  e3 V" z. E! ^
8 J8 R$ P9 z) e+ q& j. t  S9 O+ ?& q// Callback triggered when opening resource bar tab0 {! a# G9 M* M+ S* l& Z
int MyClass::ActivationHandler1(int tab_id)- ~- N$ m. P) i0 |6 a
{
9 T& [4 R/ p6 F8 A+ p    // Get the WindowHandle object; q( j- N2 f3 d- k
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);5 n. i3 M- W0 ^$ p5 E5 K9 _* q* T- c
    // Get the real handle+ \  U9 w; M9 F: H. Z8 w6 Y
    HWND parent_handle = (HWND)window_handle->GetHandle();
. m+ Z7 l" l2 j. E; j8 g    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
" R+ h' E/ ^: {8 q9 o# e; c) ?0 ^! U    CWnd *wParent1 = CWnd::FromHandle(parent_handle);5 v3 A# E( m7 y1 r
    ASSERT(wParent1);0 ]4 `8 _' `/ ~/ q5 s8 X
9 @5 p8 U2 c" }2 L. H
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
1 U- T% c! x- j% x- C. [! L    AFX_MANAGE_STATE(AfxGetStaticModuleState());9 I: i1 z' a9 D9 s
+ u- _1 m, @% l9 b
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
( ]) B9 W4 v5 Y        CRect(10,50,510,1810), wParent1, IDC_TREE1);9 A8 I! H3 m* c/ s, N
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
2 o" k! F2 x/ O& R& H5 x
! V( `4 x+ _8 w: ?) J9 m    Populate(displayPart);
5 `& l6 s! \7 U* K; \/ _( l$ U7 y$ z$ t1 K9 l' z
    return 0;, U$ v: H% f$ g1 e& g- L
}
+ b, E# o2 {/ y! l5 V. i& ~, L% A+ T  w' J( w2 r
//------------------------------------------------------------------------------/ h# P% [) ]1 x+ Y! `0 n
// getAttributes, v5 x7 D7 C6 m4 m
//------------------------------------------------------------------------------
& N* Y# G  ~" t( K& U
游客,如果您要查看本帖隐藏内容请回复
( c' ?) Y& _& E. G  x3 x' N

$ z6 ^$ B' S: s) m% f) e$ s
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了