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

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

admin 楼主

2015-3-27 11:17:17

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

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

x

% t* A2 I) l! k- O

$ t' n9 b# N- |: q' R6 G( j, A: }- E: G4 d6 e; Y3 e5 s" G

( Q7 ?( e6 u5 V& U" }& g& P! ]) S. H0 X% wNX二次开发源码分享:NX10可以直接对资源条进行二次开发8 n$ Y0 Y" G7 r1 M* v5 c, z
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。9 s2 Q( x) \% B+ |( T# \: O5 _# C( r

- v* j  n9 c1 P5 [; t// Mandatory UF Includes( B, L. }6 y3 b" |# Z) s% q
#include <uf.h>
" s& ]. b9 T! y. g' L
! }- I% S/ ]  \) t: K// NXOpen Includes
! i6 ?: _' l. h3 v: ^9 \) e#include <NXOpen/Assemblies_Component.hxx>( k! [8 c  n( t6 j/ K9 b
#include <NXOpen/Assemblies_ComponentAssembly.hxx>& K* S& k- j( ?! U+ `
#include <NXOpen/ListingWindow.hxx>
- ], q* s  E' Z  a1 u& F- [#include <NXOpen/LogFile.hxx>
6 U  F7 t; t6 g& }' |/ A#include <NXOpen/NXMessageBox.hxx>
2 K' b; M# v$ Q* Y$ `9 F#include <NXOpen/NXException.hxx>
  Q& @! y% X" f& I. l. w#include <NXOpen/NXObject.hxx>
# K! i/ S5 g; J7 h: |# A) u2 h- u$ N#include <NXOpen/Part.hxx>
9 y% l1 X+ r7 n/ b#include <NXOpen/ParTCollection.hxx>3 G4 I. G1 K5 C3 N* h5 @
#include <NXOpen/ResourceBarManager.hxx>" l0 _: `( a) y
#include <NXOpen/Session.hxx>3 m$ \1 u9 L* q4 I* v( B/ N
#include <NXOpen/UI.hxx>
( I4 ?+ R# Z( S0 wusing namespace NXOpen;
/ ]( _) ~4 h1 ?1 b  V0 z' r6 `using namespace NXOpen::Assemblies;
2 p9 k; f/ T4 L( J( W8 B" ^. ]1 G5 E
( A( F1 |5 S; j6 J5 s- l4 E! W$ c3 }  j// Std C++ Includes
6 T% R. R+ \& u# k' X#include <iostream>
0 \0 n  j8 P* P4 e* |  y; l8 {/ {1 T#include <sstream>, f0 {7 P5 Q: t* T+ `$ T( V
#include <map>9 T- \) h5 L$ ?  p  d$ z# C; z0 M
using std::exception;
: k( t2 W- {6 o5 c$ \4 t6 Uusing std::endl;- o5 B4 Z: p- R/ C0 r# ?/ s
using std::cout;6 B2 J" u$ D! k, A
using std::cerr;0 i+ I6 I7 I+ g" V

" i# U/ Z# d7 e. e// MFC Includes
0 Z! n) w; l) J  b7 g7 h#define _WIN32_WINNT 0x06010000 0 N1 }7 j2 b5 \/ r5 s; W* w
#include <afxwin.h>
( S8 b9 Y0 g% {#include <afxcmn.h>  d$ y) e6 f* D, O# i
! t' ?8 Y$ c- o4 ~* D7 |# z
#define IDC_TREE1   1002: z/ f% P" i. m+ n5 ~- I
  i3 t; V3 A9 l( x7 }
//------------------------------------------------------------------------------+ [4 Z$ ]7 P/ Q
// NXOpen C++ class
1 a7 @# Y  f) @, H6 z//------------------------------------------------------------------------------$ ~, T. }' g5 i' v
class MyClass
; q  s& [3 X+ X+ `. J  p{8 _! s8 Q& K( q, M- g4 S. S
// class members
, }% T1 T0 s9 A0 J$ g- b. H( F0 ]public:3 S! `3 ^- ]4 b* Y% k
    static Session *theSession;! P! W( w4 c! n9 `
    static UI *theUI;* E" J6 ?4 Q* k- ], z
    static int m_tab;
2 L6 k: g7 P  g, z8 f    static int m_cbID[2];
* U% o% l. i( X% C  s6 n* H# W  f3 C1 U) D" j
    MyClass();
2 H5 D; L- ?4 k$ h+ X7 k% H# Z    ~MyClass();3 J) g. W0 y' W: S' J

' u) ?8 o4 {7 G" n$ l! R    void print(const NXString &);
- g: _8 O8 G' N' b; a/ Y5 A    void log(const NXString &);
  p6 B0 j. @) j8 B    void getAttributes(Component *, HTREEITEM);* k) P5 Q' T: V& @3 U4 ]% l& N0 C
    void getComponents(Component *, HTREEITEM);" l$ U7 C. F" F" \' [. Y
    int ActivationHandler1(int tab_id);
+ b) m; l5 H; x" ?, s. T. D4 g3 t! Z    void Clear();  B$ a1 Z% z* O4 T+ W: g6 j
    void Populate(BasePart*);
' @# ]( i; J. p; {3 F& ^% S    void cbPartOpened(BasePart*);& c0 u, O& }4 q  x3 O9 _
    void cbPartClosed(BasePart*);
, h$ M+ [3 b1 J4 u# S1 {
  q/ n- [( M9 C3 ^private:
& S; |) [  t# R3 V  a) \2 q$ z    Part *workPart, *displayPart;
4 |, P5 u" e( v1 H% S1 ]: P4 {' \& |    NXMessageBox *mb;* W) o7 Q8 X7 p* m& i8 p
    ListingWindow *listW;/ [- _4 U0 k; W, s% z
    LogFile *logF;
# }7 a8 B! D/ F    CTreeCtrl *m_tree;
! I+ j" N5 R) p7 ?/ y# {    CImageList m_Images;
, x) h0 w; ~/ S  T};9 x1 D+ P9 K, n/ o$ w: K
6 I; Q% a9 ^' `6 L
//------------------------------------------------------------------------------! \+ R. s% t& i2 e  p5 C. [2 g
// Initialize static variables9 |. ?* B% v- b
//------------------------------------------------------------------------------6 M7 q* E: E  I- y# E0 U
Session *(MyClass::theSession) = nullptr;$ G" b' b1 N& v2 {# @+ r
UI *(MyClass::theUI) = nullptr;
: G) x! F1 V7 |1 D! Y+ Eint MyClass::m_tab = 0;  a2 c+ u/ i8 S7 d
int MyClass::m_cbID[2] = {0,0};
0 D: s& n, ~5 n% z5 W
/ k. Q: n1 L; p7 t" MMyClass *theApp = nullptr;
9 W8 U. E6 o8 e7 Q) G6 t) C" s4 X0 V' w1 E9 i  V* D/ {
//------------------------------------------------------------------------------3 q: z5 C! M6 ?
// Constructor 0 ~1 c) V( ^! b& p, ~7 H( a
//------------------------------------------------------------------------------/ u% a2 j/ ~# v" p+ G
MyClass::MyClass()
) p, ]! Y. @8 j# i( J, F{' S: n; @4 |/ p0 y4 w/ J8 k
    logF->WriteLine("GTAC: MyClass Constructor");
7 o/ y& ~7 m8 }    theSession = NXOpen::Session::GetSession();: T% Y2 C6 P4 F$ C
    theUI = UI::GetUI();
* s, r2 q, ?6 v: P; _    mb = theUI->NXMessageBox();
) F% y9 Y% q0 l/ L7 m. e    listW = theSession->ListingWindow();
/ n, w% W9 U! F2 @$ {9 W! u    logF = theSession->LogFile();8 }4 |+ C( W' n# W' m
& ]% c( R; z" ?. L
    workPart = theSession->;Parts()->Work();
9 R0 \) A9 x$ [& \    displayPart = theSession->;Parts()->Display();& y, Q$ f/ o/ W; u

; r* Q- T9 [$ ?    m_tree = new CTreeCtrl();
! G+ S; [* v2 V2 k: I/ H) U' m+ p/ n+ W7 D4 B/ q) m5 {. t
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);" K% d) q- x+ R2 v1 ^8 m" X' ?
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );7 u( C8 J5 D$ q4 X2 _" _
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
. k  r* R$ |2 W' T$ n1 v" M4 r2 p5 f5 w/ M) q% g3 R
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
, U& {( Q& c( |- i9 m* e7 V    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, ; v2 {7 ~# a( Q& V3 s/ X1 T
        make_callback(this, &MyClass::ActivationHandler1));
$ e# _& u* i. f" B2 ^7 x8 Z3 Z    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);- Y( c- S( Y, L- y; L3 ~

, O/ h, x5 J) y/ a. {4 D    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
/ F+ N$ v6 c) }6 Z$ D. F6 h; j2 X    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
# @9 _+ t. Q  M! I3 N}) M' V, \; F' P7 D( v  l4 K3 E
# L% v) S; `) Y2 V  ]3 w2 B
//------------------------------------------------------------------------------$ x8 a: w# B8 B& z
// Destructor  @1 ]3 a- O; S* u+ _1 C* R
//------------------------------------------------------------------------------) p( K* i& w8 ]- x/ }& Y
MyClass::~MyClass()5 m4 _$ u. K( a: Y$ S1 p
{
$ S/ p0 a9 u9 P8 q. F3 u    logF->WriteLine("GTAC: MyClass Destructor");
$ c6 ?" y  L+ d7 l2 h0 e5 t% j8 [    if( m_tree->GetSafeHwnd() )
/ e- p) a$ ~5 Y* [/ p6 {/ {    {. u) t6 k  I6 a% w" E
        BOOL bSuccess = m_tree->DestroyWindow();$ r# H: [" U9 o9 U/ }
    }
0 H8 y8 O9 j- G# v% Z; `7 q5 ^; G% B, [% E. U9 B  p
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);. u- F) M' f, b1 B5 G1 K
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
) j4 g# A, e8 ~2 q# G    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);. q0 G+ ^$ s5 [7 q% ~

" }) q$ v4 J! }9 J1 x}( I0 @% y/ _: m. V
. S8 Z! H( j2 J4 m* x+ j5 L
//------------------------------------------------------------------------------  Y8 b6 D$ Y# g4 ?' \) Q! B/ x) g
// Print string to listing window and/or syslog
/ w' s( k& S8 o) D1 {//------------------------------------------------------------------------------
, v" c7 C) d: r& A% {2 r  Wvoid MyClass::print(const NXString &msg)# ~8 t9 F1 o9 h( u$ L; c+ ]" c
{
5 B' G$ u& s' z- X    if(! listW->IsOpen() ) listW->Open();$ |/ r* _- `# [) d/ p2 s" \
    listW->WriteLine(msg);
, R6 v) C5 w, ]/ C}
4 c3 B% Q, l) S( N, o  l7 Uvoid MyClass::log(const NXString &msg)
! p$ g: d. D4 e% x# B9 i{
& x& h" d8 ^9 P8 b' G+ |    logF->WriteLine(msg);
7 M0 l, j- m- s  i5 C! F4 O}" {7 p* z6 c+ U" ^

4 f$ H) P, \$ W) }8 r( ?// Callback triggered when opening resource bar tab
4 g4 I9 [; U2 g$ m/ jint MyClass::ActivationHandler1(int tab_id)) Y9 Z: G' I. ]! F
{
  O3 S# ^; e6 _3 B# H. j    // Get the WindowHandle object2 [' G  C* O5 E- Y
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);& j4 n* E5 n- T! @
    // Get the real handle7 ~4 V- q! L9 S
    HWND parent_handle = (HWND)window_handle->GetHandle();
4 o9 \/ E2 Z' O: `8 j    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
! H; G. k7 v) @2 X" _" O1 e+ X# D    CWnd *wParent1 = CWnd::FromHandle(parent_handle);& b3 h, o' ~7 T; n+ a! |
    ASSERT(wParent1);/ o, l6 P: ^* F1 {/ ~, z% ?

+ I9 Q+ T4 q* P: u    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
. b0 x) b) p, H$ a* I    AFX_MANAGE_STATE(AfxGetStaticModuleState());2 n! u) X; r% a5 v0 e6 C0 D$ l
4 F: D7 A* V( c' _1 E
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
( c9 e8 ]) f( k3 U* K        CRect(10,50,510,1810), wParent1, IDC_TREE1);) m5 c) K. O# O7 j; h! T
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);: G7 j# C/ x! l6 E$ _0 T) w

2 ^1 \( U/ A( @5 V    Populate(displayPart);
# e" E# B& o2 y$ V. [5 [+ j9 Z8 ~3 t, i/ `
    return 0;, f) \: Z$ Y/ J$ V
}
+ E1 i* X/ I) l: J% G' n
/ g8 ^( @( O2 A//------------------------------------------------------------------------------
- x" L& e+ z& h/ g! v9 P' K' {: K+ U// getAttributes
+ ~6 \; W0 w' J* O6 x" g//------------------------------------------------------------------------------+ h( [! S, ~7 L( F
游客,如果您要查看本帖隐藏内容请回复
) b# Q! d* }: i; F  c/ {: u* _
7 F8 A/ `" D" z6 ^" b
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了