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

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

admin 楼主

2015-3-27 11:17:17

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

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

x
7 O" @/ @( [0 n- a: d) _1 ~( ]3 ?; b  ]0 w

9 e' {+ N- o. l! L# B. t7 d3 v; L  O: n

1 o' \& N' R8 n( W* VNX二次开发源码分享:NX10可以直接对资源条进行二次开发
6 E: T* x/ `3 z这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。! @1 d4 ^  N5 s. ]' `
# R4 ^! f& g# W% E
// Mandatory UF Includes
/ R) S/ E0 s, n  ^/ P#include <uf.h>& i+ l8 x+ P0 b: f$ f
% Z5 y' s0 l/ B
// NXOpen Includes
! t' V: {% F8 q#include <NXOpen/Assemblies_Component.hxx>  z& I' h% D/ @) ]) V( h
#include <NXOpen/Assemblies_ComponentAssembly.hxx>: s" a& O8 L/ F& B7 M
#include <NXOpen/ListingWindow.hxx>; W, O) D  K: u- \" I! w3 _  m8 o. j
#include <NXOpen/LogFile.hxx>1 t# K+ p6 w3 m. A% q8 j5 k' m3 K
#include <NXOpen/NXMessageBox.hxx>1 ?% |7 Q- B6 {! b' t# P* r
#include <NXOpen/NXException.hxx>" t9 _) l  i: ^& v
#include <NXOpen/NXObject.hxx>9 b1 j- f' I- H# I6 m& I1 I' ^
#include <NXOpen/Part.hxx>
+ m( p: K3 T* @) V( w  O% F7 v#include <NXOpen/ParTCollection.hxx>2 n/ J/ w( {0 M# E; T3 F
#include <NXOpen/ResourceBarManager.hxx>
; {" f* Z' {( Q#include <NXOpen/Session.hxx>
, v7 m! m' \4 @#include <NXOpen/UI.hxx>
3 H+ T7 t( F: k" V+ R- ~/ C4 B, lusing namespace NXOpen;- Z  @3 b5 C5 n- c# K+ D
using namespace NXOpen::Assemblies;
1 ]) ~9 g& i. }2 B' x; Q
: {8 a1 U, M4 _8 ~// Std C++ Includes
# b, q9 @! X+ y1 m* X; n#include <iostream>& F6 j& R# j, r; e
#include <sstream>0 y/ _" u8 b" x! ~4 Q
#include <map># z: p6 D- z! b* ^
using std::exception;
8 }" A7 Q' V) x' H; Eusing std::endl;
& ~! Q4 L3 [" ?2 t# susing std::cout;
3 m: L2 U% J, cusing std::cerr;/ }: e3 C  T( Y+ z6 q6 l

5 q, [7 S( ~& g# o) V// MFC Includes
4 K+ R' l4 T2 Z: a* r#define _WIN32_WINNT 0x06010000 ) Q4 o6 x. R8 V1 q4 E
#include <afxwin.h>+ B$ k+ h$ ^7 i2 `+ o$ Y
#include <afxcmn.h>
+ J' _6 ]( g2 l* h& c  {- T/ F( `6 V0 c" q" s  J
#define IDC_TREE1   1002
* x  R. r1 I6 q9 q: a
# t, b& B4 d" U0 @2 C& E//------------------------------------------------------------------------------
  M/ [/ v  X" g// NXOpen C++ class / P. t& J5 h' a, m( m
//------------------------------------------------------------------------------- X* i5 y. k1 q1 Z( Y3 x$ }
class MyClass
8 Z' J- l  f8 \6 a8 E8 n8 T{8 t. K6 p6 e0 m6 q
// class members/ q* z: Q+ ?6 S2 o$ D0 h: g' ?/ h
public:
. p3 N( O6 F  C- Y, L$ @    static Session *theSession;
6 Q! ]$ [# |( @0 ?2 a    static UI *theUI;
+ L# N1 R' t% I5 U" k1 Q    static int m_tab;1 A4 C# @! h$ O' A) n. Y1 W
    static int m_cbID[2];& {$ I* h" x4 }" V6 Z
4 f1 G  n" i2 E. a6 |+ o
    MyClass();
* d# U6 s4 p, S9 F# N1 k    ~MyClass();
7 k% _0 O/ N% k* {/ S) Q
& D8 b; I( o, L; H    void print(const NXString &);' C! g- ~/ P7 T9 B! b
    void log(const NXString &);
6 Z8 t4 M: q4 k1 S1 v    void getAttributes(Component *, HTREEITEM);- ]/ P- P( W8 c( Y- e5 p. X9 G
    void getComponents(Component *, HTREEITEM);! X* Q7 I* q) h
    int ActivationHandler1(int tab_id);
; q6 q8 O6 x1 I# O2 g  T    void Clear();4 H% L9 `0 [# T. N9 n
    void Populate(BasePart*);
+ `  w. @( ?# E3 m; I% V3 I/ X; b    void cbPartOpened(BasePart*);
' n( |0 {/ i9 K8 O& C3 H4 q2 G& Y    void cbPartClosed(BasePart*);
9 q' I) H. r+ @8 z; T6 U+ _3 ~) U3 R) ?9 q
private:
0 [/ @# ?" j/ ^4 [; Z    Part *workPart, *displayPart;
( J: d" [9 k9 K' Q8 J    NXMessageBox *mb;
: ^: F! M5 ?1 l/ K' R: y3 p" D    ListingWindow *listW;
. T5 A& a+ K6 m7 }8 c    LogFile *logF;1 F3 S( \9 Y2 {! V" O
    CTreeCtrl *m_tree;
( _% N# T6 \4 x2 ]1 P! ^    CImageList m_Images;
# @  o9 n% M" \+ \7 Y7 C};
2 G) J3 Y) G* N- @3 p
/ Y$ |9 V$ ?  Y0 L% T' T//------------------------------------------------------------------------------( M2 ]2 h) G  y# i# |7 f
// Initialize static variables) e9 Y- a4 ~4 T4 c7 a/ q
//------------------------------------------------------------------------------
  N; r" C9 ?5 G4 C# d% q2 WSession *(MyClass::theSession) = nullptr;* w4 Z: ?" \6 }- h+ M5 t
UI *(MyClass::theUI) = nullptr;
( k6 b+ p6 N7 H0 ]4 g. lint MyClass::m_tab = 0;
4 W3 B( V6 }- I  V% `& M7 Lint MyClass::m_cbID[2] = {0,0};
% @. `" S2 k5 n: {  e, A2 [: a8 M1 e( {& `- }* i
MyClass *theApp = nullptr;
& h, W& a. B6 g; S3 T
& b% @# {+ [7 n+ W//------------------------------------------------------------------------------) E! t8 S  `& ]) n9 `
// Constructor . E1 H' ?' j, x+ \/ P+ m4 ?* H1 W& |
//------------------------------------------------------------------------------
/ X% H6 v' u; s# }% fMyClass::MyClass()2 W6 G, }$ P( M( |
{
. g0 R8 }- x: z, s    logF->WriteLine("GTAC: MyClass Constructor");, @( }- a9 C$ ~# ?6 R& j
    theSession = NXOpen::Session::GetSession();7 F! q9 h" K, J( k8 d/ E, i% ?9 y
    theUI = UI::GetUI();
) w, N$ ]: ~* B# L    mb = theUI->NXMessageBox();) B9 P: X( E4 H- |5 F& _
    listW = theSession->ListingWindow();' T9 h; U! {7 Z# i( V, G/ |3 B" U2 u
    logF = theSession->LogFile();
/ H9 d6 M" j! c
2 o& c* [* p3 [8 c3 s, B. B    workPart = theSession->;Parts()->Work();: u3 x/ G+ D) b( e$ i7 [
    displayPart = theSession->;Parts()->Display();; ?3 ^/ c( m5 z9 g& K5 N

% F; O7 z+ _  Y" C' _% O0 E    m_tree = new CTreeCtrl();
0 n& k' C, @! \) }1 v2 _
9 ]# e( H3 c# [; ?2 x. r$ r    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
3 l1 a) X/ t3 W  ]; |) s/ @    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
" Z' x% @/ f: L: Y    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
0 b% @, h. O/ U4 l; K
3 R: z+ o( m) ~: W* J    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
$ f& N( y; N$ k) y3 X! H, @    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, + ?! J2 R( {7 ?/ Z
        make_callback(this, &MyClass::ActivationHandler1));% [2 I3 g2 q9 o$ f( I3 v( t
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);& e: B6 T( O2 \
6 u" O; |( o2 Y2 R( h
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));4 [: W  u8 R* v& u% p0 q$ H
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));6 c" I$ W* V: G5 S' G% G' s) D6 Q' d; X
}% x4 U) z! @9 v
9 d* i% }4 H" J- `: _: j" H+ N
//------------------------------------------------------------------------------6 o) S! z  _2 U; x2 C) s' C
// Destructor
# z- f, c2 F& d0 W//------------------------------------------------------------------------------; s# |4 D% ^* t! l8 r. D' q: ^
MyClass::~MyClass(). a2 u; j2 D" r; L! K* ~! Q2 p: Y4 s
{
  p  G1 b0 o- h    logF->WriteLine("GTAC: MyClass Destructor");; x# U0 Z* P0 Q' i; K/ L& a1 d
    if( m_tree->GetSafeHwnd() )' B0 a: ~% d9 D% E
    {
* N0 [0 z* F1 `2 D( _1 ~; t        BOOL bSuccess = m_tree->DestroyWindow();2 G+ t, Q* @: L0 \
    }+ {' [' U0 ?8 N; o4 |$ Z
# y9 a, R7 l3 R, J8 R" f) t
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
2 Y* p4 I6 ]( ?7 J; b* l8 n. K& ~  b2 F1 B    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);, |, V4 B' L. w6 |; G& \0 j$ ]1 A
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);0 l3 p" a0 U2 |( Y6 b

) e/ ~1 U9 H5 ]+ ?3 f4 R: \( ^4 I}
8 n2 f! q) a( L+ ^3 f1 D" ]% S1 @5 x) @  b
//------------------------------------------------------------------------------% K2 X5 [0 J) j( ^, |
// Print string to listing window and/or syslog' {8 n$ l' v3 L6 G
//------------------------------------------------------------------------------
8 e0 e  b2 s0 ~: j* P- f2 qvoid MyClass::print(const NXString &msg)$ m8 f" g$ W+ X' I, V) q- Z. ^  y0 [
{; f) k4 M6 y8 h3 t* X- d5 b
    if(! listW->IsOpen() ) listW->Open();
4 c6 G0 R$ Q5 @+ w0 [6 V    listW->WriteLine(msg);
5 ^7 Q" ]. E+ s3 n}
5 c0 L$ @1 T# b+ t* Z- gvoid MyClass::log(const NXString &msg)
! {& S$ o+ |5 b$ w1 N8 p- h, X{. L; e! D, l: J, P* f  F- ?( b
    logF->WriteLine(msg);
/ }/ c* p8 _, W; u* ^. v}
  ?* {' k1 }; [7 w& v0 d" k, x, c4 g' M: ]! T# O
// Callback triggered when opening resource bar tab. c+ R$ W( N, `2 Q4 \! u+ m9 k- Q
int MyClass::ActivationHandler1(int tab_id)2 e- w5 f; s: Q  \+ I) t
{" c4 _5 n$ k* A1 `1 d7 i( C
    // Get the WindowHandle object
! `  F7 w5 L9 o. F1 a9 [. `    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);4 ]" ^1 l3 o) w- h! E$ T% e; i) N
    // Get the real handle  y" s* I/ |3 C* r5 Q2 V/ A# T4 a
    HWND parent_handle = (HWND)window_handle->GetHandle();  g; A; W7 V. C; K
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!0 D- u0 S- N$ R" `
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);- z% l+ Y1 X  K( u
    ASSERT(wParent1);7 R! `" [1 f! f; X3 h
! ]9 S0 [% C7 v0 h7 u
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
$ {3 ^$ I% F; V6 W* C5 p& c    AFX_MANAGE_STATE(AfxGetStaticModuleState());, m) i# T, x$ V& t6 t. q

5 V' V& d3 M( ]" e" H& z' h    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
% u" t1 P; X: y# `# G5 Z' u        CRect(10,50,510,1810), wParent1, IDC_TREE1);7 f9 V7 b& r! }4 ^# j6 d& \
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
. q7 g5 e4 L, o# M+ K
2 a6 {4 |, K1 V4 w    Populate(displayPart);
  d3 X  s( m; V- ?& {! k# O) k6 E& F6 Q
    return 0;/ |7 M* H* i9 v$ G
}
" P% w+ o; C8 _! N& q/ e9 y
( C& V% h* P' ^  N2 s2 {+ Y. [//------------------------------------------------------------------------------
, H5 v+ u0 L$ a' ~4 c// getAttributes
8 f& ?% i2 b* y7 }) U3 I0 z0 T//------------------------------------------------------------------------------
- ?6 _: a( r  ^
游客,如果您要查看本帖隐藏内容请回复
; ?7 b9 }. H$ Q. F" b! ^. Y

# [! h3 A& u# R# g$ X8 I. t, A8 ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了