PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

  [复制链接]

2016-3-8 12:00:27 20846 41

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

admin 楼主

2015-3-27 11:17:17

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

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

x
: _/ z) L7 ~2 \/ d- v6 Y% c/ r
+ {9 m% L/ X$ ~

) C6 x- f# m/ e: c" j- W7 t# a! H
' A. C7 h: V  ^
NX二次开发源码分享:NX10可以直接对资源条进行二次开发. E! B. o. W3 s! ~& V+ N
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。+ F, h" P. i; w% T
: {9 [7 t+ z' i
// Mandatory UF Includes; ~: B/ D0 ]- r+ H  X& y# k
#include <uf.h>( W9 P: S2 b! M. V) v' @

8 k9 j9 A7 f$ X  k3 L& K+ s// NXOpen Includes- }* ~1 V6 p) ~8 `5 D- b2 J0 e. _
#include <NXOpen/Assemblies_Component.hxx>
/ T: V; p, a0 P1 j$ e#include <NXOpen/Assemblies_ComponentAssembly.hxx>! Y2 R! Z" F7 @
#include <NXOpen/ListingWindow.hxx>
. k8 |8 ?) Q1 Z$ Q6 [- x& ?#include <NXOpen/LogFile.hxx>4 G0 \- G/ O3 p0 Y$ X: B- X
#include <NXOpen/NXMessageBox.hxx>" o  j' P: B9 |' L% D8 ?
#include <NXOpen/NXException.hxx>+ C/ L6 N; ]* a% e' ?0 b
#include <NXOpen/NXObject.hxx>3 L- R* Z" N1 g$ R- e4 a" K$ Q
#include <NXOpen/Part.hxx>
5 f$ P; }: |& Z0 Q/ B5 D- @#include <NXOpen/ParTCollection.hxx>
2 v' X  a* a2 C, G; v& R#include <NXOpen/ResourceBarManager.hxx>/ |4 Z7 ~8 i5 q; {1 z  _
#include <NXOpen/Session.hxx>3 m6 e0 o# T3 q, l8 z' a8 U! K+ B5 q5 r
#include <NXOpen/UI.hxx>1 z6 C3 R6 A9 @! i: A
using namespace NXOpen;
  n' w  a; x6 X$ @using namespace NXOpen::Assemblies;0 O6 T4 U8 ?' S( u* o  I# O0 g8 f

7 a1 P, w! I! H3 }8 t6 c- B// Std C++ Includes) m4 Z% B- M# e$ I, F
#include <iostream>3 [% q; I; U& n. ?# O2 V) Z' F
#include <sstream>
7 q* z. [% e4 l6 t6 q5 m( P( i#include <map>
4 I. A2 {- p; }/ pusing std::exception;" h; Q& _( P+ e  _9 h, }
using std::endl;/ o* N" M4 Q, x9 ?$ R" P
using std::cout;1 |9 W  @0 A5 }/ b! |, B! `
using std::cerr;* E3 H* {, c% b, |5 @* z8 s% @, M
0 b3 d! U# L% Q; F  w
// MFC Includes" R  H4 A3 T$ Y3 {
#define _WIN32_WINNT 0x06010000 . e# G; S% f  R( I, ~- B) K
#include <afxwin.h>
3 \+ P9 }. I: y#include <afxcmn.h>
* J8 z& |' G/ j' ~0 m- s/ L4 y& Z. M& A; u% X
#define IDC_TREE1   1002
/ t( C3 w8 O! {( h
# j: z' U/ c% P& m. |" A" {$ A' d//------------------------------------------------------------------------------
0 {) n, k  c: h// NXOpen C++ class
# r& J4 y8 W. w* S3 I2 b//------------------------------------------------------------------------------- g' g# U+ J1 `
class MyClass
# Y# s8 g( E4 H8 @2 A3 \  n1 N8 u" T{8 P: c* y, Y- V) L+ Q% _6 [
// class members
1 I1 `8 c6 H# n" p/ U# O3 Hpublic:
- K6 T* z5 _2 `4 \2 o    static Session *theSession;
" n' Y$ [7 [2 H/ C* ]& `    static UI *theUI;& o( _( f8 ]3 h
    static int m_tab;
7 P, _. m6 Z  R    static int m_cbID[2];5 R) O7 j4 G0 G- ]& M

( X& t: g1 g# ~" Y* O) c    MyClass();
( g* V) G4 e' B5 W8 w0 w    ~MyClass();4 l  J+ ^6 `6 P* ?& D. ^' ~* v
' _1 D6 T  k# O5 k$ W1 [
    void print(const NXString &);
  E9 Q3 {2 P; ], t; f    void log(const NXString &);/ M% Q  L3 ]3 a) Q$ ]
    void getAttributes(Component *, HTREEITEM);6 y  n' H- {9 p+ y$ ^! w
    void getComponents(Component *, HTREEITEM);
7 }% X, v6 d& z, v  `9 o    int ActivationHandler1(int tab_id);
- @. K: ?- Y8 X( a    void Clear();
! x9 n2 Y+ e5 W# C" v    void Populate(BasePart*);" H2 \. d$ V: r) d" c3 \# p/ d; }
    void cbPartOpened(BasePart*);
, i3 R, ]) m& f6 N: z& }    void cbPartClosed(BasePart*);* z6 U2 P! X# M3 d0 a0 F; v
3 L3 t* c4 w! h
private:
3 d3 ~; e! T4 f. _2 ]" {4 V0 R    Part *workPart, *displayPart;
- }8 @3 t, `' K. n    NXMessageBox *mb;
, U1 H' r& L* S4 f  z( \8 S    ListingWindow *listW;
$ G/ f. v) E% q+ z5 [! A    LogFile *logF;
' P, t# q! U$ U9 C    CTreeCtrl *m_tree; 0 s9 r7 C( W8 }
    CImageList m_Images;
7 ]; B) Q" h* X9 M# t3 y};
: @" ~. b7 c$ i: x& X( {" p6 W: K4 T5 x0 f; H- |, \
//------------------------------------------------------------------------------
, q5 F& H' e! X# k( ]// Initialize static variables
) c; S9 ^$ Y+ c. u9 J8 e//------------------------------------------------------------------------------! Q! d0 z3 S+ H! m3 J" i& ~
Session *(MyClass::theSession) = nullptr;$ e9 E* k* v2 N: G- K' t: z
UI *(MyClass::theUI) = nullptr;9 H4 X! _) G5 [5 a
int MyClass::m_tab = 0;
" n* X" i4 [" r0 Q) D3 x, oint MyClass::m_cbID[2] = {0,0};$ A9 j& P7 _8 a! C! |1 ]
; M# w. h+ _  p2 s2 h9 ]3 J0 ^
MyClass *theApp = nullptr;
5 l& W3 i, w; A3 q/ A& [+ z; X7 |
0 [6 c# S& f" @, e2 d. U% m//------------------------------------------------------------------------------
1 B, \! ]. r. D// Constructor $ @9 p2 x8 t! L
//------------------------------------------------------------------------------8 L) s/ }9 e$ \  A
MyClass::MyClass()$ D2 {( H" h7 \: f. @; M
{
1 j* N5 \" O( i) e7 S6 k9 U5 q    logF->WriteLine("GTAC: MyClass Constructor");7 p1 O$ C) f* ]6 ^# m- A
    theSession = NXOpen::Session::GetSession();+ w+ Y& G. G+ ?' E# V0 t# J
    theUI = UI::GetUI();
3 {4 L! H& I% c3 U# Q. ^9 C7 j, a8 `# ^    mb = theUI->NXMessageBox();% [" w3 M+ }* U; v0 _6 I9 h
    listW = theSession->ListingWindow();# C7 M2 |. A0 N! h, o: i; R3 @8 @+ I
    logF = theSession->LogFile();
1 ^, W2 I1 R5 a% ~/ }
4 `: p$ U# I; [    workPart = theSession->;Parts()->Work();
) v& n* _% I5 L, g1 H0 g! ]; W. k5 e    displayPart = theSession->;Parts()->Display();4 r" P7 Q3 V! e+ [# {8 J
# G; f# b1 L6 ~$ M1 q: F
    m_tree = new CTreeCtrl();
# [* S  t7 }6 B- D2 M9 K  V
$ K) B1 c, r- q8 J    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
4 x9 H) @0 G- [) [! I5 P/ \    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
2 f# t) N+ `2 C" X* }4 h: [    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
8 T6 c. ]6 d7 A; Q, r) D+ F) b2 t( P. S" x: C" ~- [
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
+ n; V1 k7 }1 W    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
2 i* F) Y9 p- O        make_callback(this, &MyClass::ActivationHandler1));
2 J1 k3 T+ d2 ]* u! N! w" K    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);% t. S, M) l7 l; x
7 `! K3 T3 ?% n' D% S
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));6 d+ f/ T1 w' O" u" s* d' e
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
/ @+ L- F" j5 Z9 {}5 K! h, H: _+ H" s$ \- u# U4 W6 N

" [0 B+ r+ d& d* l- l) z8 `* P//------------------------------------------------------------------------------
! j6 D% o( s# y$ P/ y// Destructor
5 Z% N& c4 m4 q/ {1 R$ m( r7 U//------------------------------------------------------------------------------
# {" ~. Y, X6 B; rMyClass::~MyClass()
1 Y1 B" U8 [  K2 P{* C5 {9 w( e6 @
    logF->WriteLine("GTAC: MyClass Destructor");) |0 [0 }8 j1 S
    if( m_tree->GetSafeHwnd() )3 r  j2 g2 @2 i: A7 a1 V
    {# Y- p& t& m* p3 ^4 F+ l% ^
        BOOL bSuccess = m_tree->DestroyWindow();: A. L+ y; T7 `8 y/ K- D; c7 V! Z
    }
( h, {  T/ h6 _7 Q3 G( R& e8 b+ Z0 T# k' n3 |$ V. C- j$ v4 K
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
' S6 J: c2 c7 l/ b9 a8 n, V% M    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
$ x2 K* `2 _2 p4 T" x# ?) b7 _% B    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);; i/ M7 ^/ c/ Z6 ?
3 w8 {* Z: t- a! |% ?' j, W
}* H% C& ?' r* }- U4 _7 H- K

  s9 C8 l% W$ B" q//------------------------------------------------------------------------------
/ h& u" p! S: M3 \+ }6 A// Print string to listing window and/or syslog7 j7 R1 j& y# m( F' N* K& ?  \
//------------------------------------------------------------------------------" q! w& _+ }* l) R
void MyClass::print(const NXString &msg)% k" t# u- N* @% E: `
{
7 l7 u/ g3 L2 k    if(! listW->IsOpen() ) listW->Open();) t! _4 h2 t' {2 T8 E% i
    listW->WriteLine(msg);
/ p5 t! N) R8 V! q7 p  e  J& t}
' G. B. w& J/ S' R2 ^void MyClass::log(const NXString &msg)
: }- M. e& N9 G{8 f; k! U! }& C
    logF->WriteLine(msg);
1 q' R) Y" Q. v$ P, v* j+ _) f! ]) ]}
4 [" t" Y/ P& [+ g  Q1 C* E& F9 {! P5 x) l! p+ |: f! \# Q* [# p- ~
// Callback triggered when opening resource bar tab( H# T' W  P+ p: `' L. V2 P
int MyClass::ActivationHandler1(int tab_id)
+ A2 p5 {9 o7 Q# [{9 A; w7 X5 \0 O( U, Z7 i
    // Get the WindowHandle object
  X1 t# w3 Q6 P5 T    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);& L: m+ {6 m3 a8 V
    // Get the real handle, N3 h2 y, D; p5 l, d- B
    HWND parent_handle = (HWND)window_handle->GetHandle();
* e* }6 P6 `% j; k# w$ r4 }    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
& F! B& z4 o3 D9 K2 L! T    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
! l  f+ Z  P8 Z8 f/ D    ASSERT(wParent1);
+ s: T% b/ `! I
0 @6 q: a" ?7 i7 O) F- p    // Switch module state to avoid Assertion from afxCurrentInstanceHandle6 k. d% }: u. o/ _8 y+ r- U
    AFX_MANAGE_STATE(AfxGetStaticModuleState());2 n6 \1 B9 O. R- T. p

; t) w# X  c; x7 X    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
% M! N" d0 C7 a- K# f5 t        CRect(10,50,510,1810), wParent1, IDC_TREE1);
  @7 ~( T- Q; G+ W1 g. d  [- I    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);1 B/ r2 e0 j8 y; A& G# n
' F1 V# ~: M) m4 R+ A" ^
    Populate(displayPart);
7 x' E' l9 f$ f1 x( B* T) K; I- @# o9 W8 w/ V* n) ~
    return 0;% l# `: X& n6 w6 U
}
3 ~/ `7 I9 m, B. c. {% G3 j/ [$ w% y: I1 ]" b6 L
//------------------------------------------------------------------------------* X5 N8 d- ]' X0 y) E# O
// getAttributes1 S8 j2 v3 s9 \. Y9 w$ B
//------------------------------------------------------------------------------3 ^3 P$ w: \7 d- f  L
游客,如果您要查看本帖隐藏内容请回复
6 l0 u- U2 U: i* ?

) j0 v5 s! t) ^# q7 d
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复41

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二次开发专题模块培训报名开始啦

    我知道了