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

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

  [复制链接]

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

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

admin 楼主

2015-3-27 11:17:17

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

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

x
) E- _9 x  b8 `# ^: u
4 s% ^6 q8 [- z* [: [6 }
. f- c8 F, p, c4 [8 Y7 E# p
0 V/ b! B4 g- p; J
NX二次开发源码分享:NX10可以直接对资源条进行二次开发
* v' i* ?" ^- E3 g) p, s这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。& V  f7 E  T& s

' c4 C' g4 J1 c$ Y! W$ H// Mandatory UF Includes9 `( U# u4 I; d
#include <uf.h>, J7 H& `- _6 D- x6 M5 Y

8 `$ {+ X% |) y8 t& t// NXOpen Includes
+ }7 G6 H( ~% g1 {) @3 L#include <NXOpen/Assemblies_Component.hxx>" g: l9 r" z- E
#include <NXOpen/Assemblies_ComponentAssembly.hxx>' m  w# G, d' D8 K& t
#include <NXOpen/ListingWindow.hxx>
7 `$ C9 Z4 a( @  o#include <NXOpen/LogFile.hxx>
- j- Y# f- ~8 v0 ]' _#include <NXOpen/NXMessageBox.hxx>1 w5 U) q% G: R
#include <NXOpen/NXException.hxx>
) h/ j* y7 R7 T$ o: k#include <NXOpen/NXObject.hxx>0 t: R3 C( u0 F# }" H! M# V
#include <NXOpen/Part.hxx>
7 p4 a* _9 j7 w1 Z2 d& b#include <NXOpen/ParTCollection.hxx>
4 x" D0 n/ a7 Y  @3 t0 T( w! S7 V#include <NXOpen/ResourceBarManager.hxx># ?$ M, S+ }( n: {$ Y) e5 y  z
#include <NXOpen/Session.hxx>
' E! l& y/ N" c- v5 K# M#include <NXOpen/UI.hxx>; V) ]3 W- n$ `# h; v
using namespace NXOpen;2 R0 c, \0 p! B8 V' W6 U. h5 a
using namespace NXOpen::Assemblies;! A# q4 R( d4 L1 H

9 J9 X% r; r9 W1 }% f& f) }3 r# @8 |// Std C++ Includes  P: v* ^  D: V/ n- |
#include <iostream>
0 Z+ b5 r1 B! U' H6 l# j#include <sstream>; d. D4 x, X! b: q( o
#include <map>
3 M8 D/ [; c+ nusing std::exception;* C& b/ ^  J" a! V; K9 m
using std::endl;
; M. l: f: K% R8 v7 O1 |' |using std::cout;
' F- [+ x5 y  r- Xusing std::cerr;, k( G7 M5 p1 }+ C5 n( C3 R; I
( O) K; Z8 k) E
// MFC Includes* N+ }, m( }- d4 {9 M6 j9 t5 K
#define _WIN32_WINNT 0x06010000
9 r: {; I+ s+ l  @#include <afxwin.h>( t! A6 T$ n6 {$ \: h; U
#include <afxcmn.h>' Y1 v0 A: \0 n; ^! ]

0 g$ h9 F. o: v! o% v) L#define IDC_TREE1   1002( F+ m. c( g1 @8 O9 J
! z/ c* D$ f  q- m
//------------------------------------------------------------------------------
9 t; g# Z! D7 h6 _; ^& o- D// NXOpen C++ class
4 T3 _2 H, ^2 h8 N//------------------------------------------------------------------------------( d0 W1 x( m7 g* g
class MyClass- ]5 z- q4 Q! j. h
{5 _2 C/ q5 y' I1 p+ j+ @
// class members4 O) k6 r0 N4 ~: h& L
public:' d1 D) C5 G( w, \
    static Session *theSession;" M8 H  n% W) X  V
    static UI *theUI;
" Y! n4 `: o" ~" N0 K+ h    static int m_tab;
  Y  w) i$ G" \8 n/ G2 o+ ^    static int m_cbID[2];
( Z4 y' m& X1 Z& ?4 i( G6 l/ @, `( C0 a- `: Q" G2 e
    MyClass();
, J: P( {6 S" }, L. F    ~MyClass();+ `$ d, c. l; ?: [7 E$ l
. V) |5 J* }: h* i/ x
    void print(const NXString &);
! k4 o, q4 |1 `, L4 {" B1 [    void log(const NXString &);
9 C5 ~2 m. V; @+ S    void getAttributes(Component *, HTREEITEM);
7 z- a6 z4 W5 L# c2 v' y/ X    void getComponents(Component *, HTREEITEM);
. P1 Z4 N0 b1 G- b    int ActivationHandler1(int tab_id);9 {& q* m- ~* o5 Q1 F, b
    void Clear();6 a1 c( Q: D% l
    void Populate(BasePart*);2 Q" n9 b. D; n$ c- g% p% a
    void cbPartOpened(BasePart*);
! l3 ~5 J# o' E0 e3 h8 f. F' `9 C    void cbPartClosed(BasePart*);
3 w. U/ Y2 M& j# R; H! V9 H" X/ f2 W2 x
private:7 w* K4 Y1 N' o0 M; U7 L3 d
    Part *workPart, *displayPart;& ~: i9 x9 Z& o, Q9 Y" D
    NXMessageBox *mb;% ~' d# S/ a2 G) T' o9 z6 z. @
    ListingWindow *listW;% U$ q9 n# S' \  F! a1 N8 c# q2 {
    LogFile *logF;6 Z6 T- V9 O: N4 V5 g5 s
    CTreeCtrl *m_tree;
" m4 V8 Z9 y, R! I    CImageList m_Images;% j9 [/ ^' L4 w3 G% j
};
. q% h/ B# M4 I4 j
: m' [* @5 h/ ~. x" @9 Q//------------------------------------------------------------------------------
  ?/ Q3 q3 D* q' Y// Initialize static variables
' M9 Z: j2 E" D1 x2 P//------------------------------------------------------------------------------
5 ~) R4 q5 s6 L( R+ H% USession *(MyClass::theSession) = nullptr;
5 I6 ~' ^# H/ I' UUI *(MyClass::theUI) = nullptr;: Q9 Z0 P. W9 X" p
int MyClass::m_tab = 0;" h  W% D! v# ~8 D" h
int MyClass::m_cbID[2] = {0,0};! |  J- w/ x( f9 }

2 {4 x8 |% Z0 k2 e, D& w* ^  |/ dMyClass *theApp = nullptr;
* F: z( V, i; L5 Z  d6 {4 o7 g8 i' b5 d7 U; T9 P
//------------------------------------------------------------------------------3 L! i; r5 E% b4 {9 @' {% D4 x
// Constructor 0 q+ W1 b: Z! `
//------------------------------------------------------------------------------+ n8 R  ^0 D8 e* i% t+ h6 `3 _+ ?& i
MyClass::MyClass()
# ?! X! V7 ?/ x+ A# Z! e9 @{- K9 {0 w1 E" ^! c3 [4 s! Z
    logF->WriteLine("GTAC: MyClass Constructor");
$ c/ V- t2 x8 u2 v5 s% T8 ^    theSession = NXOpen::Session::GetSession();
, K; Z" `& v# _( `8 A5 S    theUI = UI::GetUI();, y* u% t- j6 A
    mb = theUI->NXMessageBox();
8 ?, W6 N+ j0 n$ O    listW = theSession->ListingWindow();
, D" W* y1 D- {    logF = theSession->LogFile();, o5 V/ Q# ~' [# S- Y- d9 z1 l
( X( w% R) S4 m
    workPart = theSession->;Parts()->Work();
# G0 C! `7 D1 V! @    displayPart = theSession->;Parts()->Display();& L- g, z9 H/ H* K8 j/ b3 @& F
8 U: u# N7 ]! Z) X/ D5 B
    m_tree = new CTreeCtrl();# O1 u3 D; I4 x3 O# Y2 ], D. r/ l

' Z. k- |, `! _    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);4 p8 W: B2 K$ S9 ~
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );3 o" T$ E! m# Q
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
: c9 g9 Y5 F/ _( N6 g5 B  f* w9 O. y
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");! ^8 X# e% d$ V" W
    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
- ]! Z' b" ]8 X" Z+ {1 c6 Y2 Q. Q        make_callback(this, &MyClass::ActivationHandler1));; H; S% N- J, b, W& X- E
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
6 p& `  e1 p! ^$ w! j2 K8 e
% S. j6 \. I1 e3 `% f" [    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
& x: H% I% b: P0 @5 R9 N    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
; d2 T. V6 X% K$ ]3 i}
6 z" {$ m' w/ A4 g. L' S9 Y2 U8 E" T& m  j' [+ {* |
//------------------------------------------------------------------------------
) l/ s8 }4 v3 A* |' t$ G// Destructor9 H# P- v) h# k: P2 w! F
//------------------------------------------------------------------------------
$ v1 P! E5 _* S, y% O7 YMyClass::~MyClass()- O6 @( j! Z7 @+ T
{3 f1 c: Y- R. M. C
    logF->WriteLine("GTAC: MyClass Destructor");
4 o5 T+ w: S0 G( S- @    if( m_tree->GetSafeHwnd() )- E0 I& p3 o" `+ X' b7 j! T
    {4 }2 M* K2 R1 n' Z. N
        BOOL bSuccess = m_tree->DestroyWindow();
7 n8 o6 |4 y; ]' J  W9 g0 C    }4 p  N% z; s' H& c, p

+ |5 P9 O' f2 w! V    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
" S$ f- T3 |& m( `# J7 }! t    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);8 l+ ^1 U$ h, g3 M/ d( ^3 A9 s
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);. b- I$ G$ L) [6 o
0 \2 w$ ~* M7 j! _/ O( q* {2 B/ J" @
}
/ i6 I8 k- O( T: U- j0 i3 X0 `# z, |! f, y8 L7 V/ q. y
//------------------------------------------------------------------------------) N" N/ B! W8 \  |
// Print string to listing window and/or syslog0 S4 [7 a4 ^  Q9 z# C
//------------------------------------------------------------------------------
% k3 M+ p# ]3 Bvoid MyClass::print(const NXString &msg)
0 _3 X& k6 }- }$ c{" p- P: ~- d4 N- x) [- w, x
    if(! listW->IsOpen() ) listW->Open();6 T9 q& l' U, D- a
    listW->WriteLine(msg);
6 C1 v) p" |$ l7 L# I3 M}
7 M7 @( y# t" Q4 n* i& Tvoid MyClass::log(const NXString &msg)
( W& V+ K! \9 w2 B  P& ~{
) C$ z& b' b) T    logF->WriteLine(msg);! b( P) P6 b+ `; \, ~0 j: K
}
4 R* g) W# H; y. z' ?8 W
* m# c5 ~2 j9 }; f7 g; m& [/ g// Callback triggered when opening resource bar tab0 K* A) a' ]- m- q& c  ^' W
int MyClass::ActivationHandler1(int tab_id)/ W$ x7 \4 g6 C7 {# ]7 l3 {
{
3 i" p. i1 E4 I/ V; ?* e% P3 u    // Get the WindowHandle object
3 V, Q3 ^& V: O& K# W0 ]0 I    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
  s( W5 Q/ r. A3 L9 s* U* E    // Get the real handle
" e' O! w7 g: ^# E, S4 H% ~0 w    HWND parent_handle = (HWND)window_handle->GetHandle();
3 ~3 Z9 _; G4 S: x6 L    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
- }1 Q% r" J) `1 T; A8 Q! W- v    CWnd *wParent1 = CWnd::FromHandle(parent_handle);9 q! ^* w2 O5 q7 D, d
    ASSERT(wParent1);
6 G, j! E9 |) \; F/ {8 j- V
3 V# O5 G3 ]8 s! Y4 n" S    // Switch module state to avoid Assertion from afxCurrentInstanceHandle6 k" I, Y# U, d, y' t' g) O
    AFX_MANAGE_STATE(AfxGetStaticModuleState());# b# J0 j" H: k3 {

$ R8 j1 @" Q# ~  g/ k' q0 o) N; @    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, 1 e+ g; G6 w) J: B
        CRect(10,50,510,1810), wParent1, IDC_TREE1);
: j1 s2 E9 G! T0 z# h4 G: `- W1 |    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);9 ?9 O$ P( z9 E: p  y5 V2 f
5 i1 [) S, D8 t& p9 R8 R# B
    Populate(displayPart);+ d* Y! ^: j9 u2 M* K; P

) `; Y4 @; n# f; c& p8 t0 Q    return 0;
2 m6 h/ e+ m) W1 v4 Z8 @9 H}
, t6 A. |: k7 w, ~8 d8 C4 g) p
/ ~% }/ ~1 P$ [. h/ i- B//------------------------------------------------------------------------------
- B, n- l( g; d( _0 m: Q, ?0 _// getAttributes
  w0 W( m+ l. \/ ]: a" ^: C3 D- n//------------------------------------------------------------------------------
! y, W, e3 b8 S4 M7 I
游客,如果您要查看本帖隐藏内容请回复

9 T: Y  P# E# W' _- b1 A. ]; ]. b/ |" z6 ^! u. n/ F0 x" s* x# ]2 f
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了