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

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

admin 楼主

2015-3-27 11:17:17

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

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

x

" _# b0 i+ b- O+ N3 i! ?( w, H
+ C3 |2 H2 J0 ]0 U

; y* H' y& G8 \7 j: \9 E  q
* N+ c/ a; w' ^0 G0 A, r( J  z
NX二次开发源码分享:NX10可以直接对资源条进行二次开发# l9 r% n' L) o
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。" _) t5 |; N1 i/ W/ |. k

  R& K" [: `. k2 T4 R// Mandatory UF Includes6 g& X' B6 Q# X; S- G% U
#include <uf.h>; |) {. R6 s, d, t; n; V( ]+ Q
! L* z+ q) z6 G, ?8 _% \+ f
// NXOpen Includes) h+ i  ]$ j% `1 D8 u9 V
#include <NXOpen/Assemblies_Component.hxx>
$ |0 _6 K9 n2 |" Q4 C' N  g#include <NXOpen/Assemblies_ComponentAssembly.hxx>2 X+ A, S$ Q  S  S5 z
#include <NXOpen/ListingWindow.hxx>, I3 X  f; O3 q1 G1 z8 j
#include <NXOpen/LogFile.hxx>
: F1 _: L0 b; M- x' S4 x#include <NXOpen/NXMessageBox.hxx>. C/ k- \& C# k4 m: [, w( O7 d
#include <NXOpen/NXException.hxx>
: M1 B6 a: X! j6 l#include <NXOpen/NXObject.hxx>
( w* ^+ }! e' b- E#include <NXOpen/Part.hxx>
; o, }0 h, H4 `' }' Y, ]#include <NXOpen/ParTCollection.hxx>
7 j( ~" F$ c$ X#include <NXOpen/ResourceBarManager.hxx>
  x, S: s3 N* [+ N#include <NXOpen/Session.hxx>, T1 @. H# r/ I" d! A- r5 A
#include <NXOpen/UI.hxx>
( F6 G* k9 ~+ S: f) xusing namespace NXOpen;
5 L6 |) Y  M4 K# U) musing namespace NXOpen::Assemblies;
1 ~. n+ e$ V3 C7 n- @% x$ v8 Y3 a/ v6 q2 w5 K
// Std C++ Includes
- j% u! r+ D9 F/ g/ O6 R1 Y#include <iostream>4 ^/ z! P- @! p3 W( K8 d( v+ F- a3 ~
#include <sstream>* E: q/ t* P6 `! H8 C& H! E7 F
#include <map>% p' t) z, D1 `: {: u
using std::exception;! e, s0 S/ e. k" X$ T* E& @
using std::endl;& ~+ z9 K  ~6 [, A/ ?6 Q
using std::cout;7 \: S0 c' b+ v0 o, s# B" \
using std::cerr;
' V: }) g2 Y$ a+ C: V4 u6 [# n) ~4 J7 A+ r
// MFC Includes$ N( q  a& D) Q
#define _WIN32_WINNT 0x06010000
1 b# K- J* p5 @#include <afxwin.h>
' d9 C$ A7 o) ^# c: a5 p8 a. `#include <afxcmn.h>/ e7 S8 {6 o. P  i. q0 P4 U/ a
* Q/ y1 ?" v8 g
#define IDC_TREE1   1002) j  e/ O) H; K$ m; O# F9 ]0 b3 J
$ }+ Y9 w0 e2 l8 x4 e
//------------------------------------------------------------------------------* C6 G( ^& I, Y( Z+ d
// NXOpen C++ class 7 x8 L( V7 h7 K0 x( G! d& K
//------------------------------------------------------------------------------
3 p4 Y" O  N0 @8 {! e$ j' Oclass MyClass+ @% H. h" c: W! B7 Q+ ]6 g
{' k" S+ ~3 q+ `/ _
// class members
& B* l( z8 ?* [2 n! apublic:3 k2 a+ m0 r5 c5 x# T) B* n' ?5 f
    static Session *theSession;3 t3 ]& N+ G- Z8 B) h! e9 |
    static UI *theUI;
* @! U& K+ m! R$ r$ V* s5 ~    static int m_tab;
8 W" `% R- e  b4 i8 b1 x; e8 W: q    static int m_cbID[2];' V; n1 w& L" f9 G1 a

' [& C8 I2 P: w1 B- q# O9 ~$ C    MyClass();
, z1 ~. Q' Q$ k2 K    ~MyClass();" J0 X  y( w2 s( b( x% i2 N0 o" W
1 G7 @4 M% B! [' f. z  h4 |. C
    void print(const NXString &);
& R  n* x0 C% i, U/ ~$ f    void log(const NXString &);
2 B6 Y, D, ]- C4 S' p7 @    void getAttributes(Component *, HTREEITEM);
* Y$ @) W. Z- w4 g% U$ F) y    void getComponents(Component *, HTREEITEM);5 C- H& j, `  P
    int ActivationHandler1(int tab_id);
0 g" ?2 o. e% N7 E) g$ @    void Clear();
# a0 j5 m1 p2 V4 C    void Populate(BasePart*);
* [7 @6 Y4 q; [! V8 ^3 L; P    void cbPartOpened(BasePart*);5 ~& U) f% Y7 R! u+ Y
    void cbPartClosed(BasePart*);
3 {! O6 i+ t5 o; r3 V8 R$ V: D# k3 \- T- l
private:( X* ]. h& k8 R! p- y" J6 `2 M
    Part *workPart, *displayPart;
0 \4 [0 `; a6 H4 B( a    NXMessageBox *mb;; |" F4 N: E# |1 {$ H8 P9 D
    ListingWindow *listW;) n. k( J6 |" [1 a# m" {
    LogFile *logF;
: v; @3 c$ n$ t9 ^1 B9 q( h    CTreeCtrl *m_tree; 1 o; H1 C8 D6 S: p6 }" h6 u
    CImageList m_Images;, h) q& U8 U- @7 s1 l) I
};; G& _& c* I% S7 d! P9 o4 c6 E8 o) ?
7 w8 [! \1 ~0 w5 [7 I# ?, t$ z
//------------------------------------------------------------------------------
) y9 J2 g& C3 W% U/ E2 u* e! W// Initialize static variables
, w( j( g' C' _& g5 ?5 V//------------------------------------------------------------------------------
5 R5 Y# k, R3 s* Y9 F, tSession *(MyClass::theSession) = nullptr;" O( G, `3 B4 J9 _1 [
UI *(MyClass::theUI) = nullptr;
& v  n5 Z4 T" ]% a: ^8 Vint MyClass::m_tab = 0;  j* y3 S( D/ ?+ I+ U
int MyClass::m_cbID[2] = {0,0};" R1 }, b- }; i
4 Q3 k: l9 Q6 [" k% V4 o
MyClass *theApp = nullptr;7 X7 J/ `0 A3 d# u- v! i

6 M. \, e  H- g//------------------------------------------------------------------------------
: a5 @( Z5 f* e% J0 j// Constructor 0 h% E, A& y4 O5 A6 W3 {6 X4 o# m( _6 o
//------------------------------------------------------------------------------( b4 r6 l9 U2 L7 l8 Q0 N* ]7 i
MyClass::MyClass()
9 W/ e) L9 Q0 q5 V4 v5 c{
2 z3 A* I% J+ l! A5 M    logF->WriteLine("GTAC: MyClass Constructor");6 F8 ?: p! Y; U- d& _6 {1 T
    theSession = NXOpen::Session::GetSession();4 n! W- H# y0 q+ q% `
    theUI = UI::GetUI();- v5 d/ T, |0 Q! x* P
    mb = theUI->NXMessageBox();
( E1 g/ e; z2 h' \3 b    listW = theSession->ListingWindow();0 B; V' d" @8 f4 J7 q
    logF = theSession->LogFile();% J7 |2 T3 z  i) z
2 g1 h4 Y$ ^; B8 r# W
    workPart = theSession->;Parts()->Work();
& Q1 D# S, M+ ^    displayPart = theSession->;Parts()->Display();
8 B$ I3 I: d' Q: x. y3 U9 Z% I4 ]& f5 p. V- F" u+ _: F3 N! F" ?
    m_tree = new CTreeCtrl();# J3 L9 G  `& j; M5 V

7 ?4 w! @, q& e- H5 M; d8 A. e    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
  Y9 x" A' V% O* p2 X+ V    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );  m8 V3 |( u1 h+ r% g( A* B
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );6 V0 K: ^1 A8 ]$ I
1 w! I; |5 }% X+ d  u
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");! w: I$ n. e9 k0 M
    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, 0 D$ Z3 C6 {2 |
        make_callback(this, &MyClass::ActivationHandler1));8 i1 q7 j8 d# S2 _2 y
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);- v4 r7 ?! B* X5 l. I# t! f& R* |0 M
, O6 q! r- `* o7 a2 c
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
! L* D4 _, q2 c+ Q    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
  \0 m9 V" t% u& W5 a/ T- I/ m6 i}1 s" n7 m, J+ [, t3 d8 @( Q& D
+ z/ o- X9 w4 @: q& G" Z
//------------------------------------------------------------------------------: Z4 F- U7 p: ~
// Destructor
9 l: d: n- k( o- i7 q//------------------------------------------------------------------------------
8 y$ C4 H4 t$ K* P! l# b; F9 {, xMyClass::~MyClass()
- o0 t6 v  Y7 h6 N; f. S{  q% S7 l5 o7 y
    logF->WriteLine("GTAC: MyClass Destructor");% _3 P. i9 L8 F8 R; k& ^
    if( m_tree->GetSafeHwnd() )
1 d3 \- X2 V5 I+ ~' `3 P/ T* E    {
  b7 l; _* A) g% m/ f% i        BOOL bSuccess = m_tree->DestroyWindow();
5 }5 g1 Q1 C6 a+ `: D    }( `7 m, ^; L, B* W2 \1 z2 t% E0 K
: O- z7 H; N7 r: \) ~
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);, K, c7 M3 e6 p) m- H
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
8 V1 `- }6 a! i! p    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);- S9 w& g) o/ ?; V" [' }
/ i& [% I3 C: q$ k1 R, ?7 U
}
+ `/ W( i+ R# S7 H9 o
* e0 R5 c/ C" i1 |//------------------------------------------------------------------------------
( R- {+ W" R5 `8 X// Print string to listing window and/or syslog
  U% N/ b  u/ Z* L4 v) E8 s+ Q//------------------------------------------------------------------------------8 `- O* ]2 L' I, K+ z9 c) S) z
void MyClass::print(const NXString &msg)
3 i( z+ {8 s! O" l1 Z1 w{) c% i4 B# K- D" V% `. f
    if(! listW->IsOpen() ) listW->Open();. D* b4 t3 q7 s& A, `, d
    listW->WriteLine(msg);  o& w" k# m' u. m$ W4 ~1 m4 n
}
0 b* `5 P& V1 o* X/ W! Qvoid MyClass::log(const NXString &msg)( [1 Q9 ~$ p7 j4 q) O/ l
{# c9 t8 j1 x) X1 L; V! W* `
    logF->WriteLine(msg);
; q9 v( D5 g5 y9 R, e}4 J3 f3 J& T$ @) m& w7 C

1 t( q, u/ u( D- [+ Y// Callback triggered when opening resource bar tab& V( e6 {0 p# j
int MyClass::ActivationHandler1(int tab_id)! J& J' U5 w' l8 a' o) S) t
{
" t+ j- ?& F# t    // Get the WindowHandle object1 l5 D+ J" Z( N& L3 i0 }  F& Y
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
& u% w" n4 I4 W, ?5 F    // Get the real handle
+ @! W# c; |1 r; h3 ^% r! R    HWND parent_handle = (HWND)window_handle->GetHandle();
) u& t) Y9 \4 k: ~% f/ P# ?8 u- A% S    // Get the CWnd object from HWND, FromHandlePermanent will return 0!/ K9 X  z2 u! A: h3 P. g
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);. |, d4 \1 E6 U3 ~: e2 {, |6 l
    ASSERT(wParent1);
; R3 L  h$ B! _" y4 i! Y7 E- I3 u" u8 q1 s# Y' C% g- g& E; R
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
, v% S$ }5 |  e; O, U    AFX_MANAGE_STATE(AfxGetStaticModuleState());! ]1 M& k2 c/ `1 _4 l; {1 y

) W- R1 D+ ~7 O5 J0 a# [9 C  A* j* e    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, % F# K+ l8 {$ K4 ^# D4 f; q* g
        CRect(10,50,510,1810), wParent1, IDC_TREE1);& u. V/ `4 @/ R& P
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);2 p( O* Q" ~& I" R8 C) r6 p
% K- F3 d  x& H9 i# X& g9 b
    Populate(displayPart);
/ D+ `1 ?. T2 j8 ?
* r5 f7 G5 q" n4 L, {5 h3 A    return 0;0 x. ^; _3 B# R. P/ x* N7 S
}
/ q7 i+ c& V: R! @; K  }
: `& _+ A$ {2 j//------------------------------------------------------------------------------
' l" U, O: Z( ^9 A1 A5 k* s; W// getAttributes
, \2 x" Z; Z9 g3 O//------------------------------------------------------------------------------
2 ?& ]! p1 E: E! B
游客,如果您要查看本帖隐藏内容请回复
0 `3 i" _2 j" c+ p7 w! S

# U5 y. Q0 O- f( W" I& X5 g# A4 M
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了