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

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

admin 楼主

2015-3-27 11:17:17

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

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

x
3 G, L7 O& w% Z' ~9 l. S

" \% N4 W9 q& N4 t% T6 N
6 S2 K1 ~) e$ x9 e
! S3 K, _% J" J# p
NX二次开发源码分享:NX10可以直接对资源条进行二次开发
4 c0 p  C& ^% X" x4 f这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
0 a; \' o) i' h& Q4 ]# m' x% D/ R5 _9 ]$ r9 q; ]
// Mandatory UF Includes8 S$ k# v5 z. n
#include <uf.h>
' n6 r; H" @, g+ K
. C5 C& c, k/ I! D3 f// NXOpen Includes
; ]5 _6 B& F$ Z) z) j- [6 K7 G#include <NXOpen/Assemblies_Component.hxx>& r) \; H/ R& z& l1 b* M1 g
#include <NXOpen/Assemblies_ComponentAssembly.hxx># b$ @4 I( X, L4 u$ Q9 m' D
#include <NXOpen/ListingWindow.hxx>6 L. g# E! A6 A" ?4 k
#include <NXOpen/LogFile.hxx>
4 A' Z; s1 u8 ~% k( U" r#include <NXOpen/NXMessageBox.hxx>
  X3 P! T/ D* \#include <NXOpen/NXException.hxx>' i9 ?# K, g9 r
#include <NXOpen/NXObject.hxx>( e: ?2 j5 e2 A4 Y
#include <NXOpen/Part.hxx>, `' }. W+ ]) z% c* F- \  K$ A/ @
#include <NXOpen/ParTCollection.hxx>
/ R# \- Z& j' z) P1 `/ x#include <NXOpen/ResourceBarManager.hxx>* I3 ^$ b: ~  U: E
#include <NXOpen/Session.hxx>
( q$ K- d5 R+ B/ M" q#include <NXOpen/UI.hxx>7 H. v5 G3 u0 R) m. a
using namespace NXOpen;
, @1 a8 ~2 T6 l! y5 t7 |/ busing namespace NXOpen::Assemblies;/ ~/ p) T7 R6 q* h' x

) D, Z& {6 S6 H2 ]5 y2 ?// Std C++ Includes
$ N: J/ a; J2 o3 h6 U#include <iostream>1 V: C3 X' L/ W3 t' U
#include <sstream>
* P: n9 b: M, ?" [+ \! P" e#include <map>+ C. Z' |1 O# C. I2 ~" m
using std::exception;( U" c* ]. p! q" @7 K
using std::endl;
8 W+ A5 I2 g9 p9 B. K$ f8 C' Husing std::cout;
2 C9 }' Q3 D# X1 `- }+ p7 Cusing std::cerr;
: |: q4 K2 U# o9 S
) U' v8 J8 j! F// MFC Includes
! k7 U6 i7 ?# e# j8 {" O% d+ V#define _WIN32_WINNT 0x06010000
+ O6 Y9 P( b+ q% G( {$ H  I- n#include <afxwin.h>
5 c# j, ?# S. r# \4 R! N3 M#include <afxcmn.h>( b0 J7 h* z; g' }' X1 e' m3 I
+ |$ A% n/ Q5 }
#define IDC_TREE1   10022 r7 V2 j8 k; H

# Y+ ~$ _. O& b$ K//------------------------------------------------------------------------------
5 p% W4 z. o2 v9 U7 ~" l// NXOpen C++ class . J$ Y2 F6 |; _* Z
//------------------------------------------------------------------------------/ a. P0 }% `- K4 k
class MyClass6 c: v5 O( ~) N6 r/ v
{
1 d' ^$ V$ x8 w// class members
) e/ j6 X0 D, i: vpublic:
0 U! a3 U. n" I- q: ?. e    static Session *theSession;/ D- r* ^* g  g+ @: n
    static UI *theUI;
9 m$ h5 c) c3 x# B( }9 V    static int m_tab;% K# A" P5 R" |( H
    static int m_cbID[2];
+ ]( U+ n$ {. n+ A  `. G
. b( Z# ]# s& y% F; Z% [    MyClass();. |- {' b  @) W# ?8 l& E
    ~MyClass();
- r8 K! v7 I1 ?* w+ h* q! i0 R4 G# M2 `( h
    void print(const NXString &);* L* ?" M) Q  e1 R7 m
    void log(const NXString &);
4 s" k) n7 ~, d2 S2 S6 _( j    void getAttributes(Component *, HTREEITEM);
/ @8 U4 w8 J7 T( V) {+ s    void getComponents(Component *, HTREEITEM);6 o( }" H& W$ }+ C9 F
    int ActivationHandler1(int tab_id);
6 N5 H; Y+ I& M+ s4 T& M    void Clear();
% R  f2 T) x& n9 ?3 C, }    void Populate(BasePart*);0 ^# K) o1 N7 ^5 q; {4 K
    void cbPartOpened(BasePart*);
! M0 D4 S- ~; {    void cbPartClosed(BasePart*);
$ R* o* c$ w  u6 Z
" r* C. U5 B( D( ^- V2 C- Hprivate:- a) s  \2 g" [/ x* U; S- r' U
    Part *workPart, *displayPart;
7 [: _0 d% v( [: K  D8 z7 w: O    NXMessageBox *mb;: O- P" G* V6 S9 @" z
    ListingWindow *listW;4 |9 K# y2 V; \: @( S' l
    LogFile *logF;# f+ Z4 U& N7 ?: l& |: Q
    CTreeCtrl *m_tree;
5 D; V) Q0 z( l4 @5 j    CImageList m_Images;
( U* x3 @0 g8 Y# e/ ?$ x# k# W};
: h, W: Q$ e) d/ {7 X8 s
  r$ j3 _! O! Z1 t7 ]//------------------------------------------------------------------------------5 E+ ~7 M8 j! X% O6 y+ \
// Initialize static variables4 x- H* o3 ~9 `7 W, H( n8 M
//------------------------------------------------------------------------------$ s. T( f% }9 |, ]3 |- N9 x4 {  x
Session *(MyClass::theSession) = nullptr;
  Z4 i/ o+ B8 `4 r! |# K  [UI *(MyClass::theUI) = nullptr;9 O6 v/ [; P: {6 j' `
int MyClass::m_tab = 0;  i5 _# Q9 m  Y) O7 x
int MyClass::m_cbID[2] = {0,0};  s, `9 u5 r: d' T
8 N( b( R# U" @2 `5 m: I* `5 T" I; T
MyClass *theApp = nullptr;
' @- h' m6 r& X% G( U: x3 Q% `* j5 {* |- Z8 J7 a9 v
//------------------------------------------------------------------------------( ?* l2 i* _% H3 H9 a! v
// Constructor ! H7 B' }& t3 j1 f: K- E
//------------------------------------------------------------------------------
  I* L( k; r+ |MyClass::MyClass()
- ]) u# }8 M  K2 p% f{
2 L1 \4 Y. ?0 @2 B5 r& S    logF->WriteLine("GTAC: MyClass Constructor");
7 \! Y* f9 ]; W$ }2 p' P) f3 a3 Z    theSession = NXOpen::Session::GetSession();
8 Q: j2 X6 |' B: w1 F0 S    theUI = UI::GetUI();6 _8 h9 [" ~8 y
    mb = theUI->NXMessageBox();
5 f2 k- v# @" t; m) G1 E) ]    listW = theSession->ListingWindow();& Q. u. a. G$ `+ Q
    logF = theSession->LogFile();" D1 S' f) N6 J

" x9 C6 n! b& w5 c    workPart = theSession->;Parts()->Work();$ H% U' ^$ ]! o" B2 Q5 ^
    displayPart = theSession->;Parts()->Display();
4 T/ O! V5 y2 x+ O: t* X" I- ~3 O7 V$ M# u" w6 b5 y
    m_tree = new CTreeCtrl();
5 w$ H& m) [/ b: g: z3 Z( h7 c+ L, @! [0 @! H( O
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
: ]6 a. D# d( \    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
$ H& @& u" C2 x( U/ P    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
2 w% R5 m. s. B- h" \) i9 @7 [  D( B: s
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
* h" s3 e' r# {    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
* x# C/ [) a5 G        make_callback(this, &MyClass::ActivationHandler1));& B! p' ]' ]0 w7 a" h
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
; f# s. ]# `% y' M$ m$ p/ T9 ~4 a0 G# J( {1 v' c
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
0 d: L0 e( k" j; f$ D$ o; R    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
, W2 i3 z6 ~+ W4 C, C0 |/ @/ |}1 g1 N/ l  a* F' a# M- P

# I, Z* Z$ x9 \//------------------------------------------------------------------------------$ ?1 i1 A2 a4 N% U
// Destructor
' D; i' ^% H$ F) B//------------------------------------------------------------------------------  d, d) S! k: H9 F+ D6 ?
MyClass::~MyClass()0 D* {1 ]* ^. @3 x, k) |1 ^
{
' n5 l" }5 {2 A& _8 V3 }    logF->WriteLine("GTAC: MyClass Destructor");: q/ O3 v; H+ R5 \9 v: @$ _
    if( m_tree->GetSafeHwnd() )
% P# k0 {% x; a! L# ~% l8 q% ^0 E    {
% {2 T; I: S& D3 m( s        BOOL bSuccess = m_tree->DestroyWindow();
6 s+ D6 t5 f/ T& U) _# w+ E7 M    }" O: S1 c$ m( L0 r5 C8 j: V8 M

. V3 \8 G/ j1 }    theUI->ResourceBarManager()->Destroy(theApp->m_tab);% c. ]% l8 P$ U; S/ P
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
; H# D! `$ M, w8 z4 Y) D    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);7 T& ]7 j6 G/ w5 D$ Z6 F* G/ b4 ^7 j

7 r3 O/ t9 h* z5 P}
/ Q* Z: `) d8 ]! a6 r$ Y+ @1 m  T
//------------------------------------------------------------------------------7 d" n7 d2 x5 t* a
// Print string to listing window and/or syslog
+ i/ R* w$ ^4 [' v9 Y//------------------------------------------------------------------------------
+ x' T7 v4 k* {$ |8 avoid MyClass::print(const NXString &msg)8 b, L- k# w( [( ]
{
8 s6 o  I" O6 q2 G) V  \, Y! t    if(! listW->IsOpen() ) listW->Open();
! I% `, X! L% A# A) Q    listW->WriteLine(msg);' d# E. x* G- l7 A2 _6 E
}0 H8 e" S9 E. {' U; w! `
void MyClass::log(const NXString &msg)8 z6 g+ G' k$ l4 U: o# w( K. [/ g
{: h1 U+ e7 A, b* y2 ]
    logF->WriteLine(msg);7 c' {+ T& g0 y* _7 k! M+ c2 `
}
1 T( @/ _( x: ?5 a( x5 Q# z: d( A7 {1 O7 t# t) Q0 O$ J$ f
// Callback triggered when opening resource bar tab
9 Z5 Y5 y7 d- |/ x# v( V! x6 ]int MyClass::ActivationHandler1(int tab_id)
7 K4 v+ F, E! |$ G4 Q& u{# v3 C0 V" ?5 Y$ z9 @' @
    // Get the WindowHandle object
4 ~# o" t4 r* s& o; t% ^    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);( W- n# H$ U# l' t/ x. M* w
    // Get the real handle0 X1 L, T. t8 p) S5 ^& ~
    HWND parent_handle = (HWND)window_handle->GetHandle();0 Z4 c% q$ u' m9 w* o1 g* E
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
2 j' ]- C. q$ h9 B) [4 ]    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
5 }3 _4 s$ m% \3 H; H, ?    ASSERT(wParent1);3 m$ Q; n6 o! W( C* [) o
' P. {# h2 T7 p) l) v' C
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
$ N- j: b' j! o* e    AFX_MANAGE_STATE(AfxGetStaticModuleState());6 a4 {4 F: P5 E, h, r+ x/ h
$ m) n4 l0 p9 Q; z9 _9 d4 A* K
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, ' \# v: L( O/ P7 O
        CRect(10,50,510,1810), wParent1, IDC_TREE1);
& [: t9 Z0 B$ s! i2 z    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);5 m. }3 p) Z; k  Y2 D

1 ]! {) H+ D% B% E3 r    Populate(displayPart);, ^1 c6 ]1 M5 b& G1 ^

9 M8 H4 p9 }# Y- ?1 S# Y* R, F    return 0;
* X8 |& v0 k  I1 [5 J}
3 I9 b' B6 L, z. b9 N/ e! Z& G3 K% F0 Y4 j7 n& O$ M; d" U
//------------------------------------------------------------------------------  u$ q- J8 J% }
// getAttributes
' o* P' u+ R. F$ D0 }//------------------------------------------------------------------------------
6 v( Y8 \0 }* o- z4 K
游客,如果您要查看本帖隐藏内容请回复

' k, X0 @, @9 R
$ ]8 ]) |5 t" X2 Z
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了