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

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

admin 楼主

2015-3-27 11:17:17

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

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

x

5 S% C; T3 ~2 r4 K7 c8 f' M
  d6 H' W8 |! L. ^) {# b% @
: h. K: n8 @2 Y  }3 ]& R9 w0 p% Y$ u. R

4 B5 f- N* \. f. A1 jNX二次开发源码分享:NX10可以直接对资源条进行二次开发
& S$ ]+ h" ~& Z: U' Q- J6 D4 A这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
. A% R+ _9 y7 A7 \& H9 ?
* m3 u, ?4 E+ V// Mandatory UF Includes3 \7 r1 u5 e5 v/ ^& h2 M# Z, \+ N
#include <uf.h>
! ?7 C% f) z! H2 a& [0 |' P  L7 T7 [" Z$ P( |8 t
// NXOpen Includes7 y+ ~/ {4 c. C% [. T5 c
#include <NXOpen/Assemblies_Component.hxx>% k! X% ~) W& H( I8 H4 @
#include <NXOpen/Assemblies_ComponentAssembly.hxx>
1 L1 K* G" Z0 G8 t- M; V#include <NXOpen/ListingWindow.hxx>& g1 n+ S- @' J( G! a. o
#include <NXOpen/LogFile.hxx>0 c0 Z6 y, F" z/ n/ M8 G# \
#include <NXOpen/NXMessageBox.hxx>7 P# y. |6 l% c6 x0 o0 Q0 Y
#include <NXOpen/NXException.hxx>
) ^" a8 g; g1 x( H. w: y: O#include <NXOpen/NXObject.hxx>  Q* Y) \3 M2 }* L+ R4 l
#include <NXOpen/Part.hxx>( d8 z' H- W* }
#include <NXOpen/ParTCollection.hxx>" K+ I; H0 T4 V2 O/ I
#include <NXOpen/ResourceBarManager.hxx>/ U( g' A3 [2 |8 B  o3 j
#include <NXOpen/Session.hxx>
8 G1 X: O/ c- i& H. F; X  b1 T#include <NXOpen/UI.hxx>
; d6 a% S7 y) q6 _4 y( susing namespace NXOpen;6 p  ?/ u. C6 w  e
using namespace NXOpen::Assemblies;) j# U; a4 g/ {+ N; P$ f7 @, M
$ z0 e7 Q+ n5 B& M
// Std C++ Includes; D, i  C  F/ Z. y1 X7 a
#include <iostream>  h2 l6 l3 c) W  S. y( r7 a
#include <sstream>5 M! `0 I, u4 b# X. ^( Y  g
#include <map>$ V8 \. C; v- R6 [
using std::exception;* W5 R& T: Y+ Y
using std::endl;
3 j- z) B# T: d7 f8 ?using std::cout;
* h- H. H  T1 J$ Cusing std::cerr;
0 }" A. G  C% a& [* S
) y' F. W! `! V, P  z// MFC Includes& f0 o' m- m" C, k4 q  q2 Y4 s" R, H! f
#define _WIN32_WINNT 0x06010000
* F$ C- g, y' J$ T) w; W  v#include <afxwin.h>
" b$ K) l0 X0 Z( a- r: x9 V) `#include <afxcmn.h>6 ?: X* t; M4 d  [( g4 d. H
4 u# ~" w# Z7 Q% A8 P
#define IDC_TREE1   1002* O- }# K8 h2 u/ G* X
, S' ~+ d2 P3 k* r! M& }3 ~
//------------------------------------------------------------------------------
; {5 t% S1 Q: ?6 u8 s0 ], n7 ?// NXOpen C++ class
. e/ A# T; \' G//------------------------------------------------------------------------------  ]- `" A0 K5 N- [- z
class MyClass9 K7 f, l/ ]! G% n
{: W' {- V/ Z/ q1 g5 K# S
// class members' T0 E* s& Q  v% c! ]* [( a2 ~: `
public:
& j/ O/ v# O! s1 o/ L3 ~/ [    static Session *theSession;
  n9 y/ `- C, G# K    static UI *theUI;
$ B5 e3 {8 ~8 h+ [7 J    static int m_tab;
8 T1 l4 H) X. O    static int m_cbID[2];9 I: G; g* o3 [6 z6 b' q
: Z8 P' _% t6 o9 ]$ S
    MyClass();" M0 P+ |2 i! F% X4 ]- ]
    ~MyClass();
9 h8 C6 W4 Y# ~: w, J; d5 w; D9 z: x0 E0 |
    void print(const NXString &);
& u4 u$ L. U* X+ _    void log(const NXString &);
- ~% C) r& _7 ?5 ]4 l, o. Q5 K2 ]    void getAttributes(Component *, HTREEITEM);! V% I2 g5 m* f' n( M: z  a
    void getComponents(Component *, HTREEITEM);0 y1 b" {/ `, L' h# T
    int ActivationHandler1(int tab_id);% p2 L% o0 [) a  `; s8 ~- s
    void Clear();# K! X2 y* i/ j) c
    void Populate(BasePart*);
& J4 B" W; F8 n' r8 A4 W) q' J/ P    void cbPartOpened(BasePart*);0 x0 d: R- i" }* n
    void cbPartClosed(BasePart*);! i7 }9 w3 w6 a/ j
) e2 i/ ~3 e6 N8 ]
private:; e8 o* e& M6 j8 M
    Part *workPart, *displayPart;
" I# `2 T& {8 [  u' B! a    NXMessageBox *mb;
6 B+ K8 v$ d' ^3 Q, o( y; v    ListingWindow *listW;7 v# l7 [- p, L3 K
    LogFile *logF;) t, f! T; [0 o9 x+ ]+ @* \. s
    CTreeCtrl *m_tree;
6 ~0 G4 }* _  v    CImageList m_Images;8 m" l) m. q) o+ j
};& U+ o4 I& W) E/ O& g$ ?: U

9 p: h% N' I$ V( S; Z//------------------------------------------------------------------------------4 p5 d, ~/ x: A7 W
// Initialize static variables
9 ^, n$ |9 M6 t8 `, q1 f1 B& M! g# W//------------------------------------------------------------------------------
( l3 t* ?$ g* U: pSession *(MyClass::theSession) = nullptr;
! ~; `; x! b* _6 {UI *(MyClass::theUI) = nullptr;
1 D" H. x" Q. M" n6 f0 lint MyClass::m_tab = 0;3 @$ `& a9 \# U' |6 N
int MyClass::m_cbID[2] = {0,0};
, J, H( I6 e+ C* g$ V/ R1 |
$ ]0 {& @( |5 r9 t8 q) u( w: RMyClass *theApp = nullptr;
: t  e' K6 _# z: l
5 H. m% j2 J# a//------------------------------------------------------------------------------. @3 f$ [" t4 p% g" h# E
// Constructor
' `% o8 |; M/ M% a, u//------------------------------------------------------------------------------9 K% s# O5 O( d0 y( A
MyClass::MyClass()) Z  B0 L; h1 K! `1 ]+ E" a
{
2 T- c4 }, z, {* V, X9 D    logF->WriteLine("GTAC: MyClass Constructor");
) V( n- U& T% a( p; d    theSession = NXOpen::Session::GetSession();
. ?2 e' c& I# Q( k4 ^0 q* r    theUI = UI::GetUI();! ?7 U- n) o+ W2 o$ r$ F: u; U) A
    mb = theUI->NXMessageBox();4 r# @" P! p4 A
    listW = theSession->ListingWindow();8 ]* w; j+ \/ [) F
    logF = theSession->LogFile();, S# C% C5 S2 O0 x
/ L3 {! y: ~* U$ N! v& C# [
    workPart = theSession->;Parts()->Work();
3 e4 S# x  P& C1 }" t    displayPart = theSession->;Parts()->Display();* r& ^) `3 L% U4 b: f% B

) G) N# L0 F7 V: o5 Z& G7 k  H) I    m_tree = new CTreeCtrl();
8 J. G0 y( z2 U+ I4 Q
: D# L# M7 X( h; ]1 s) q4 a    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);. D* A& j- w) _& C- H4 W6 V
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
3 A; z3 \, X! Y' g7 E) B9 a; O' Z    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
% R. u2 i& H( a9 D! U" X
& b7 r& T, O' H* b3 @0 M    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");1 U1 ~" f% W% H9 Y7 B8 `. w/ m
    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
% G) c9 `; J. ~, d6 a4 z* T; Z        make_callback(this, &MyClass::ActivationHandler1));' ]2 |" _/ \# V5 P
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
, f1 m% T; x& {/ J( Q  U" T9 u# F9 `) h7 N; b, L
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));+ g* a/ u+ C6 x. o
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));" B- @5 s# ~1 {' _- w( ~
}
& i2 I: [# H& K! U+ s
' R2 o) Q6 s! H//------------------------------------------------------------------------------- M: e( x  w" \/ q' o( |4 l; j
// Destructor0 q2 u1 {) n# t
//------------------------------------------------------------------------------
7 \" \! c5 a+ X! E  @0 OMyClass::~MyClass()
% s8 I. O& M' H3 S! U$ m{$ ]0 n1 Q) ^# p1 Y$ H
    logF->WriteLine("GTAC: MyClass Destructor");8 ^- r- ]5 @% \
    if( m_tree->GetSafeHwnd() ), H. j0 n3 Y- x7 w7 a4 ~, D2 S
    {
, Q. a  @* l' o, e4 \2 Q" ~9 N        BOOL bSuccess = m_tree->DestroyWindow();
, Z% K8 j0 J3 j2 C+ N  e/ w# V    }& j9 D9 |) F5 ~' ?

6 w  J# J' o$ v" K    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
$ z' M+ @  S1 z: ]* c- l& S1 G' s    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
, ^0 u5 j' u. T6 `2 \    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);# o6 r5 \# L5 [# b& v2 u( c! M& k
( i& t  Y  @& N) t; v* B- r& d( R
}' S! O1 P; m% b' ^$ f! Z+ Z
4 n9 ?5 j4 W4 j: F- {' ]
//------------------------------------------------------------------------------
' b, F3 N0 m$ s) S$ _// Print string to listing window and/or syslog# B! P8 z3 }: [, C& k+ T; i
//------------------------------------------------------------------------------4 B# K8 h% O% u& H+ H
void MyClass::print(const NXString &msg)
; R1 b0 r! _& [{2 d4 p: j% W5 W1 s7 o3 F
    if(! listW->IsOpen() ) listW->Open();
: R8 u* a/ ]3 k6 f6 p2 z( N    listW->WriteLine(msg);) s8 D" r0 U8 {& ^5 h
}4 v$ W2 F4 A) U2 n% J5 \# Y
void MyClass::log(const NXString &msg)
. a% ]% m, a! w; }3 z{2 s5 c3 L( l% ~( U( k- O# Y2 C" }
    logF->WriteLine(msg);; O6 h: V" j- U
}7 W4 Z* M/ b, C6 L# Q9 e

2 O* W" Y" x) [7 n* \! r- l// Callback triggered when opening resource bar tab# X8 F0 P+ ?- {0 o; }3 ]+ Y& X, h& R
int MyClass::ActivationHandler1(int tab_id)
% i2 X  M7 \  B% p( t$ E$ V1 G# v3 e{. l8 U/ w4 @+ M* k
    // Get the WindowHandle object
! r* T% j! g8 d+ h0 r    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);0 G6 W1 p( j/ Q  a% Z
    // Get the real handle
9 o4 |3 _' `, x( U3 Q( p3 R    HWND parent_handle = (HWND)window_handle->GetHandle();
2 q+ e2 v" w9 Y* N9 g    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
9 b: {5 a6 }3 n4 e; Z9 ^    CWnd *wParent1 = CWnd::FromHandle(parent_handle);- E: X8 H, U; p' }
    ASSERT(wParent1);
8 C. q  J$ T4 [; ^; R* V# f/ A
9 d" f! b6 O- d; {! @+ X    // Switch module state to avoid Assertion from afxCurrentInstanceHandle! J( M$ c' m8 C: E
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ U+ e5 Y9 g1 T! n' V4 s: E
4 H( `; O- ]2 h) ^$ c( g    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, + A5 j( B- H+ Y; O0 l0 }' R
        CRect(10,50,510,1810), wParent1, IDC_TREE1);( c" V, W' Z' O: h8 @# L- U
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);( g  V% ]8 U9 j/ ^" O, t; j

2 n% t) K8 g& W/ t5 w# Q& a: m    Populate(displayPart);
' J; b: J, `4 H4 L5 @# ^) N) A3 y8 R
) h4 C* `2 _2 P# O6 e3 S: M    return 0;
; z& H' a6 w5 j) K$ K9 _6 \4 j}
+ e2 x# R  J& u/ _6 Z$ W% \" q4 p$ D3 t: {
//------------------------------------------------------------------------------. F+ }7 H/ r5 U  e
// getAttributes3 |5 D* |9 C1 ^# a" M' A6 e3 H$ n1 _
//------------------------------------------------------------------------------
, Z+ `+ n  f. q* Q3 s4 w
游客,如果您要查看本帖隐藏内容请回复

0 r. a8 n5 ^* P% ~! ^; w+ M, r
$ P# P/ y, s" `* V7 C
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了