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

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

  [复制链接]

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

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

admin 楼主

2015-3-27 11:17:17

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

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

x
9 U5 u0 @1 e; ^7 f
) H# T! F1 s0 ^* j, Z" K9 j3 e
& d! u' D3 b5 N, ^8 m, X

' f! P" i9 y# J9 B2 ^% H& N* m0 q, [NX二次开发源码分享:NX10可以直接对资源条进行二次开发1 B+ w8 R. }7 [( U5 k
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
% z0 |/ r( s% K) d7 N, Z' I9 i# d, Y9 {7 J- r8 G& |1 q% Q  }( N
// Mandatory UF Includes; S; ~. s% }2 Y  D
#include <uf.h>
' p2 O2 ]6 c: d" W5 V% d- k+ a3 s, X' z
// NXOpen Includes* `( K, t) u" `
#include <NXOpen/Assemblies_Component.hxx>- C( B8 c5 J7 x; x8 [* W
#include <NXOpen/Assemblies_ComponentAssembly.hxx>
8 f2 D% {9 ~0 f; T+ h#include <NXOpen/ListingWindow.hxx>, Z- w% _0 C- j1 `+ E+ j2 g
#include <NXOpen/LogFile.hxx>
  X, q) R2 c& w$ ]- V) B#include <NXOpen/NXMessageBox.hxx>  y' Z1 S2 F$ F/ c5 V
#include <NXOpen/NXException.hxx>, @( ]% u3 n* S% O: Q$ J
#include <NXOpen/NXObject.hxx>
+ j& w6 ]5 ]. A9 C1 }2 {#include <NXOpen/Part.hxx>
5 [/ q+ h( w; E2 n9 ~: R. i4 P#include <NXOpen/ParTCollection.hxx>8 N  T+ Y8 L; A: e8 v3 ~7 M, P1 h
#include <NXOpen/ResourceBarManager.hxx>
5 L0 E- O( Q5 _( Q' `9 Q8 L#include <NXOpen/Session.hxx>" f! F2 E$ @6 l8 {
#include <NXOpen/UI.hxx>. s& p  {6 Y/ [. [' R8 m
using namespace NXOpen;
) C( B6 ?- R  g  P. ^8 N& uusing namespace NXOpen::Assemblies;
$ i. W) o. |, T! F+ Y
- g7 m  T7 ]% ~+ `) v2 D// Std C++ Includes9 r/ S" R# x5 T  V7 G  ?3 ^. |, d
#include <iostream>
+ C3 R. N$ _# C4 q# G#include <sstream>
4 Y- V7 m) u$ J" N" s! `#include <map>
* E  }% E$ M$ m; u8 musing std::exception;( T. U  d: T( [( R4 T/ r: G  p
using std::endl;) `' r- D; c4 V# `+ ]/ U
using std::cout;0 s4 T, ?, @' _, V
using std::cerr;
, }2 Q' _7 Y+ N, ^/ d! Z& s! a: [* f$ t( [& R" F  K) I
// MFC Includes+ o8 d. j. C+ y, I
#define _WIN32_WINNT 0x06010000 ' ]& A" k4 w7 ]6 F2 P
#include <afxwin.h>+ V4 ^, q( X: G$ }+ A
#include <afxcmn.h>
1 A/ s' M2 Z5 V. v0 K8 P8 n! w' L" F7 c
) e5 {1 J' a' ~( p! C* n#define IDC_TREE1   1002) B/ f5 P  Q( r6 [5 E! w7 }7 S) U

. `, x/ O6 f1 L" T5 _3 W/ r//------------------------------------------------------------------------------  D; D2 X4 _( \1 |
// NXOpen C++ class $ u, p  X2 O6 m! A' C! C
//------------------------------------------------------------------------------. Y( U5 y, B3 h- Y% w
class MyClass
7 T, e1 L. t9 J# G- y{$ G$ U1 M9 y( e- C8 ?* w
// class members
" a% _/ H) x2 K: {public:
: D+ G5 O7 l7 `( R. u9 F* B    static Session *theSession;
+ S' m% {% U4 o/ }    static UI *theUI;' B1 ^' g; p- i; Q" C- y3 ?
    static int m_tab;; k! S$ R# B5 j) Z, M
    static int m_cbID[2];
  `1 ~  N, a1 G1 d/ r* S+ v/ w: u& `) @
    MyClass();
. d6 y( G1 w1 g' X    ~MyClass();
# f3 U" h0 G: e  N& J
8 [) G/ B2 @2 |2 P0 {- Y    void print(const NXString &);
! u! q- U  j) X% V8 j! p5 Z: }    void log(const NXString &);2 H  d/ M1 x* ]" k% D- z
    void getAttributes(Component *, HTREEITEM);
7 n7 f) u, o2 q1 i7 C    void getComponents(Component *, HTREEITEM);0 r- K- P) g/ I# M% Z$ A6 B
    int ActivationHandler1(int tab_id);( A! ^' T3 C% x2 v" n; G; |
    void Clear();
+ l1 \7 P& P! r& A& K    void Populate(BasePart*);
# L7 d9 a3 \2 q0 c8 ]+ R; U    void cbPartOpened(BasePart*);5 G* v2 A% v% k1 ?3 {
    void cbPartClosed(BasePart*);
# f8 g* t' s# Z% _4 r% Y- e2 u3 s1 C6 _: ]
private:0 d$ U1 O5 h& `& d* O% T
    Part *workPart, *displayPart;( M# o! P1 j& k; Q# X5 O
    NXMessageBox *mb;
% u4 x( z* y* ?6 E# t4 F    ListingWindow *listW;
7 E' }1 w, M, E* N6 G  ?* X: Q    LogFile *logF;) j: @! f: |7 C
    CTreeCtrl *m_tree;
7 X6 x( l7 n6 ~, C" e$ g    CImageList m_Images;3 U4 d( S; r5 v6 U
};
- l9 s3 g1 c) X: I
' j  Z; g0 s& _$ d3 J+ O1 [! \8 b//------------------------------------------------------------------------------+ @/ c0 R2 ?! R- ^- S, Z
// Initialize static variables
2 Z( s$ R& E) g6 ]9 \3 h# l//------------------------------------------------------------------------------0 r( ^6 ]9 m/ b7 e
Session *(MyClass::theSession) = nullptr;  x: K! @& }1 Y& d/ W! h
UI *(MyClass::theUI) = nullptr;0 \3 ]6 X3 I; {- m- J3 u
int MyClass::m_tab = 0;
$ I4 L( r4 X9 O; ~( E8 V4 @# oint MyClass::m_cbID[2] = {0,0};
3 `  i" i. f6 ]. u: {6 V
/ z8 ~6 A6 n  _% O0 d: O6 q. \MyClass *theApp = nullptr;+ ?# C0 [% w) t2 F2 @$ Z* ^

  }0 l4 T6 q7 y% D7 \8 g//------------------------------------------------------------------------------/ J7 I  `: @2 ^
// Constructor 2 W5 W6 x! b, ^/ L( _, x
//------------------------------------------------------------------------------
. o3 T- d/ m; j" gMyClass::MyClass()
7 o1 n2 N( ?" `* a" ?+ \{
# H. d6 K& q! ]; `( c2 ?7 F  U1 G% R    logF->WriteLine("GTAC: MyClass Constructor");
8 }  `$ Q5 N9 \0 a4 S    theSession = NXOpen::Session::GetSession();
3 m1 o6 o/ v  ?$ o    theUI = UI::GetUI();
. f. W  k( h# @- t8 R: T    mb = theUI->NXMessageBox();7 _, C- t! r# v3 r
    listW = theSession->ListingWindow();
' R4 p8 e4 w7 _1 M3 D- \# ^    logF = theSession->LogFile();: |$ _, d- w3 W& A- W

* X% f1 x/ c# q6 D/ R    workPart = theSession->;Parts()->Work();8 e- Z: F8 K* u* C; [
    displayPart = theSession->;Parts()->Display();( C. [/ v# K/ \' `& R% |
) F3 s) I8 O) E$ }4 G7 l
    m_tree = new CTreeCtrl();' \. G3 T; J5 Y& J3 B

* Z1 C- W+ @4 K( B# a0 b    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
% O/ g6 b6 ^' b" k% I    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );% d, l! Q. I9 t) `7 n
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );8 r1 w0 y/ J0 V8 M! u$ S1 A8 t
. j9 p, S" A* G0 j# `5 Z
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
2 K, s, ~6 @6 F' E0 q  N1 B    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, $ t% |! \2 H6 @" f! E
        make_callback(this, &MyClass::ActivationHandler1));
: Q3 e5 F! T' H    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);+ k" N; ~8 h* B4 V' ?: r; T( l

2 [2 n  ?3 v5 {( J& t    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));" t+ Q7 K) k% O; z. y, w/ ^( x% ~" n
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
6 a& r9 E, i/ ?, I' @}
$ \, L. \5 B7 C6 ^: W
* A8 I3 J" \% }* b* X% O2 u//------------------------------------------------------------------------------
: D6 L$ M( u2 Z2 V5 x! G// Destructor3 R' |; B8 f% `& S
//------------------------------------------------------------------------------
: y9 X. t8 M5 o" A( Z) A5 m" p; kMyClass::~MyClass()8 f6 l! e3 s6 H( m9 O) B. K9 x
{
% r: Y5 \; A6 ^6 [# e: A& v4 E/ {    logF->WriteLine("GTAC: MyClass Destructor");
4 e6 \7 |) O. E% A7 T& P    if( m_tree->GetSafeHwnd() )" e0 w) q2 o8 ~" H! w' T/ s
    {* x5 ~0 N- F4 T( i* {( d
        BOOL bSuccess = m_tree->DestroyWindow();9 O* k) S/ A9 J* x: f- l$ L5 w- c
    }3 R; k. y1 O7 t

: Y3 W  t! G: V+ B6 U& t    theUI->ResourceBarManager()->Destroy(theApp->m_tab);6 G+ {/ t; A( j7 t1 I- _
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);4 v# o& a/ s/ L( S* A% O' l
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);: z, g( o: Z  S6 \1 s) j

/ q( q8 D8 _5 @& T& M}- u: Q; l, _$ h" N" b  f9 Z
: B4 X/ G& l# }( |/ O( G) `
//------------------------------------------------------------------------------
. C8 W8 ?% R$ Q- m// Print string to listing window and/or syslog2 [7 ]; x, H6 c; ^+ p
//------------------------------------------------------------------------------
9 c6 a' ^6 f- x' m) Y- `8 tvoid MyClass::print(const NXString &msg)
; \& f& S' \- }: o6 d{
6 y1 c6 v& U) B* c% {6 h# r    if(! listW->IsOpen() ) listW->Open();' u/ P6 Y$ |- w7 v( W
    listW->WriteLine(msg);- y; T" Y7 @; e- c9 `
}
/ X% V7 M- M: g& K+ @( {4 gvoid MyClass::log(const NXString &msg)
' v) n/ q# w5 ^% f0 K/ P{
! H, ?; h, a  y& M+ V0 X    logF->WriteLine(msg);
6 I* h& D: R) S- t" G2 m' u8 y}
8 b2 |) J& g! H6 _! e, Z; T4 R! T+ I. `; B: E
// Callback triggered when opening resource bar tab( M+ h+ K' N3 z5 _' [
int MyClass::ActivationHandler1(int tab_id)' z# o; _! c0 C! l) ], m
{7 `: b' r( n6 c8 p0 N  I' S/ w8 @
    // Get the WindowHandle object
  }9 q" g: P& j* S! x; N    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);" H8 r9 C& x& O( j: F* S4 R6 w- |
    // Get the real handle
* r: l: B! `% h# r- C2 }    HWND parent_handle = (HWND)window_handle->GetHandle();
7 E/ ^9 F  A% ]! _* }/ ?  F  N    // Get the CWnd object from HWND, FromHandlePermanent will return 0!, r0 [# w1 x" F+ @# _4 d: b! C
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);/ r) L. t" @9 a& j5 _
    ASSERT(wParent1);9 g& D0 e0 u* }

( f" U7 [, i) Z, Q. M    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
9 E  ?! B( C5 `! p. L/ ~2 b    AFX_MANAGE_STATE(AfxGetStaticModuleState());1 ?0 A  Y' m+ M0 M6 E
$ D, H' j) M- g
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, ; O" K/ E& w% ]& H0 n
        CRect(10,50,510,1810), wParent1, IDC_TREE1);' |2 R% T6 e0 n
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);$ P% y0 u+ j9 l5 p

2 ]. w- o8 w) h    Populate(displayPart);) Z  V! |# ?: {
( Z' i" z& z! k3 z
    return 0;
, W6 D) ^" k" o; {/ A}
  p8 M  D* }! o+ }( B2 c9 [0 k5 I  S- I+ G' i
//------------------------------------------------------------------------------9 v8 e  `( g" _" F2 y, F/ F
// getAttributes
, v6 g+ K3 ~/ a1 ]) x//------------------------------------------------------------------------------% A# x- L% `) @4 m5 x! A' ~/ w
游客,如果您要查看本帖隐藏内容请回复
8 |0 h; o0 ^9 o$ E+ y, q2 F& D0 I8 R

- @, \( ]" X6 \" Y' F+ C8 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二次开发专题模块培训报名开始啦

    我知道了