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

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

admin 楼主

2015-3-27 11:17:17

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

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

x

, A' }! {7 w' H# ~1 Z

& ]+ W7 t( m$ `+ [7 |( v4 L4 t% w2 E& s) [) F" S1 H/ |

+ `$ A- F6 S9 K* k" b- y. @) aNX二次开发源码分享:NX10可以直接对资源条进行二次开发& c4 g/ q8 d2 c$ R" t
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
  c0 Z( F  S/ t- @3 u0 @3 s
; L  A; S$ c" V! J// Mandatory UF Includes: [3 n4 B# `; k. Z7 w2 K
#include <uf.h>
; l; q3 @8 ~# r2 K+ s* Z8 d/ P
# C$ E2 c  L# A( ]// NXOpen Includes  |$ z( e8 a* p
#include <NXOpen/Assemblies_Component.hxx>
) ^: N: f4 g7 |#include <NXOpen/Assemblies_ComponentAssembly.hxx>
0 \0 O! w) \6 }% u#include <NXOpen/ListingWindow.hxx>, R8 M: _8 o' p- i
#include <NXOpen/LogFile.hxx>
! n4 u1 m5 Q3 r9 W+ b#include <NXOpen/NXMessageBox.hxx>
. w7 _1 J7 c) O6 D#include <NXOpen/NXException.hxx>
: o, `7 {* K5 q" m# z#include <NXOpen/NXObject.hxx>" [4 }. A7 @) x0 [$ q  s* K6 p
#include <NXOpen/Part.hxx>
# m% x3 l5 x( l1 ~/ A1 k#include <NXOpen/ParTCollection.hxx>- D7 K2 K6 ^0 h$ e
#include <NXOpen/ResourceBarManager.hxx>
; M, j& M- \5 Z& @3 ^#include <NXOpen/Session.hxx>
' g7 t/ n( h& ?8 h. M" Q( B6 b6 R7 }#include <NXOpen/UI.hxx>* k1 s2 k1 o" @2 x+ Q. g( y
using namespace NXOpen;
+ h) e, x2 {8 n. @8 C1 Y% d! husing namespace NXOpen::Assemblies;/ S/ G0 U% w4 O7 Q7 b. A

7 H9 I0 l7 _3 j+ T  f// Std C++ Includes
7 l8 u2 i$ m$ ?' Q. a7 w. Z- o#include <iostream>* n& @4 }3 n, p; g
#include <sstream>3 j' C. f9 x/ i0 n$ A
#include <map>
: c) y3 t! R: m6 J( C. E5 b, \1 @using std::exception;
2 ]+ H/ Z- c, H- ^( k: M- ?using std::endl;
6 c0 X" n+ H; W, p! X1 V: Lusing std::cout;
5 P% X* S! s6 q0 R  K  `using std::cerr;' e) E% b. \: \: |4 Z- `( o! Y

$ U* v8 g1 Z1 c! {4 }// MFC Includes
; w) v$ P7 s9 D9 z: W1 `#define _WIN32_WINNT 0x06010000 + w! l: n8 k# B# f, w
#include <afxwin.h>
% j9 w$ a# d9 \7 e  |% w- n#include <afxcmn.h>, t. S. y- _8 y6 Z8 X; s; P) Q! r
" {+ F5 u2 e! b, X$ T
#define IDC_TREE1   1002
; u+ P1 R% I4 b/ k. @( g! H
8 y; ?* S4 @6 \9 Z//------------------------------------------------------------------------------3 ?- a# o2 v1 w2 O: @
// NXOpen C++ class
+ P, }* e' Q6 B2 o- [0 q5 \4 s//------------------------------------------------------------------------------8 J, W. ]1 ^5 [7 w9 s& b  {
class MyClass, ^( o' j/ H4 ~; F/ c/ H! E
{6 H7 H/ W/ C: H$ g  |# W
// class members  I8 U$ S$ h; X4 B
public:# e( j# e8 O% R9 D/ W: M
    static Session *theSession;) y6 D+ h& _$ W( }9 k5 v
    static UI *theUI;9 ~. o% }  m! z& C  q0 o
    static int m_tab;
3 N" b( d* P  R0 P7 F    static int m_cbID[2];
9 |1 D- F! T, g0 p6 G5 g6 Q9 t4 X% c. C  L: _& x
    MyClass();
% ?, V) D; K- p( G1 a- I    ~MyClass();
/ e' J3 E, z2 J7 }. D5 P9 I8 U0 z3 D
    void print(const NXString &);
& ~3 Q4 t3 p, s  p, S1 U5 B( h    void log(const NXString &);
2 m6 d% o* q0 r9 }: ?( |    void getAttributes(Component *, HTREEITEM);
9 Q0 O% G8 u8 m; t  h    void getComponents(Component *, HTREEITEM);4 u/ T$ Z. _  B0 T) \
    int ActivationHandler1(int tab_id);- I' a+ n2 A( t+ A, v0 U( r( k; h
    void Clear();8 M, i, O5 P6 t( G5 H/ y3 n
    void Populate(BasePart*);* u( o6 Z/ X7 e8 g% v
    void cbPartOpened(BasePart*);
# L+ _3 M- v( n0 m+ d    void cbPartClosed(BasePart*);
. J6 K; h6 O# c, v# p! X; |. y6 w( m9 ~
private:
* m9 q% l# N2 W; b$ }& P    Part *workPart, *displayPart;# y5 M' ?$ s7 q. `8 S
    NXMessageBox *mb;
; a4 R! a2 v8 C$ N9 \    ListingWindow *listW;
6 w$ V6 y0 J% r9 N  N4 M    LogFile *logF;  H7 c5 \1 B8 x9 g
    CTreeCtrl *m_tree; ) W) A: X& e  Q# k( }+ _6 c: M
    CImageList m_Images;
4 I% m9 T$ i4 a% B6 N; ?};* L& l. T- x/ `; o/ R3 H1 C

2 Y; E7 j) A, r  |& R& B//------------------------------------------------------------------------------
3 }9 _9 \4 G0 r! |5 o// Initialize static variables
2 G) Z+ g4 C: d$ i3 n//------------------------------------------------------------------------------8 w% ^7 B% a) V) @
Session *(MyClass::theSession) = nullptr;: O' C, q) x. j, h( c
UI *(MyClass::theUI) = nullptr;
& w! V1 M8 |8 D( D( Z% J! wint MyClass::m_tab = 0;9 ?, V( A' G' |" d1 v! ]
int MyClass::m_cbID[2] = {0,0};
0 \3 `2 I0 n- X$ r2 _& s. p7 q1 E; U6 o) X8 n* Q6 R" j) `
MyClass *theApp = nullptr;
& ]5 r' D' A" ~# U6 E2 F1 S& D' `5 ?
: e, e7 S5 ]8 X/ T" \2 L//------------------------------------------------------------------------------" \, s+ S, p+ C; ~5 o
// Constructor
6 ]: ?6 e9 `) i) Y. z7 F- `//------------------------------------------------------------------------------% l, }1 d; b, e& x# L5 ^8 _, O
MyClass::MyClass()
* k2 q) d$ f( Q* l5 E3 x2 t; r{+ r0 |5 ^; v5 E; O* [- W* L1 y4 s3 D
    logF->WriteLine("GTAC: MyClass Constructor");: n0 q# n( o/ u4 Y  l- j
    theSession = NXOpen::Session::GetSession();5 a! h0 V- o0 N0 m1 p
    theUI = UI::GetUI();
; X( H" i0 L! o* I7 O( D    mb = theUI->NXMessageBox();& s9 n2 S# L8 r' ]4 r. {
    listW = theSession->ListingWindow();- n2 Y0 B$ [5 F* j& F; n
    logF = theSession->LogFile();- R% }, P$ V' ]& ?

  o* ^" [$ X* g. C6 i) F    workPart = theSession->;Parts()->Work();+ f: \% s* E* p& b( Q
    displayPart = theSession->;Parts()->Display();2 t1 O1 j- Q2 ]" v

. H6 Y9 d8 i! X  @    m_tree = new CTreeCtrl();
/ i  P) b, k8 @3 ]5 p+ e) Y9 r3 w: S' |. V
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
% N5 f6 p6 J3 n8 b2 d    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );" K# b4 f! u1 Y3 X5 A
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );( X6 c) {: d% b! n9 \* G

6 h- v8 V9 P. @% J# M    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
, G2 U! S/ X2 K) P/ g2 V) e    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, : C* q: r6 G/ [1 R  Z
        make_callback(this, &MyClass::ActivationHandler1));8 @1 i* ]) J, p* l; M, q( Z  x  |
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);" j2 M! ]+ c* k* ~

- P! J; |4 q( L% X9 W9 S    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));8 q: E: _4 X8 ?7 k7 o$ z3 `' ~
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));: Q! B4 \5 Y( Q* H# I
}
. {/ `. I1 P% ?3 t
9 p  Y7 e2 L: z5 ~- o3 Z//------------------------------------------------------------------------------" D: o( b4 A* ?: R' [
// Destructor, ]# Q, c6 z9 v/ w  K3 S2 i
//------------------------------------------------------------------------------
/ I8 [- k# ~+ o) ]( k5 p( K! ?MyClass::~MyClass()/ ?) Q- x, O$ V0 u. r( x% y" W
{7 ^# m- G" g: ]
    logF->WriteLine("GTAC: MyClass Destructor");+ v/ }, H% ?( @/ a5 B$ z$ n
    if( m_tree->GetSafeHwnd() )' ^0 r7 E0 X2 N, N$ L
    {  k/ H% I' C9 \1 r) J  ]
        BOOL bSuccess = m_tree->DestroyWindow();+ W  }/ r9 D6 ?8 ?% _+ m
    }
$ ~4 V" E7 T% Z1 y9 {4 l2 W2 `& M& g: J( }
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);. P& j" `- T+ S/ f
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);# h! G  X4 g* ]. S# _# e" S' ]
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);0 u2 x% _- e5 V0 w4 M7 h

- \4 c: u: V) r) i  z3 Q, r- |, [}
7 g- t0 u! q' N1 Z" G: [% s5 o1 A% W( W' r
//------------------------------------------------------------------------------
# }) j' p8 F4 ?. i// Print string to listing window and/or syslog7 {+ c6 N6 U4 R+ B; N
//------------------------------------------------------------------------------
; s( B' _- ?. c" s( _1 H' H6 Lvoid MyClass::print(const NXString &msg)( l6 a% ~5 K& _- W2 n
{% N9 O( d' s! a( E
    if(! listW->IsOpen() ) listW->Open();
/ x1 g. f3 V' [) I0 F8 c    listW->WriteLine(msg);
& u3 N2 j) N# y- k8 S; ?9 k' y}8 I, s7 P( H4 p: z+ e
void MyClass::log(const NXString &msg)8 w# k9 n* }/ X. @% s
{* I- l; ?- k1 |& |
    logF->WriteLine(msg);
+ B/ G' i& p+ N5 L}
, T" n/ [; J0 P. ^; Z! `+ t  P; Q: {- x* k
// Callback triggered when opening resource bar tab2 A9 W4 `& X; M: L( |7 }* I! a8 A
int MyClass::ActivationHandler1(int tab_id)$ T/ S% t$ `* l( F8 u9 ?1 K5 I' K" ?
{
9 B! l1 ?+ V8 p3 N8 u    // Get the WindowHandle object
: E- F6 }( B6 t' m    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);( p' I( V7 N" r( B' ^5 n1 ~. s
    // Get the real handle+ F; ]& W- X3 f! Q7 ]) S
    HWND parent_handle = (HWND)window_handle->GetHandle();
# m' g+ n7 [4 d+ {6 x    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
/ K6 W  ~! \5 ~8 M: a" ]    CWnd *wParent1 = CWnd::FromHandle(parent_handle);( H& U8 t. d2 H# ^# X* P
    ASSERT(wParent1);
$ T3 O/ P* l2 X1 I' E) U7 v- M5 o0 q, `+ d3 \4 X$ t- ]. g  G; j
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
& d6 e- O; H' O$ k. a# d- {    AFX_MANAGE_STATE(AfxGetStaticModuleState());: {3 F: H5 K$ G* t0 E: ^; a

1 D2 F! j7 I9 z# W% ~    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, 6 {2 C# e, w% ~. A5 U1 Z+ F: G( S+ t
        CRect(10,50,510,1810), wParent1, IDC_TREE1);8 n3 V, ]3 q- J# v( r. `8 m' o
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
1 u6 {) Z( c- @( \+ ^, h3 N/ \4 q  q* c, d3 F( U: S9 A4 S
    Populate(displayPart);# _+ p/ G+ V& @- O4 x

+ b" O( S! `% P2 P& \    return 0;* Y8 j0 F$ {1 T! H
}4 U; S( C) I6 v, F. B( K) R

+ h2 ^" ^1 u2 q1 D/ Q( C' j//------------------------------------------------------------------------------2 |+ l; A3 m8 [3 a( B9 p
// getAttributes
4 f8 \! x% A: R3 N) t2 }//------------------------------------------------------------------------------
' A% H! x  u: l3 h  I
游客,如果您要查看本帖隐藏内容请回复
/ r) ~' ]1 k6 }
1 J3 {* e* @. ]4 n; Q. t
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了