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

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

admin 楼主

2015-3-27 11:17:17

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

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

x
4 {; v( y) t5 W* Y6 ]
2 K( K: w' l- A: k
2 C6 b7 @/ R& U) x2 T
/ r* Y" l; o  e* u
NX二次开发源码分享:NX10可以直接对资源条进行二次开发: e' x9 D' d  |9 h3 e# q' {8 H
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
( I8 A! ^% [- g- T  V1 J+ q  t
' Q1 M7 J: O+ I+ ?- [( W6 U// Mandatory UF Includes, b# q' d1 J  t
#include <uf.h>
5 Y  J4 [/ y* }: ~( w( M
; I" y( X* Q5 T) B  b- G' ^6 ?% n/ A// NXOpen Includes
0 f' b/ f1 L# v" r- O3 Q# e: t#include <NXOpen/Assemblies_Component.hxx>! ?8 n5 _( u! W$ j
#include <NXOpen/Assemblies_ComponentAssembly.hxx>" f: l4 w. k" e: c* l* c
#include <NXOpen/ListingWindow.hxx>. v" b4 g1 }  N/ K0 }! R- h
#include <NXOpen/LogFile.hxx>
3 _' f: d1 Y( H#include <NXOpen/NXMessageBox.hxx>* n. q  b. d2 [% |" Z6 N& M7 X
#include <NXOpen/NXException.hxx>4 t$ u! v1 k4 `4 Z
#include <NXOpen/NXObject.hxx>
# E2 ^2 ?$ Z, V3 X  V; ]% j#include <NXOpen/Part.hxx>$ S; C. c5 h" k6 W$ ]
#include <NXOpen/ParTCollection.hxx>  |) K$ c3 i( D8 e& c
#include <NXOpen/ResourceBarManager.hxx>8 y( @' }; j6 U3 T
#include <NXOpen/Session.hxx>
. J( v& q- h: s- t#include <NXOpen/UI.hxx># R1 c- x7 I# O
using namespace NXOpen;9 z# O  j7 P0 S, v) h# f
using namespace NXOpen::Assemblies;$ e5 v) `- B. X3 V# W+ y+ m8 o' h
8 u: D; L, Q6 q1 a0 r' k
// Std C++ Includes
) L0 ?! U" H# T0 _#include <iostream>
) e$ P& s0 K: E* S! x/ f) O: I#include <sstream>
9 y9 z0 z; c+ ]6 F5 c( b2 Q" _#include <map>/ _1 H& W$ n5 C, @2 a1 R
using std::exception;! a, T% h( K: _2 n9 l" v
using std::endl;
2 n1 y. ^' F& f, A4 Lusing std::cout;9 }5 s; ?2 f) X8 P$ i/ V: ]! e4 [
using std::cerr;" d8 L% }0 ?# |: k7 L5 ]' i
( o" _- P3 @7 a3 p7 {; ^1 I1 z
// MFC Includes
; M" [& o. T8 s5 m4 z" S#define _WIN32_WINNT 0x06010000 , b- ]6 T/ H1 [2 E5 ~
#include <afxwin.h>% N) e( _4 M  r) h
#include <afxcmn.h>6 U9 {- s1 |9 E) ^6 f. {/ v

2 `2 y8 I' X, F5 h#define IDC_TREE1   1002
- |; H- @2 F) b; @; H% D3 I8 `$ r. y, R4 T3 f' e* ]
//------------------------------------------------------------------------------; g  w$ F2 [0 s1 {- y* p
// NXOpen C++ class
+ i% W6 _% `' L5 o- `//------------------------------------------------------------------------------, U: [6 C$ c! G7 R1 l# j5 Z# A- n1 Q# I' U
class MyClass! A9 v% E0 s& p6 }3 q5 q1 B9 ]
{* G; ~! g, N5 h+ C( {
// class members
$ ^0 D! G5 s+ Z5 G+ Xpublic:
* ?/ x; z# R/ o' L1 t, a; [+ r. _$ Y    static Session *theSession;
$ p4 E. y4 }5 `1 M    static UI *theUI;
' c* {6 M3 L, F4 E; d" s. r' I    static int m_tab;8 T8 b9 a0 f  o5 T' L0 C3 m
    static int m_cbID[2];
8 E" s3 Q( U8 b2 Z/ ~# m# [
2 A0 o/ [' M9 `9 b, v1 i! O- H, _/ Y    MyClass();  H4 E9 }- L4 v  x4 F
    ~MyClass();. q/ u0 O0 q" G) l! U( o9 _
6 g! ]$ D- [) ~) {
    void print(const NXString &);6 m2 x# T( [- G. p( R' q
    void log(const NXString &);
: z0 H$ {& Y# n4 A) U/ r, @8 C/ ~    void getAttributes(Component *, HTREEITEM);
9 F1 n1 C+ Y$ C' e( V" w    void getComponents(Component *, HTREEITEM);
4 \; M% G% V% Q8 |6 j    int ActivationHandler1(int tab_id);
" k1 A, n6 S9 ?; {7 ]. X    void Clear();1 w2 G; m( _7 f/ E* A- Z8 b
    void Populate(BasePart*);- r% k; c' r. O2 K2 M( d! i7 ^3 M  ]6 q
    void cbPartOpened(BasePart*);
- |0 @) s7 M3 L: J- Z    void cbPartClosed(BasePart*);: l8 V( ~! R4 u

% Z/ _& d- [* M8 u; Dprivate:: u( f+ y2 B/ v6 t* `& G2 A. b$ N
    Part *workPart, *displayPart;2 d! H- R# f' V9 S' Y# A
    NXMessageBox *mb;
/ o& {( q7 }: h; |, B' A    ListingWindow *listW;5 Y# A, |# i+ M- ^( \- ?, ]
    LogFile *logF;  R% T# M; C  V" M- t6 |  _
    CTreeCtrl *m_tree;
3 A( O2 f7 R; i6 q# y, Y! {    CImageList m_Images;, v+ P: a1 A) N7 O
};
# [3 k* K& C2 H8 Y" ]* C6 Z
8 @; W, z* B) ^) S' J9 a  Y//------------------------------------------------------------------------------
' Y4 C+ K- Y/ k" ^9 J% c" x) V// Initialize static variables0 _  d+ |) V; l% S$ [$ @
//------------------------------------------------------------------------------
7 a, }( H" I" Q+ X. D  u. T: NSession *(MyClass::theSession) = nullptr;* U7 H1 `% `% [- f$ |9 X
UI *(MyClass::theUI) = nullptr;% d! ~5 v* n; H
int MyClass::m_tab = 0;
% X: q1 f! ]. \6 Aint MyClass::m_cbID[2] = {0,0};
3 w/ [3 D2 e. R) U& C5 e0 \
% r9 H9 ^. _! {. WMyClass *theApp = nullptr;( r+ [6 A+ Z& }$ m
6 c* a& s! d1 u, a$ [
//------------------------------------------------------------------------------
' s, G* m5 a& Q8 \! }3 Y9 X' X) ]// Constructor
% T* ~$ s9 [, Z6 i8 F9 J/ ~$ z9 ~//------------------------------------------------------------------------------% m$ G% E( y, h! {) r
MyClass::MyClass()2 K1 |$ Z" {/ f* u, N' O, x' |
{
3 Z, ~" G8 M+ J3 Z9 u7 m4 l5 W    logF->WriteLine("GTAC: MyClass Constructor");
  c$ T# j$ n( d5 T    theSession = NXOpen::Session::GetSession();2 z, Y/ y2 z  g1 H/ m0 q# c6 J  R4 ]
    theUI = UI::GetUI();
6 h7 j5 z+ z! o+ F) e8 I    mb = theUI->NXMessageBox();
6 y! _5 v- w4 K    listW = theSession->ListingWindow();
4 y: @8 h: J% a    logF = theSession->LogFile();; o9 F& n6 g% f9 U$ C
3 u, h6 W! c7 `! V0 d+ l, Y' Y$ d
    workPart = theSession->;Parts()->Work();
3 o! M# O5 W, G, Y% R6 t# P    displayPart = theSession->;Parts()->Display();6 w+ S. V0 y  N  P+ o. `
4 G; v7 L, E1 W; N" O+ [
    m_tree = new CTreeCtrl();
3 a. n* d+ ~- s. E- ]2 m+ r7 j& O/ |/ `. X' T
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);3 a7 G" t: G/ {" |
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
* q6 o. u; p' |& v    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
+ S  D" F/ A' P6 {
9 I% k8 I2 r/ z  C8 w* D5 ^6 x    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
9 J/ ~0 g4 n; {1 h" i$ W$ |    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, 9 N8 A; _! Z$ {+ y& L5 ~1 m; `
        make_callback(this, &MyClass::ActivationHandler1));
8 l/ v1 u( i: g4 c% B    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
. ]1 u6 o  b" d% L7 L& x8 U
4 R1 O/ U6 ^3 ]) h0 c    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
+ w7 w0 d) u7 l    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
( `9 S* A; z, \) B  C' H}
: q/ Q. r( _) Y: O% \; K' q3 E- ^3 o3 v+ j! n7 F
//------------------------------------------------------------------------------1 F4 q# Z* K+ D" x
// Destructor
, C: z* @, q/ l* B, [0 n; B$ ~- F% ?//------------------------------------------------------------------------------
% |$ _# G3 W. h4 Z+ T/ Z1 }: S3 ~MyClass::~MyClass()) E2 |8 k  h' e* @5 [+ G
{2 C0 X8 V* X9 u8 d
    logF->WriteLine("GTAC: MyClass Destructor");
- D+ t; Z6 b" {9 V) S! u    if( m_tree->GetSafeHwnd() )7 M" _% w1 g4 ^8 l3 [) C
    {
. N  t9 n' }$ w        BOOL bSuccess = m_tree->DestroyWindow();
# s, |) r' V! C    }
; p, A. y* G) ]3 \) U& r  P2 @' p9 l  W( i5 @3 v+ t4 Z# o
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);+ F- E# o( h: E2 n
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);1 a# ^2 w. h# L7 _3 w; S' b
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);8 K" `% {& ?1 e* O2 n/ c4 T

6 D. {1 t  N! r- I* X}, G5 z$ m% V* Y3 e7 {9 H
* `7 y( E9 w, F! \
//------------------------------------------------------------------------------
0 p+ q6 v* B8 S9 w// Print string to listing window and/or syslog
0 R# H  V0 j( T1 q//------------------------------------------------------------------------------. W( u+ t4 @* q$ y$ z
void MyClass::print(const NXString &msg)
+ ]5 K7 p" n& s; _{
; s! u  r9 |7 c4 ]6 [    if(! listW->IsOpen() ) listW->Open();9 H6 z' ]0 \/ @
    listW->WriteLine(msg);
+ ]( C, P' I  b" e3 |2 t; Y}) D; L' V3 }; x, x% u7 p2 L- e. n* I
void MyClass::log(const NXString &msg)
) M' J: y4 O3 I3 w6 A5 A{8 N, \5 ?8 `* m2 W7 B
    logF->WriteLine(msg);
! @) s, v7 d( |' z4 s" }0 [, S) g}
, Q5 Z' ^. q4 T  d; @' I, g) H. X; }" G+ R, i
// Callback triggered when opening resource bar tab
# z1 I2 O/ t( r7 D& Qint MyClass::ActivationHandler1(int tab_id): |, J% r5 J- D' }$ g. Y
{; H8 Z' f3 [3 J/ w4 a
    // Get the WindowHandle object
# v0 \, ?) N7 N+ \. K7 l7 g* J% v    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);" v; A% E+ Z" p" V
    // Get the real handle9 a6 p! @! J  G' ~+ S
    HWND parent_handle = (HWND)window_handle->GetHandle();9 ~; x* U: [/ E1 l+ Y& o
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!" _! h4 r% g3 {$ N+ ^+ j
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
6 @0 k, b6 e1 C3 Q! e2 M    ASSERT(wParent1);( L: ^" K( O* N
+ v. g/ N/ f# R, b7 f
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle  H/ b5 o4 |2 ~" m8 D1 b  I3 x
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
' b, }) F0 W" I8 N% c4 b
9 p( K! o6 a, C4 S' a% n; s    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, / U! i' L  |, p+ i: s# L. G
        CRect(10,50,510,1810), wParent1, IDC_TREE1);
8 D( v" l! C& d    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);  g+ u- C" }; N+ e6 G$ u

  f% O0 z0 {/ \' b    Populate(displayPart);
! N6 ?$ G6 L, d' O/ |0 M& l
+ j  U& w3 T- L2 h# m    return 0;
7 |2 K/ T/ h' G8 B6 D$ z7 \}7 \3 \6 ?  l6 V( f$ e* U3 j
. @6 V% u( C' O' }
//------------------------------------------------------------------------------& d+ s% w7 Y3 M
// getAttributes: g! q7 b, T: _. Z
//------------------------------------------------------------------------------5 M! }. |  y2 {( P: n# j
游客,如果您要查看本帖隐藏内容请回复
% I* h8 V% O: T( q6 J$ Z

+ D% o1 q' R) I: u9 t( D
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了