PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

  [复制链接]

2016-3-8 12:00:27 21522 42

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

admin 楼主

2015-3-27 11:17:17

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

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

x

+ A( a/ ^/ o* H; y

& i% A! _& K4 [2 N
0 ?- {+ \1 c6 y! V& X! ]( U; V

8 E6 s3 t! N' x. l8 T- j. E! |- KNX二次开发源码分享:NX10可以直接对资源条进行二次开发7 ]" O- ~) I7 g
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
8 W1 f: @$ I. ]0 }
" n2 J4 D. m, @  X: i// Mandatory UF Includes
5 @1 B: ?- E8 G1 X* }. r4 M#include <uf.h>
, |% J$ p% l6 R! M2 P, k/ o. F: v5 ^5 M! D
// NXOpen Includes
( [5 d( s" p  J# {6 P0 D- ]#include <NXOpen/Assemblies_Component.hxx>
3 A4 I  k! N4 m/ q5 v5 y0 X$ I#include <NXOpen/Assemblies_ComponentAssembly.hxx>, f; x# Z5 ~: f3 u7 B
#include <NXOpen/ListingWindow.hxx>
4 b& E! l+ L5 u# H. s  ]1 a- }9 O#include <NXOpen/LogFile.hxx>: L( `+ a" E( S' C! y' N  U
#include <NXOpen/NXMessageBox.hxx>, s1 C% ]: e: ]6 l" _- R* s) Q
#include <NXOpen/NXException.hxx>2 G# e4 r  p5 B1 P0 F+ m
#include <NXOpen/NXObject.hxx>3 S; V' y, z2 P. \- P: N! {) h
#include <NXOpen/Part.hxx>9 l' O# n: C( F' ?+ I2 z, q
#include <NXOpen/ParTCollection.hxx>
3 F; S7 ]% i+ ]% E" ^#include <NXOpen/ResourceBarManager.hxx>7 k$ M, |0 e' L4 a
#include <NXOpen/Session.hxx>
: E9 c, b0 H& o6 B#include <NXOpen/UI.hxx>
) t0 E! f+ x$ a: ]! a8 Dusing namespace NXOpen;$ K9 l1 A) x* C8 }) G0 T
using namespace NXOpen::Assemblies;
, y2 l7 u5 s/ v, [
( a6 }$ g; O+ f' o// Std C++ Includes9 G  M! f/ b% r$ w9 P
#include <iostream>+ n4 Q8 @+ [4 ?2 [; x4 |) x/ L
#include <sstream>
' p$ T- j; k$ T( J+ ]#include <map>
% ]1 K1 f1 y% L  e; nusing std::exception;
! F8 G0 N) i+ _+ {) A0 [7 Gusing std::endl;+ J5 Z5 I* f3 d
using std::cout;& a* t7 q6 \9 z& G4 b
using std::cerr;/ V2 r7 F, r+ X! D# Q4 b) n2 D
  f& `$ @9 b' ~. b. _2 r" H' z
// MFC Includes
0 |+ v. Z" y* q" c#define _WIN32_WINNT 0x06010000
3 k: M) S/ E9 P% i: r#include <afxwin.h>
6 ]+ r8 [1 r  r7 r' A8 Q' @, T#include <afxcmn.h>
' P- z( y4 J$ b! N# b. e
: D9 m+ V( \- p* E, e! g8 s  b#define IDC_TREE1   1002
% m+ B7 s! ?3 u. X0 Q9 J/ d! l' d& w
//------------------------------------------------------------------------------2 x/ `, u  I. l7 x0 F
// NXOpen C++ class 3 X* t) P3 C7 T0 \8 {
//------------------------------------------------------------------------------
8 f" o3 X$ a% Q+ _, qclass MyClass
: b: l0 F- T! ]: e' ~{/ d/ I/ b, a5 }( j& ?7 m- @' H+ z
// class members
# z) b% [" X+ R1 j& _) Mpublic:
5 U: E5 A! O; |% d    static Session *theSession;
$ e6 v) I: C6 F& S1 T7 |    static UI *theUI;4 p! |7 {+ _+ r' F# W
    static int m_tab;
4 @0 x- _9 U. [, @9 f' U0 K    static int m_cbID[2];! c. w& @8 ~/ H
; n, l' d8 q2 z4 W' G& }
    MyClass();4 a3 O2 c7 n# J4 _
    ~MyClass();6 _5 l( t. e5 ?3 P* m
+ X( F; |8 b2 N5 }
    void print(const NXString &);* ~" k! f7 U! V
    void log(const NXString &);0 L6 I7 q; h' Y
    void getAttributes(Component *, HTREEITEM);5 V$ b! o5 m# l) Q2 u2 e3 A
    void getComponents(Component *, HTREEITEM);
, J/ p0 H3 G: d- `# y    int ActivationHandler1(int tab_id);
- O2 L  B! t  B    void Clear();  j4 S; x0 ?- ?% P% ]) m( M
    void Populate(BasePart*);- G0 f7 H% R% u% V1 ~8 p5 x
    void cbPartOpened(BasePart*);
9 N2 t4 z+ X' u" p/ R' Z2 n* ?  [- U4 {    void cbPartClosed(BasePart*);
( z0 i" i9 L7 i5 X3 j5 t
" p, o. X8 v$ `4 B0 }+ V# vprivate:+ M- Y$ ]  L( r% v: m  K$ a8 k
    Part *workPart, *displayPart;
, U4 l, U/ @* ~% j. d" I    NXMessageBox *mb;
! n" K0 S/ L! O8 U( n    ListingWindow *listW;
+ M  I5 r+ @6 P" U4 |    LogFile *logF;; a. r& g1 S$ u- o
    CTreeCtrl *m_tree; 1 v4 e9 C+ P6 t
    CImageList m_Images;
" B% V1 z. N8 H- Q( W* W: e};; z( C) V" P8 d5 q& C* e
+ i& E& G0 [8 U0 b+ y/ h5 o  l
//------------------------------------------------------------------------------
6 a6 h9 Y+ e5 {4 ~# p: k// Initialize static variables
( j) A: A3 J& q! X0 T- ~* E//------------------------------------------------------------------------------  u( m& v4 E. v' [' v
Session *(MyClass::theSession) = nullptr;. u7 h% ?1 i! X% _+ ]5 L; a
UI *(MyClass::theUI) = nullptr;6 D. m* K8 D4 g1 N) X
int MyClass::m_tab = 0;* F# B$ M1 ?8 K: ~( ]" T
int MyClass::m_cbID[2] = {0,0};
' g% O# d% W: M. B+ Y
5 M1 E; \& ?( T2 \/ Q8 yMyClass *theApp = nullptr;
8 v5 c/ d, p6 G) e3 M
  Q5 f2 Q  A9 L- l' ~4 z  T//------------------------------------------------------------------------------, u4 }' x$ u8 D" Q
// Constructor
# p/ y: K% u% P6 l; |' R//------------------------------------------------------------------------------1 ], x5 B& b4 u* Z5 |  ^
MyClass::MyClass()
& N8 i6 O/ H% g7 e{: s$ s* S, B" O% X% c' I; V5 Y: c
    logF->WriteLine("GTAC: MyClass Constructor");
) N6 z& n* r5 ^. m1 Z2 u" T. }    theSession = NXOpen::Session::GetSession();
3 W+ `' |7 D5 \) |* S    theUI = UI::GetUI();6 P+ Y* v/ B, M! Q$ O
    mb = theUI->NXMessageBox();
3 I1 R+ {8 _, D* Z1 ~0 o6 i    listW = theSession->ListingWindow();" F4 P( y- x8 k  v$ u
    logF = theSession->LogFile();
- t' z  x% K) |2 I6 N
# c' _$ ]2 |: x6 q6 E" O( z5 Q) ~    workPart = theSession->;Parts()->Work();- n6 V; n5 a4 D; b- t
    displayPart = theSession->;Parts()->Display();" N  b7 O2 j: D- b- Z
7 f+ @: s" \4 A
    m_tree = new CTreeCtrl();# L* a4 l, b- @0 N! }, X
2 l: C4 X" C0 g/ v2 t, }1 R6 X
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
: ~3 I$ s3 s. |- u7 s    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );" B8 v3 f% P+ }! v
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
0 ~- }4 P( ?+ K9 U
; u/ N; h" v/ w3 J6 T    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
+ ]; n" F, P( K( B7 [    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, , r1 Q) c9 D; i! V) n0 v7 r
        make_callback(this, &MyClass::ActivationHandler1));
: E' D$ i* P- Y" o& G1 R$ q    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);$ a: `* A( Q* Q- m* f+ }
% \$ |- G  I! R/ h6 Y  q# {( Q
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
5 k' b+ Q: S+ y# |6 H8 h& e    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
: q4 D; c6 T$ |5 M6 X}
! ~4 D7 t* t! [% ^0 ?8 {
  l7 G; t9 U; S( h//------------------------------------------------------------------------------
5 Z- i3 R; b5 y0 x2 h// Destructor* f7 i# L+ b3 g7 B
//------------------------------------------------------------------------------
! N" j3 U7 D! N$ N: E; lMyClass::~MyClass(). v- P' g3 i  b8 w6 G9 c
{8 n! `: h9 b$ r8 p
    logF->WriteLine("GTAC: MyClass Destructor");+ O7 }7 M" s/ ~
    if( m_tree->GetSafeHwnd() )
1 `& [: ]: P' }7 I. Y    {8 u4 X1 m8 x7 m/ ?3 `7 l0 z% H  j
        BOOL bSuccess = m_tree->DestroyWindow();! j/ G& I  k/ B8 a) R& l
    }
; o" ?5 K$ s9 k9 Y9 w2 e8 z( x0 a6 G6 D
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
$ @  K  R, F. @: \$ y    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
2 o9 ~9 w& U; |9 _3 b) ^2 Q% m, r. o- N    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);& ]% S; H4 \9 k

0 g3 r9 D8 X) f}: l/ d1 |3 \* c1 d
- [2 ^4 m) e7 g) {9 i% C( p8 _( K8 C5 X
//------------------------------------------------------------------------------+ @" ^6 ]. u" ^: j5 A' h: T
// Print string to listing window and/or syslog
: M9 N* j% x# b0 [- }//------------------------------------------------------------------------------
  N1 O& E9 Q3 z5 u; Q3 Rvoid MyClass::print(const NXString &msg)- h! w9 ~: f2 \( a$ Z
{
/ @6 h' J1 s+ i9 D, L* r    if(! listW->IsOpen() ) listW->Open();( S+ C+ m/ P* j+ Z8 h) W  J% ]1 j
    listW->WriteLine(msg);
) B8 Q: l* \  b+ {}
! B6 f8 _8 l9 x. ~void MyClass::log(const NXString &msg)6 \* ]2 y1 e1 M5 a, K! }1 y
{
  d7 p# e" U9 a8 J& |    logF->WriteLine(msg);& e0 K  y% \# o
}
. q/ N1 i5 n8 T! H' U! h6 y. d; L3 N0 t
// Callback triggered when opening resource bar tab0 D5 }$ u* {* c
int MyClass::ActivationHandler1(int tab_id)7 @3 w: x8 L1 @9 N0 i2 E
{
1 d6 ~2 b7 X9 L$ g. o0 r    // Get the WindowHandle object7 s, C: V: f$ ?
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);  r4 w  T5 J* q( M4 s; w9 G
    // Get the real handle
  \/ k: ~, R( c$ s! {+ n    HWND parent_handle = (HWND)window_handle->GetHandle();
( K. [' ?/ ]4 @" I" O- c    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
4 C! I% ~" z& @# l) F. ]; s" O0 j    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
( ^, m3 R$ l8 B6 ]5 W    ASSERT(wParent1);
* _9 x2 n  c/ ~1 T/ K
6 ^, ^( L! u; U$ N) S* `    // Switch module state to avoid Assertion from afxCurrentInstanceHandle7 c: H' R  }% R0 D; n) D
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
0 a. G4 o7 x8 n, I) m% v6 @
8 Z. Z7 t- t* S% B7 N  C    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, # {2 Y0 ~! K2 c5 J
        CRect(10,50,510,1810), wParent1, IDC_TREE1);* P. b6 K2 [0 ?  H
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
# z! b2 y/ B+ X8 o9 {- a9 w
. h& @! _: |: P    Populate(displayPart);9 ~6 Z5 R) T. h- F

8 r4 Z+ _$ w3 j. y( A; r    return 0;
: H1 B8 A$ i6 Y$ B}
0 M# s" ^+ V* O& P
/ ^: I# C: U. J//------------------------------------------------------------------------------8 |; `* r+ O% m, P5 U
// getAttributes: Q# _' R' P7 C! N1 a9 J6 L4 P
//------------------------------------------------------------------------------
$ b1 ]% d; B8 L7 b
游客,如果您要查看本帖隐藏内容请回复

( x* d( V- Y5 X3 `! s  T" @; I* n! b: ]& W" c& `& `: G
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了