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

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

admin 楼主

2015-3-27 11:17:17

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

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

x
" a: B2 N& d& U% t* r
1 Y  S) d% O5 k/ T" G
* O. \, l0 U- L$ \! H6 v( @

) S* N) z5 _; d2 r$ yNX二次开发源码分享:NX10可以直接对资源条进行二次开发. @! U" M! i" h8 Y; C8 ^7 k
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。5 {) R- s* z, ?0 ]' c7 a
9 [3 M$ M( h, J1 r' n2 D! H
// Mandatory UF Includes
0 f" B$ {* y' U, F4 c8 L#include <uf.h>
/ ^6 E! ?2 e6 G- k$ S9 Y6 I3 h& t# Z0 g* m/ ]
// NXOpen Includes- i7 |6 C8 d+ u$ {- q7 b
#include <NXOpen/Assemblies_Component.hxx>) J$ e4 t2 ~+ q# O4 [& Q5 n
#include <NXOpen/Assemblies_ComponentAssembly.hxx>
: ~& n' L' v# F" ?7 G  j#include <NXOpen/ListingWindow.hxx>
+ P* n0 i0 Q  x1 F8 P/ m#include <NXOpen/LogFile.hxx>
, G5 r) G* t% j- l: }8 T% Q2 @#include <NXOpen/NXMessageBox.hxx>2 p7 y% r, i* H+ I
#include <NXOpen/NXException.hxx>
  r5 _3 L7 y6 [& f  q* O7 O, s#include <NXOpen/NXObject.hxx>
" A4 ?0 E; Q, j* f2 ?#include <NXOpen/Part.hxx>) y+ {! |2 U- f3 @6 `
#include <NXOpen/ParTCollection.hxx>
4 r, S0 A. ?; }. O- c6 M5 ^, C#include <NXOpen/ResourceBarManager.hxx>( a3 }4 Y: ~# v, s4 V: C2 j. S
#include <NXOpen/Session.hxx>& O5 F- x1 {, q- a
#include <NXOpen/UI.hxx>
# N- Y9 F3 f2 f1 E! M7 ousing namespace NXOpen;; D( G: b4 [2 w+ s" X2 n( a
using namespace NXOpen::Assemblies;+ Q0 o& P8 L6 U$ V
8 [% U/ ?2 @" d0 n
// Std C++ Includes
' `$ a  l& m4 y5 a, z+ ~+ q#include <iostream>
; C  n4 |+ g5 X# R  G#include <sstream>
2 C! _: a0 i$ m) d5 U  s* y# n#include <map>
- q' W' r6 z) kusing std::exception;
/ @. d$ L8 Z; g- F9 Xusing std::endl;; f% Q' i% ~# Z' b
using std::cout;
. o7 o* T: X. J/ T& @using std::cerr;
) l8 P8 w+ p: ]$ A9 E8 y' X- c0 Y9 n( E; H5 h
// MFC Includes
9 F& F$ P# |% g) `; i0 z#define _WIN32_WINNT 0x06010000 # w: e! ~* Z# b) g( V
#include <afxwin.h>8 E/ h7 G8 N! i7 `
#include <afxcmn.h>
6 I! k  o1 `0 S# a) \1 D: K) D0 U* L) e$ q* m
#define IDC_TREE1   10026 A+ j. c3 L3 V; Z, k0 K5 G. ^
: j3 F5 M9 C! [/ O! \( D
//------------------------------------------------------------------------------
7 B  S# ^% q+ D/ ]- w+ F2 \// NXOpen C++ class
4 o/ J9 B; {% k# H% Y( q//------------------------------------------------------------------------------) G$ F- B7 t: ?$ W+ Y
class MyClass- i! i$ g2 w5 Y; ?6 s
{( E1 g' o/ S, t/ {/ H
// class members
) Z3 r% d& Y. k( ?" |) ~" R& ?6 Epublic:
% D& u! r9 ^2 ?& m    static Session *theSession;+ _4 \) e- }. z7 e7 H; l
    static UI *theUI;0 A5 O" e, s: Y2 K! x/ o' B
    static int m_tab;
2 O, S3 p. X# D6 R) \    static int m_cbID[2];
* t% X( v+ P1 ^% J2 j' o
4 L' Y5 z' H( u# f7 x    MyClass();
9 q, ]) E- Q) ?& Z    ~MyClass();. L& E/ Z4 y1 N& p

( J/ Y3 m; c/ E$ O' v( C& C4 S% I    void print(const NXString &);! U. n0 f+ Z+ H/ `5 Q
    void log(const NXString &);
6 h& \6 B( I' B7 v1 t7 \  s    void getAttributes(Component *, HTREEITEM);. s# x2 \% w. J- E* Q& R
    void getComponents(Component *, HTREEITEM);
9 c  B+ [9 g  @    int ActivationHandler1(int tab_id);
& E8 Q3 A1 X) M# h9 _    void Clear();$ j& T0 {8 O/ B; [* r
    void Populate(BasePart*);1 V6 {' V" W, z/ }1 X& |
    void cbPartOpened(BasePart*);/ N8 f9 N2 k3 P1 O+ n0 H
    void cbPartClosed(BasePart*);9 Y- P  V# t: C7 y4 A" C

+ q- m: Y# E' M, q" {private:
, N/ n2 `( t; C. H9 Q& Y    Part *workPart, *displayPart;  c) b0 k& p, s/ m
    NXMessageBox *mb;
# H5 }0 i9 s. u4 A    ListingWindow *listW;
# `+ o  F" @2 N    LogFile *logF;" x9 p2 a' a8 }+ f
    CTreeCtrl *m_tree; # x7 a7 {/ {- h  k
    CImageList m_Images;; w# b6 ]0 r: K5 [$ S6 b
};1 U( g6 i1 y- e( P" d
! x% K5 G# v3 {0 k! p. k6 t  H
//------------------------------------------------------------------------------
) k3 B: M7 _3 n// Initialize static variables. `7 w8 i( ]' C$ n6 O
//------------------------------------------------------------------------------
2 V4 V% b( D& D( E) t! YSession *(MyClass::theSession) = nullptr;
2 a8 e# d4 t+ ^UI *(MyClass::theUI) = nullptr;
( H8 |  B3 f" k* H# Bint MyClass::m_tab = 0;0 C  @1 Y0 L% _+ v, O) ^3 ]' p
int MyClass::m_cbID[2] = {0,0};" ?& H$ ~: H+ P# A9 ?7 V5 H
# y/ y2 `! R6 I4 f$ W" S+ U- K8 ~
MyClass *theApp = nullptr;; e) n2 X' `4 U4 @/ E
( H& G/ c% l& g' m. ?* T
//------------------------------------------------------------------------------
* m" G6 u! Z) n( ]// Constructor ( y- ]+ ]8 C. Y0 V& a7 q
//------------------------------------------------------------------------------
: i9 M$ o% {0 S! xMyClass::MyClass()
) A' s  R; }+ R{
) K8 J: U* \; g2 o. @5 p    logF->WriteLine("GTAC: MyClass Constructor");
) I0 C" t5 L& h    theSession = NXOpen::Session::GetSession();  t! ]: o* q" Z% c" l; H
    theUI = UI::GetUI();% W: R8 s2 p9 a$ y
    mb = theUI->NXMessageBox();
  f! h: m: n( G    listW = theSession->ListingWindow();( P# {: z! m; @5 F$ A
    logF = theSession->LogFile();
* g( {) d! b6 K5 M3 |8 u
) v2 K( \" b8 L4 P0 K2 N: z6 X    workPart = theSession->;Parts()->Work();6 B- W# S9 y' w& V1 {
    displayPart = theSession->;Parts()->Display();- j+ w6 W' n) t" z

6 u2 l% T  q% p; Z    m_tree = new CTreeCtrl();
, t! U7 p- m, n  l
& y& s1 u3 c' K2 u- A0 T# F    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
/ q" B/ `0 `+ y; b% _    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
5 w3 h. u, \, ^  v" x    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
* a, h/ c8 U& ]& r* S
+ c1 c/ w' v( D9 n- {) ?    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");( l( I- ?* B( j+ {6 J
    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
! q: X9 E7 Y  w% B; }& O  T; c6 M        make_callback(this, &MyClass::ActivationHandler1));7 f: s( r  @7 n8 ^6 e% |1 i; i6 u
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
0 b- G6 g& w# ^" ?' e" z! u
5 ~% z9 w7 p0 ]" a9 C    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));5 p0 l& q: J* M' _* p
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
$ Z% K7 b/ G: p2 |# V( M( e- U}
8 @2 T# k1 T6 k' W6 t
' B7 r+ H  k; _/ e4 T9 p$ }# s& [//------------------------------------------------------------------------------
; b! a7 K) U7 g; D// Destructor: w5 H) F' e0 t/ q
//------------------------------------------------------------------------------
# |0 ?5 |% E, {* tMyClass::~MyClass()
  B4 u3 g4 H% h4 \{9 A: D7 j  u, k/ p+ i# W" L1 v/ U
    logF->WriteLine("GTAC: MyClass Destructor");
8 S) e0 \1 M8 F* j    if( m_tree->GetSafeHwnd() )
* [3 u2 u( a; C; _/ b    {
: g+ w$ W/ P. v& k; y        BOOL bSuccess = m_tree->DestroyWindow();$ Q& v' P6 N3 N6 U
    }" x# t. e# X! E. I
4 ?( T2 K9 O7 S. v
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
2 ^: y4 _) m  h; u    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);( C; @0 I% S, o% Z7 h$ B
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
& z7 H6 Q0 o5 i# f. M, l/ P6 _  e, ?$ m) R. Z8 P3 o, A$ w" L
}! q, [4 X6 p* U& F* s' f5 E  @

5 h& B& t3 S6 g6 U/ R//------------------------------------------------------------------------------; g( H0 K! i5 {' R, M
// Print string to listing window and/or syslog
$ @6 E$ S# o: I( P$ V( X5 \  W//------------------------------------------------------------------------------
6 c$ Y  a6 I3 Xvoid MyClass::print(const NXString &msg)" s9 F$ P, F4 k* _
{
8 Q; |$ n$ R8 o( v6 \7 n    if(! listW->IsOpen() ) listW->Open();! B2 v3 a( |. i
    listW->WriteLine(msg);
" F' g3 U3 H6 i- p. @}; r  B2 v4 U, E
void MyClass::log(const NXString &msg)
' P7 P0 I* G) d* u+ a( T5 e{
7 U/ l+ p" j- ?    logF->WriteLine(msg);
2 n* Z4 V) o' P2 F6 H: P# s. \) p}: |. O& x- \, C! j
6 M3 u( E, ^+ u$ Q' d9 ~) }0 T
// Callback triggered when opening resource bar tab' z! O, s" @' {0 @# O
int MyClass::ActivationHandler1(int tab_id), Y/ n* T: s/ ^5 C' v2 {
{; q$ x2 D! u: P. `
    // Get the WindowHandle object
4 X' x7 R. I; O2 R    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
! @/ @$ f5 l$ \  H8 o    // Get the real handle5 E# [6 ]: s8 A$ L
    HWND parent_handle = (HWND)window_handle->GetHandle();
/ v% J' Q) T! N3 }" N2 t    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
* N% a! c6 ?+ o: W1 }. [' d    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
9 r3 k, O% {4 r) r    ASSERT(wParent1);
. k/ N+ ~7 S4 ]2 w( s5 V9 v- O) J1 i1 e/ ~% ^
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle' X3 U( D, q( @# z* O" v2 q
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
2 H9 k) s5 ^' e1 u+ P
6 D- x* t# ?2 ?  z3 r7 O    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
& u! k- i; ~, d. x* D" [" z        CRect(10,50,510,1810), wParent1, IDC_TREE1);
. Y6 o* J8 M2 y4 l4 V    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);  u; T  r& j, L7 ^; \$ _% Z
9 I& |2 E! n2 C: y/ x
    Populate(displayPart);
8 b6 d2 l* s1 Y* O- F4 G! x
7 P, }! H2 |3 r% e    return 0;0 ~3 q% j: ?' R4 F; f- e8 g* [
}
) U3 b) ^8 `! ^
' C' Z) k. T5 J' Z//------------------------------------------------------------------------------- [) W' m0 r' v& q4 J; H
// getAttributes/ |; C/ j0 H. K  D9 V3 L! j
//------------------------------------------------------------------------------
; h8 P* V. A; w3 @
游客,如果您要查看本帖隐藏内容请回复
. c$ l! \) V, B6 V/ ?

- L) F$ y9 c* Y& T  M3 A, e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了