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 20880 41

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

admin 楼主

2015-3-27 11:17:17

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

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

x
- a) _' q1 N2 W3 S

0 d# D% x; ]7 t, y1 b
6 S+ B! Z) \) u8 K' s
. B: p1 L" U# [1 J5 @9 {0 I3 J
NX二次开发源码分享:NX10可以直接对资源条进行二次开发0 U+ `4 A& Q3 i* I
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。+ t: Q; h7 M- x2 B

2 z7 L8 y& Y$ T7 {6 m- p// Mandatory UF Includes
3 J% ~7 d& U0 e, s#include <uf.h>
, D: }5 Y+ l5 `9 v8 e1 X
0 N5 u2 Z8 r7 i* [# ]* y// NXOpen Includes5 s: G% m3 s  S  M
#include <NXOpen/Assemblies_Component.hxx>
$ X9 g7 _! R+ L# h- p#include <NXOpen/Assemblies_ComponentAssembly.hxx>
- S& L5 J: O' P( {; F#include <NXOpen/ListingWindow.hxx># b8 t* |  C1 `5 S4 V( \- T
#include <NXOpen/LogFile.hxx>
' z/ y1 h3 v7 @7 o* _#include <NXOpen/NXMessageBox.hxx>6 i( j: X+ S2 u5 i* o9 u# R9 n8 x
#include <NXOpen/NXException.hxx>8 t4 w& x4 F0 g3 I; y2 U9 Z
#include <NXOpen/NXObject.hxx>
* `- D' ~- D! [: c% h7 w#include <NXOpen/Part.hxx>7 t$ N5 D8 N2 {
#include <NXOpen/ParTCollection.hxx>7 y# {; j! u+ Q6 F  M
#include <NXOpen/ResourceBarManager.hxx>
& I" L3 q' o) C2 b* I#include <NXOpen/Session.hxx>9 F% C( g" T0 j7 `
#include <NXOpen/UI.hxx># |, T! `: \7 \
using namespace NXOpen;
' ?6 u% o8 s$ v# B3 @- Q5 ~' U; vusing namespace NXOpen::Assemblies;. U5 r! L' r$ d% T- y

! L' M; s( [! g7 z6 D. X+ x7 |7 ^// Std C++ Includes
# q' _% D' V# \6 A( A#include <iostream>$ F: H8 L: b$ ?, r9 l
#include <sstream>
9 a6 k, V) w! S6 i6 U. w# g9 z#include <map>  }! [6 R  h: i8 a( P3 g
using std::exception;
- R3 [' H' D& zusing std::endl;
/ c0 f/ U. A" \2 rusing std::cout;
0 ]! |) O3 k0 C+ U, T2 Zusing std::cerr;/ O3 L0 \" o4 p+ N  U- S
# y5 U4 u7 y0 J7 o' A, `
// MFC Includes
+ l& j3 Y# e4 l: t; M% {#define _WIN32_WINNT 0x06010000 $ J# Q4 N" Z' V! Y' Y4 o+ E
#include <afxwin.h>
  B8 g3 J, R9 C6 y' F8 X8 R#include <afxcmn.h># X7 l- l( x+ n1 f

8 T, `/ l" c9 O3 \7 ~; [#define IDC_TREE1   1002. Y2 @/ Q1 X# Q% B. A* G

0 \4 n) f$ f0 K( \3 v1 U& T//------------------------------------------------------------------------------
$ P3 Y5 D1 p+ x3 F. z( e// NXOpen C++ class . u" Q6 I% x1 m* d: A6 [& Q* W
//------------------------------------------------------------------------------
: f/ M, T) k" b, a, A( xclass MyClass
$ R# F8 g$ V. ?" y* t! H{( s" c9 i0 f/ }5 Z
// class members) x3 b. X4 ^7 l4 U% P( ]* v
public:8 P, B1 u3 b2 U% `( x& Q- ~
    static Session *theSession;
' O" y4 i# m0 Q5 n6 D$ C/ v    static UI *theUI;4 ]. J( `) V$ d+ z
    static int m_tab;
# ?- E0 B# U! x    static int m_cbID[2];
$ y; U0 z; i6 {. o% d! s' e  w9 r% x" U0 Q  b: b4 `0 ]
    MyClass();
* ^/ E; u+ _7 O+ g6 ?" v# W    ~MyClass();
7 S( f1 {" h- ]
9 R6 z. D: [* P/ b" W# J) [    void print(const NXString &);
) G7 y9 r. U0 t% E- O. c7 s2 P    void log(const NXString &);
  g3 C$ U& _" i    void getAttributes(Component *, HTREEITEM);
" o- w$ e2 R: D! a5 `" u% i1 |    void getComponents(Component *, HTREEITEM);
: u: J9 [: h) u4 B% |    int ActivationHandler1(int tab_id);0 _' u" F8 y: K# @+ Q9 H# v4 Y5 i
    void Clear();
9 u$ K+ m+ T6 }) a) a$ J    void Populate(BasePart*);% `9 n3 c* H1 Q! W/ h$ x* n2 w8 g2 S0 Y
    void cbPartOpened(BasePart*);% ~: L* E3 ~+ k
    void cbPartClosed(BasePart*);" x3 ]2 l. X! U/ [% O

' }) f9 k- g5 D% nprivate:
( ?" i" E0 ^( \$ j    Part *workPart, *displayPart;# @: D: P6 i& h
    NXMessageBox *mb;
, B3 e; z, G- i# }/ b  }" s3 J$ j    ListingWindow *listW;
& K' E% `: {- }3 u    LogFile *logF;
' T! C# g% h" J. X- }    CTreeCtrl *m_tree; 1 ]. V% c' n7 Z. U
    CImageList m_Images;
: Z# ~6 y; @! [" N  e};8 A1 v! O5 J9 s+ l7 Q$ Z! C
) y5 D- e: E( l, X! G% i6 K1 f  D
//------------------------------------------------------------------------------
/ m+ u! C1 {4 q  H+ `& x) Z// Initialize static variables
2 a, G7 [0 E# [, ~5 k* c//------------------------------------------------------------------------------, N/ i3 Q: g, C# L) U
Session *(MyClass::theSession) = nullptr;
- g! Y8 P( W$ ]. q8 z7 ^UI *(MyClass::theUI) = nullptr;
8 I) N7 g3 b7 r( ]int MyClass::m_tab = 0;( i! ]% B: P  |% k5 o- x
int MyClass::m_cbID[2] = {0,0};
; Z+ |3 U) J. @3 S- r
+ ?/ C( d% o6 o' d# w4 bMyClass *theApp = nullptr;2 L# I/ \: D) Z3 K+ k8 u5 b

( ~6 \' T* j' N1 _//------------------------------------------------------------------------------4 f, e' i3 `* o! d* q' Z6 k3 ?! J8 r
// Constructor
! p, P' ~& N& ]//------------------------------------------------------------------------------1 k& E" e1 K! ^' k) T
MyClass::MyClass()6 D0 @) u) c# p" h! o$ F
{+ G, r0 ]  _% [- Q% ?. ?( x
    logF->WriteLine("GTAC: MyClass Constructor");
( p+ N: f( N, C8 G9 W    theSession = NXOpen::Session::GetSession();
: l$ y6 f2 O( ]6 `0 o    theUI = UI::GetUI();
* z; F! Q* G& T1 I7 f4 U' ?    mb = theUI->NXMessageBox();
5 ^& a# x) J2 j% c8 @1 M7 b% {    listW = theSession->ListingWindow();$ _# P: h/ W5 z  F# C
    logF = theSession->LogFile();9 ?/ ^; C9 s/ E! E- X
$ {: K8 b1 D7 K% h
    workPart = theSession->;Parts()->Work();
1 U5 x  r( ^: B8 T    displayPart = theSession->;Parts()->Display();8 @% ^# L! j' H# c

  I) h$ X! Q( }/ i8 J    m_tree = new CTreeCtrl();
1 O$ A: H$ I7 k- E6 Y# K6 t+ P# |; c" U- v& T% o0 L
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);+ r8 ~1 W3 q- w6 V6 \) ?- W
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
' q4 j- T$ E8 Y    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );( H/ C5 ?4 A% C

3 L$ I5 Z$ p8 b, X    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");/ }+ x# d! g/ e, u$ a
    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
/ U8 D5 P% b& j4 R4 h3 ?- R4 |( Z        make_callback(this, &MyClass::ActivationHandler1));" h0 C- ~- W: q. y
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);$ r; U. S/ F4 g

) i& x' ?5 T) f$ {: T    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
' Q& Y5 K* H6 ^. [    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));1 Y' \; g/ q* s7 Z+ R9 m
}% k6 K/ W4 L' T4 [$ h! d
: a  ?5 G7 @3 u
//------------------------------------------------------------------------------- b& g$ h  j( \
// Destructor
1 D9 b+ i, a' X! G6 d//------------------------------------------------------------------------------4 d* ~. g6 v& j" B% M/ ?2 K0 T
MyClass::~MyClass()
0 S: q/ N+ \2 ~8 k/ i{
5 ~. V: k: r) V) o9 i5 B9 ^    logF->WriteLine("GTAC: MyClass Destructor");
! P* Q( i) m# A, X. B: @& y    if( m_tree->GetSafeHwnd() )" ~  A+ B& Z4 Y& m* g
    {
# K5 G: q2 w' W# y        BOOL bSuccess = m_tree->DestroyWindow();
7 s' O5 \) R( S9 k. ^6 ?+ ~' _    }+ U; P5 X6 r: G) U

7 P( q4 F1 g! n( x    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
! S$ z+ @8 l7 [    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
5 R" P" ?1 z0 O& _* K' M    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
" F/ _2 t- Z' r3 S& r* V( l5 V6 N, ^
}
3 S% K8 w) T) D+ C; M1 q6 Z5 a( R. q3 }8 A, N4 a, r: ^8 L6 S  y4 n* a3 Q
//------------------------------------------------------------------------------+ |- S9 X. \2 C% c, T) }
// Print string to listing window and/or syslog7 Y$ B; a- l  ~6 R3 P7 L3 S
//------------------------------------------------------------------------------
2 z  B+ D) f8 e( |  a+ H3 Fvoid MyClass::print(const NXString &msg)
: i5 k5 J4 g2 e9 Q! n6 g{. Y( G4 e& ^3 d0 A
    if(! listW->IsOpen() ) listW->Open();! a% M  W( y, N! j
    listW->WriteLine(msg);
' J; d: T4 ?/ R+ q}. ?0 n" B1 J, t1 l
void MyClass::log(const NXString &msg)! N& `6 G# I& Z' x
{- ]" Z' h# ^5 n
    logF->WriteLine(msg);
4 r0 d5 h3 e& U7 y6 ?. u4 O5 ?2 s}
4 h  Q/ M# S( @  r/ O8 a
# R$ ~' g4 a. q6 o// Callback triggered when opening resource bar tab( {3 l7 V$ @) R& t7 K3 S
int MyClass::ActivationHandler1(int tab_id)
( L1 Z9 g: @, f2 Y{
# L. @/ I/ u5 v4 x' {! s" ]& J    // Get the WindowHandle object
* X2 W- E1 j1 {  T    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
, @7 n1 o5 m( L. j+ l    // Get the real handle
. |' w8 ~% w7 u" Q    HWND parent_handle = (HWND)window_handle->GetHandle();9 Q, g$ q8 x9 F7 O' o
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!) b2 S4 |. _$ e' l4 j% k
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);& e- D& b2 _$ N$ T. r
    ASSERT(wParent1);7 A4 e1 U. J$ w% O: f# e( G

: }* R# q# C7 v0 T. {    // Switch module state to avoid Assertion from afxCurrentInstanceHandle( X( X  m5 A4 Z7 i, w
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
5 A1 f0 W. s- u4 `+ G9 \: r' g2 r6 \! j, H
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
# `! e7 e6 Q  w( b% d        CRect(10,50,510,1810), wParent1, IDC_TREE1);
$ m3 x5 B1 c; k+ C8 w1 Y) B    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);2 E: I( P5 I  L' P( u. E5 M' L
) v  |  _' k& ~+ x+ f5 X3 K
    Populate(displayPart);, t7 v0 G$ F: N  ]5 S9 N; Z
8 d+ i/ ?1 L1 D# c
    return 0;8 f/ i8 `4 k) z% g7 ?+ a/ F
}
! K9 W  H2 E1 l  m7 r# [
* J, s5 E+ V9 Q//------------------------------------------------------------------------------3 F& g0 y% G. Y
// getAttributes
3 T: j% x1 n6 D0 L! \//------------------------------------------------------------------------------5 l" s4 y2 \$ @: y1 R, V9 w; L
游客,如果您要查看本帖隐藏内容请回复

/ x- b3 `3 u, P* J$ ^/ d7 L6 J4 a/ J6 ], T. l) q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了