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

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

admin 楼主

2015-3-27 11:17:17

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

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

x

" @# c% k7 i" x$ t
: D' ?& L' r6 e1 u+ y9 @& I7 r7 |

: y6 Q# n6 Q& F0 _

# `7 p1 T7 o4 kNX二次开发源码分享:NX10可以直接对资源条进行二次开发
2 S2 c# @  A9 o. m" k这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。/ k6 P8 J" e7 M0 d. Q
1 \/ U. Q; e+ y. }
// Mandatory UF Includes
0 n# h$ |: Q  {( ^6 d#include <uf.h>
  D8 G! _( Z1 |7 s; r
6 E( t8 {" U* n* s5 O// NXOpen Includes
% H3 x7 ]. I3 M3 Z# @#include <NXOpen/Assemblies_Component.hxx>
# @0 {  ]) u1 ^+ n$ i#include <NXOpen/Assemblies_ComponentAssembly.hxx>) o# F6 H* E  d  ], P% G
#include <NXOpen/ListingWindow.hxx>! J: \( W0 e/ ?6 ^5 i9 j7 q
#include <NXOpen/LogFile.hxx>
, a# d1 n5 d2 L' B3 Q' f#include <NXOpen/NXMessageBox.hxx>
5 V6 c4 e. D6 n2 E2 J+ G- Y#include <NXOpen/NXException.hxx>
" h9 ?4 L+ M8 U, V5 [4 `#include <NXOpen/NXObject.hxx>- m* ^/ E+ ?' e* Q! O
#include <NXOpen/Part.hxx>
  o/ \7 j- h, x# a- d- u#include <NXOpen/ParTCollection.hxx>$ G: ]. a/ m1 z% r4 K
#include <NXOpen/ResourceBarManager.hxx>% K9 U; W9 p- P: X6 M
#include <NXOpen/Session.hxx>
. j2 F: h/ F! X1 j$ d#include <NXOpen/UI.hxx>
4 ]. z) Q# U  ?$ }. a0 Dusing namespace NXOpen;
/ Z; W7 O. n  T! D; z! [! {$ [" nusing namespace NXOpen::Assemblies;$ M' k& |9 a+ a9 P1 ~$ ?7 F4 g& \
1 j/ \9 h, Z3 r1 N, T
// Std C++ Includes
$ X1 j; Q! ]) |3 X( k! D#include <iostream>: o, E0 J9 ]  G; L  X
#include <sstream>
0 m  i& d2 P% v, J- O3 `+ d#include <map>, A6 ]! u0 \6 z, l/ M
using std::exception;- {8 V& n% T% @! O
using std::endl;
! F( o; M" T5 k1 vusing std::cout;
& `: l! r2 S9 \" M; k0 z7 n9 dusing std::cerr;2 l2 [' L7 h! X  `( A+ m

( P! I) X' F$ R+ W: m' l// MFC Includes
2 {" ]3 H& M- {& H#define _WIN32_WINNT 0x06010000
  `) f4 H; i: K7 x) x4 V#include <afxwin.h>2 o( N/ p  U5 f/ A
#include <afxcmn.h>
+ \/ N; F6 j" @. {2 {
/ q* v! \. U% o4 }/ V#define IDC_TREE1   1002
$ k( C) }8 B; _2 [2 i, e4 ~, o: P6 J
//------------------------------------------------------------------------------2 `0 B9 z, z' c5 {! {' @; N
// NXOpen C++ class
$ E1 \1 c& g( t( m& p7 s2 y; q0 G//------------------------------------------------------------------------------" o# o! W$ I- x9 k3 m; O
class MyClass5 x$ y* k* G$ h) |2 ?7 Z
{0 ?7 g' ]% L+ D6 B3 H
// class members7 p- `9 @; R4 m6 l3 j( B
public:5 F# J- V& s- \. z: _1 r3 p8 q6 Q
    static Session *theSession;
' ?2 l8 v0 }" H" P/ A    static UI *theUI;$ @9 |$ K" u# J! }" I
    static int m_tab;
. _' \/ }! N( O  E    static int m_cbID[2];1 @9 r# s' `3 q' r. r4 u$ l
  q. t/ K, G0 H1 D2 i3 u" |; a
    MyClass();8 k  @. ]* O/ v6 z
    ~MyClass();
0 l7 W" n. J3 j
& @8 \4 p' r0 N, C( N- h+ b* x2 X, z    void print(const NXString &);: D5 v) ]$ G$ {
    void log(const NXString &);
0 Z& m- B7 d: B) h: ~    void getAttributes(Component *, HTREEITEM);
* E4 J% G1 Z0 }0 D9 C) ]    void getComponents(Component *, HTREEITEM);
% c" J% B; e& W; x6 Y    int ActivationHandler1(int tab_id);7 V3 [& f7 j8 G8 |
    void Clear();
; y1 O1 ~7 P$ p, _0 }: V    void Populate(BasePart*);
8 M" c1 z+ A$ {' l- x* M! q# T+ i    void cbPartOpened(BasePart*);
8 {" o+ i8 G) b1 U8 z! Y! L    void cbPartClosed(BasePart*);
( C% l  r5 Z+ x) Q% ?* G' W5 I  L. }5 f; o
private:+ ~7 w6 Q5 J; m+ ^5 B1 S1 ~
    Part *workPart, *displayPart;9 a0 B" @" W9 W) m+ j
    NXMessageBox *mb;4 g) O& n% q2 J' y# B: z  A; R
    ListingWindow *listW;
: A3 R: }% S) @2 s7 i    LogFile *logF;
4 T5 n$ J# y& `$ E& s, s0 z! N    CTreeCtrl *m_tree;
4 h  o& t$ _4 h+ E    CImageList m_Images;* d' I6 ~, v3 g- X# c
};% F5 G/ [0 e  `$ U

" j! E5 y! B/ O) n2 P//------------------------------------------------------------------------------( U1 `. p! q( Y
// Initialize static variables
9 L* h+ Z$ J& {* h0 M1 A//------------------------------------------------------------------------------, \* [+ b3 K2 [8 n6 u& c, n( n1 t
Session *(MyClass::theSession) = nullptr;
, a8 K, \- H6 X5 UUI *(MyClass::theUI) = nullptr;
" x3 b3 L3 r$ b. Aint MyClass::m_tab = 0;3 Z4 E" ~3 h( [, v# y& C
int MyClass::m_cbID[2] = {0,0};
, B9 @. p: i5 P- a8 p: R0 B6 O& F* r  U" g8 n6 g
MyClass *theApp = nullptr;. V) j" G- P8 M% N( q. v

$ f2 q- ?$ y$ \' C7 n. Y//------------------------------------------------------------------------------
! r$ Z. U/ Y' W' Q' d7 _// Constructor
2 M) [& M/ \( W//------------------------------------------------------------------------------
2 {! g7 f( b9 R4 u( G- H6 v9 jMyClass::MyClass()
# a- m3 a+ _& Z3 T' |& z( D0 [{8 I6 Z" L+ D. \, r3 |
    logF->WriteLine("GTAC: MyClass Constructor");
, \$ O  s! \. h9 ], O2 g9 c0 E" P    theSession = NXOpen::Session::GetSession();/ D" Z; q" }! G) y
    theUI = UI::GetUI();
" D6 O3 u! V9 j! h  A    mb = theUI->NXMessageBox();  I% S; u  k& b: N
    listW = theSession->ListingWindow();: t- E* U) E1 j
    logF = theSession->LogFile();
8 d2 w0 e9 ~1 I; K/ J
) V. A; X3 {+ m. C, H    workPart = theSession->;Parts()->Work();
* G5 o* {# J" {/ X5 n    displayPart = theSession->;Parts()->Display();; x! T; R7 l5 D4 D

# j' s3 A; X  Q2 X+ s2 @    m_tree = new CTreeCtrl();
% Z% v: x7 [8 J' ^5 H! s  m/ U9 _+ b/ @2 R, n$ g* D
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
& N+ f! c& E+ B5 i2 v    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );! c4 ~) B8 {# ]+ `& B1 }7 j
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );5 ?; _  J. F1 ]( O6 o
# w, Y, e3 Q0 J. ~: g9 }  R; _1 H
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");4 Z' ?7 [! P% @0 X# h
    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, ) d$ n$ J/ i0 ~1 [6 z
        make_callback(this, &MyClass::ActivationHandler1));
% ~7 }6 V. f0 W2 L3 k% Z) ?    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
8 }" I) Z0 X- ?( M
; d* s% J0 S7 \    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));5 N( f  a* H& T7 c+ o
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
7 S0 c- O$ f) l4 h- q  {}' o: W* K& `& ?) A, \6 ]8 b
: `( N* p9 D9 t2 l
//------------------------------------------------------------------------------
9 ^! @) q8 L: t1 o# s) l// Destructor
1 A' `4 q$ P* x7 L6 L! @9 d3 m//------------------------------------------------------------------------------  X1 E8 b4 E" m# A
MyClass::~MyClass()# R/ T2 u+ U) s/ A* f
{: l( A1 Q' h# c
    logF->WriteLine("GTAC: MyClass Destructor");
6 D9 y* i! q) s2 P    if( m_tree->GetSafeHwnd() )% R4 x8 {( J' ~( Q
    {7 s3 P; u& r7 \8 G1 o% ]1 z+ X
        BOOL bSuccess = m_tree->DestroyWindow();4 I8 b: s" A) A8 ?/ ?) {# c
    }0 o) d. j6 `9 ^2 A4 R; v

( T5 I6 u* d; U) r! s$ ]) _    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
! L7 T; F/ a9 T! `4 c9 n5 M. N    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);2 A1 ^- N8 i1 A8 r$ b* }
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
5 t3 d! l  K! U2 W2 |2 |
6 n3 e5 E. s/ J8 H( D5 r}
& _8 W! j* ~# |! e' ^, o  ~
2 u3 r1 F2 E2 ]4 @: o. ]//------------------------------------------------------------------------------+ ?- ]: E6 G4 A/ F" n4 j  B9 M
// Print string to listing window and/or syslog' d6 z% U/ Y7 _  d
//------------------------------------------------------------------------------
8 N8 p5 e2 @2 Z0 A  @/ B& g2 ?. {void MyClass::print(const NXString &msg). X) a# q6 W, v. b' C) ~
{
! L: Z# M( o; j5 j    if(! listW->IsOpen() ) listW->Open();+ e& E( Y( t5 C8 ~/ H
    listW->WriteLine(msg);9 r1 i3 ~. b0 g5 p
}
* C$ P' ~1 u) d4 c, ?5 Ovoid MyClass::log(const NXString &msg)
3 h/ n4 l2 X+ t) g, {1 [) p+ H{
* ?  G# Q  z; |* ?6 j# U    logF->WriteLine(msg);
  c1 k4 U- s1 v& s}: i) _4 Y+ K: I9 @  O- h6 ^
& l" m' n# D* k, S$ q: E
// Callback triggered when opening resource bar tab
& ^  p4 i! w+ ]! r! a+ eint MyClass::ActivationHandler1(int tab_id)( g6 }8 x+ ^2 p# e* b: M3 h+ ]
{, c3 |" q8 e5 b' Q+ }8 p' n5 @
    // Get the WindowHandle object8 A0 C6 r7 w9 o
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
! s, G% I! }/ @" X$ }0 N    // Get the real handle
, U; t/ ?1 N/ q    HWND parent_handle = (HWND)window_handle->GetHandle();
- L. T% I' A6 @5 U) ~- ?( A, B    // Get the CWnd object from HWND, FromHandlePermanent will return 0!6 G) A! @2 q0 O1 n! M+ ]
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
6 X, H8 [- m' P8 U7 l    ASSERT(wParent1);
0 j$ h* j6 A% `) a# V
3 T% D7 O( G- s! s    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
: e: _1 I2 s3 X8 u9 V    AFX_MANAGE_STATE(AfxGetStaticModuleState());' l) m% A* V, }
( W) A5 y7 i% V( P( B
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, ! W/ |% y2 u( Z# B2 I) l0 I
        CRect(10,50,510,1810), wParent1, IDC_TREE1);' [8 n* u. T2 c# [5 T% f2 G5 @  f
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);; _& a  F0 Y0 x1 [, z: M! y0 G9 f
6 X- [- f  n- w: t- S
    Populate(displayPart);
+ x: V( `! i1 ]
% b1 u5 ]7 E& A" d+ G3 r/ i( _    return 0;
/ J7 b# m- M% {) X7 z5 w" |% U}
& v, u, n; M4 P/ M# I
( j1 r# o$ Y3 ]. X//------------------------------------------------------------------------------
. b- K& S1 \2 I( j9 w// getAttributes3 O1 _& G8 S& N
//------------------------------------------------------------------------------
: L% k$ ^4 B# W- }; t7 A0 c
游客,如果您要查看本帖隐藏内容请回复

8 D8 }. G/ e4 q7 u$ v) _
' @1 A) O. n# A2 W; s" F: Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了