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 21232 42

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

admin 楼主

2015-3-27 11:17:17

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

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

x

* Q% x, T. y& W. }* g  v) b5 B# j

1 B2 X+ v  c4 }: Z0 t, e% @
; }, A3 @  i5 w; o

/ i! Z- @6 L: SNX二次开发源码分享:NX10可以直接对资源条进行二次开发
9 b/ O+ m$ C. _$ Z7 _这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
2 [: Q: g+ m2 ]6 _3 C
4 Z  R8 D/ b- H5 V9 R// Mandatory UF Includes
: [" \0 ~" K) j/ W5 J#include <uf.h>
; ^- W/ ]- f6 _% ?0 G
' J. H! {9 l, @// NXOpen Includes
6 J4 ]. c- p* E#include <NXOpen/Assemblies_Component.hxx>2 {: f' a; J+ e- W- @0 W+ Q, L1 g
#include <NXOpen/Assemblies_ComponentAssembly.hxx>
4 V# [. U* Q7 a  z. a#include <NXOpen/ListingWindow.hxx>
7 W1 E) |5 v) z# H5 m8 A1 t#include <NXOpen/LogFile.hxx>
+ S* O  z( n( w* F+ o, p+ s7 Q#include <NXOpen/NXMessageBox.hxx>4 R: B# i' ^# x# {) [0 S7 {
#include <NXOpen/NXException.hxx>7 {6 B7 w$ ]- r  M
#include <NXOpen/NXObject.hxx>9 E% S! w- \% {) |% m4 k
#include <NXOpen/Part.hxx>
( D/ d/ B5 x/ ~$ Y#include <NXOpen/ParTCollection.hxx>; }& p; [! x) [
#include <NXOpen/ResourceBarManager.hxx>1 j) U* a* b" @$ y& i( i, _; I
#include <NXOpen/Session.hxx>5 B# A" _# S3 a( }3 q* S8 E
#include <NXOpen/UI.hxx>
" V* J, s' |# d2 I. [/ i* Xusing namespace NXOpen;
3 ]; ^( `8 a, X# W5 T! Fusing namespace NXOpen::Assemblies;% w% z8 u6 @$ b/ l1 i

6 c: c* H+ {% i1 ^5 y// Std C++ Includes
1 B) S' \, l! |#include <iostream>
; P# p3 o6 ?5 Y& x; n7 l#include <sstream>
4 L; O/ ]5 G5 J* C4 j4 i! W#include <map>  y) N7 ?5 _2 D( P( h6 Z! ?
using std::exception;
  q4 M1 }2 ]/ y8 Iusing std::endl;- v3 E& ~9 j  j% ^3 [
using std::cout;
5 E) _4 X+ d- Z9 Susing std::cerr;
- d$ G  S0 M( c2 [3 m# A* f7 A7 }% B# l5 \4 L/ O& X6 q  A  k( v
// MFC Includes/ ^8 i# o, x# L) w7 y) F
#define _WIN32_WINNT 0x06010000
2 [, q8 U( i# [6 m+ x9 \+ Y- W: Y#include <afxwin.h>9 B6 z4 f/ a) R1 \1 r; q( g, K  {: w4 n
#include <afxcmn.h>& S0 T( m2 s% P1 W9 I- u

6 ^7 P% R$ l- B! O, B#define IDC_TREE1   10024 n- C, c$ q; x) c
' p2 I' `$ U0 c& F
//------------------------------------------------------------------------------
, [+ I( B7 a% Z# @// NXOpen C++ class 8 |8 K0 S, @6 p
//------------------------------------------------------------------------------
' J6 @' a3 ^% O, _6 I* S; V% o! fclass MyClass
: P- f) a6 H- D2 ]{; o; {0 J1 d- `4 k
// class members
$ N' _2 _9 ?4 E1 }0 w6 |3 Gpublic:: a: n/ I. p4 s1 o3 z
    static Session *theSession;
" K( K  `9 o& n$ T: o. g# [    static UI *theUI;: H+ D: x( j9 B6 l
    static int m_tab;; s" J2 g4 }3 b! R4 k
    static int m_cbID[2];
2 k! o5 q5 m* |2 p; R+ O4 ]/ N* J# n: z9 R
    MyClass();
" ]  ~  P: `- X  I, j' |    ~MyClass();2 ?: m: o! S  }( Q& Z" }
6 g: t* P8 i, w  C# h3 q
    void print(const NXString &);
" N& Z$ Q5 ?' c- T3 ^' Y# m    void log(const NXString &);/ h' W, _. C+ `
    void getAttributes(Component *, HTREEITEM);, W2 C1 a/ G1 d  f
    void getComponents(Component *, HTREEITEM);
& b' F$ t" D& q$ \8 u    int ActivationHandler1(int tab_id);
0 R) L  O  }( W0 Q9 h    void Clear();; Q% |+ Y4 p7 i9 V! U
    void Populate(BasePart*);7 M4 f  N+ c' @) P' b
    void cbPartOpened(BasePart*);
2 r- C' i+ j; c! x    void cbPartClosed(BasePart*);5 s9 u2 `3 K+ G7 P; d
7 Z, T4 r4 o; H
private:5 i9 M4 G. O9 c& L6 M' `% X
    Part *workPart, *displayPart;
8 a  m* N* z9 A$ g    NXMessageBox *mb;& Q  |; I& o8 ?6 ]' |
    ListingWindow *listW;# H% j' A+ U" n# n1 Z# a! H( e2 ^
    LogFile *logF;
; Y  O3 `' y( b    CTreeCtrl *m_tree;
1 y) ?* P6 U' x1 P2 k  j" M" k    CImageList m_Images;3 C' V9 g& g# ~5 n; U8 _
};/ ]) U$ c7 p+ S  V5 J3 X$ n2 z

4 _3 N& K* D6 M; m1 I( T//------------------------------------------------------------------------------8 M6 n8 M- H5 p
// Initialize static variables
6 k) T! P1 ?- W- {" p//------------------------------------------------------------------------------
: B: y7 v+ [% @Session *(MyClass::theSession) = nullptr;1 u$ A: o  n6 U/ S7 h- d
UI *(MyClass::theUI) = nullptr;$ L$ c* r' m+ E0 |" M& U
int MyClass::m_tab = 0;
9 ^' O, F/ {% V0 {int MyClass::m_cbID[2] = {0,0};
2 l0 j5 e$ _$ Z0 S& Y/ T: n; u) Y
( c+ p! ]) c/ e  ^0 H" lMyClass *theApp = nullptr;% W! Y( S7 A; h+ h- X2 p

  t) j: a; f( w! V* {$ p1 F6 E//------------------------------------------------------------------------------
1 _2 S2 L" p) Y6 {& a* Y3 }4 R" N8 {// Constructor , I4 Z+ u% @! |( N+ N
//------------------------------------------------------------------------------
9 C. U0 K" e1 ?( _4 \MyClass::MyClass()
. _' P( h7 L/ P' n- S{
2 g3 r! L$ x9 _5 \: P* W3 ^6 L: t    logF->WriteLine("GTAC: MyClass Constructor");  @, d) c: r8 j
    theSession = NXOpen::Session::GetSession();
) A  S$ r: `8 u/ i! e    theUI = UI::GetUI();* c3 g  c0 F. s7 @- Z
    mb = theUI->NXMessageBox();3 t& S( X4 M2 V# I& \/ @2 |" i' T
    listW = theSession->ListingWindow();( c" o8 b1 ^; P4 x9 W" [' l
    logF = theSession->LogFile();
% U4 ^; |6 D- D: S, a( e9 @* A
0 a$ @5 F$ _  R    workPart = theSession->;Parts()->Work();8 s3 u) C! n7 H4 R8 w2 t: X) v
    displayPart = theSession->;Parts()->Display();. ^5 g& {, Y0 W
$ x$ k7 ~5 \& y% j
    m_tree = new CTreeCtrl();* a8 D2 |- Z, E& M

; e6 a- B- l2 c. h, _    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);  k3 u( j8 J: v" }
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
+ n9 y! Q3 l$ N4 D7 B    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
2 n: l/ i2 K2 n" @& L) Q) K
) H- @" L$ i, A: j2 N) {' c! Z    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");) Q( }9 g4 M) A0 ^/ w1 x
    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, $ w1 r7 H9 X* `4 N' s& N
        make_callback(this, &MyClass::ActivationHandler1));/ q( k+ V+ G" @9 y# c
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
2 \; d* z5 r3 s0 _% Y- a- ]: |9 J" c- Y9 g( J. G
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
& O6 w2 R' h5 r; f7 j4 L0 v    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));9 R* Z3 {" o# x+ }3 J' c# H
}
4 g; x" ]/ D$ \; n) {* M- [
2 n$ D9 T1 p( p//------------------------------------------------------------------------------
4 c2 j% Q5 ]9 ^! ~# B+ \9 {// Destructor# X- K3 ~! j* C
//------------------------------------------------------------------------------/ y: T) I% R  R# h* j
MyClass::~MyClass()
* E; A5 w  @/ z; [{
# i6 E9 }3 |6 ^    logF->WriteLine("GTAC: MyClass Destructor");( X. K4 ?0 o% X/ k1 g
    if( m_tree->GetSafeHwnd() )
/ K7 Q5 g, o5 G& F& D8 r. }* s- e. h+ Q) D    {" a3 s1 B% K4 k3 h' {% I1 B
        BOOL bSuccess = m_tree->DestroyWindow();
1 g! `1 j) k% r; O* p" Q- U) c% W    }
" a- P; `. g: H. p, A; J
% {, T1 C" V- }    theUI->ResourceBarManager()->Destroy(theApp->m_tab);) v2 ?, d+ \: L1 h( q8 l7 `
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
! \4 r% j: |6 F0 S  p) H5 }6 A- ?; `    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
4 m' V% ?! H9 [% |3 R5 p& Z2 k5 n; h# ^2 y( @6 L3 d4 O
}
/ |3 c% @* }5 B" P3 F3 K) y, P  ~* B; X. }
//------------------------------------------------------------------------------% x- I8 P7 |, b2 k4 \( A" a& H
// Print string to listing window and/or syslog" V8 \) Z0 G$ Z. Q6 H% ^3 A
//------------------------------------------------------------------------------1 V1 I& N4 l) ?$ x' ]9 H% N+ B
void MyClass::print(const NXString &msg)
* u! j: a  I7 x  g{
1 u5 m  T* Q* e- |" _    if(! listW->IsOpen() ) listW->Open();
9 ]4 k1 Y& X7 R9 O6 ~    listW->WriteLine(msg);
! y- |" @$ G% ?& U! G& M}; }4 _( t" U) Y: v- e; u; H
void MyClass::log(const NXString &msg)& @7 R7 C+ k8 j) u1 X/ c% @; c
{
/ \" f0 L- r. U" \, v    logF->WriteLine(msg);
- ?/ P' P" ^& d( P; }}* ^- k+ Y5 b! q- A( |" j
# x* ^6 q# N. ~/ Z& g
// Callback triggered when opening resource bar tab
; g- D. C! O6 |( Q- Gint MyClass::ActivationHandler1(int tab_id)
3 n  R9 e2 U& s8 u  F8 R{" T$ v( B$ u+ B+ }9 N2 Z1 r
    // Get the WindowHandle object9 {! ~( |: P/ f' P, b9 z( e& m0 n! ?
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
& c1 Q: w6 }: _, e3 t- {8 p# P- h    // Get the real handle( _/ P- O. f) g
    HWND parent_handle = (HWND)window_handle->GetHandle();
0 h9 C, @2 D7 T0 [6 w3 v' u4 J! m) J    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
: D* b% M2 D  e! }$ G    CWnd *wParent1 = CWnd::FromHandle(parent_handle);0 W2 T6 t9 f0 }9 S+ Z/ l: V
    ASSERT(wParent1);
" Y- l* s9 D, E( P7 t! n
. Y1 {/ Y) j2 t2 ?' S    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
. Z; f/ ?: a9 a    AFX_MANAGE_STATE(AfxGetStaticModuleState());
$ a9 q* Y$ L2 B+ D- M# j: z$ S1 Q* I# D- I* R
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, 8 ]  y, F7 D/ ^. d. m
        CRect(10,50,510,1810), wParent1, IDC_TREE1);
7 E2 t3 E* N) O% p6 C; V- U    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
  @9 e' [% c) {' q
8 j+ D6 S1 X- k/ p* r( E+ W( k2 d    Populate(displayPart);& {6 l5 c& t. a/ o
/ _/ t5 m) t; O; L" O+ B- `/ z: v
    return 0;* n" n& f. X7 V% Z* \" V! s$ D% n
}& p4 M6 R3 w1 x  [. E* z' Y

* a: i8 {9 ?8 [//------------------------------------------------------------------------------+ `& g- y* [6 `' l  N- e# u6 m
// getAttributes& ]  e& g* x+ j
//------------------------------------------------------------------------------
3 ^  ?6 C$ j) `. O7 t7 \8 N
游客,如果您要查看本帖隐藏内容请回复

1 O: D/ D  I" B0 Y7 w! V
. S2 Q! Q" q6 @
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复42

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

    我知道了