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

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

admin 楼主

2015-3-27 11:17:17

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

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

x
; h7 m3 h; a( m9 H0 ?

' V+ P' B' _6 E7 K3 X: F! L# z/ G* X0 R( N# Y

: X  H2 R0 j3 p; p( U3 HNX二次开发源码分享:NX10可以直接对资源条进行二次开发
* |; `+ B; ~% j5 s2 ~这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
1 d( A+ a; C. W/ D) i, a; x5 d% Z) {, g1 h3 F# T2 B% m
// Mandatory UF Includes
2 A4 w& v0 e* }0 [- W  M* }#include <uf.h>
& x5 R: U# g2 @
. {) {  T7 e0 V. r( G// NXOpen Includes4 ^9 F4 K( S/ m. B1 `; x5 D( q
#include <NXOpen/Assemblies_Component.hxx>& b  g+ u- G; f% w
#include <NXOpen/Assemblies_ComponentAssembly.hxx>" E: }: n5 R' I3 f! u8 T
#include <NXOpen/ListingWindow.hxx>
  \; A6 K+ z# _8 C) M#include <NXOpen/LogFile.hxx>
0 d- o; S& ?) s$ }. A$ G# ^/ L$ G#include <NXOpen/NXMessageBox.hxx>
5 @3 D3 C( @' K& x0 d#include <NXOpen/NXException.hxx>8 \" Z# W4 X+ J) n
#include <NXOpen/NXObject.hxx>7 D: H. n+ K  N
#include <NXOpen/Part.hxx>: e1 _' u5 L* ~" j. s/ z' Y! [
#include <NXOpen/ParTCollection.hxx>; F) M0 Z4 |& Z2 m
#include <NXOpen/ResourceBarManager.hxx>
# s  V! }; M# O5 j+ W- J3 L#include <NXOpen/Session.hxx>* ?' `; c# Z1 R+ k, n6 V
#include <NXOpen/UI.hxx>
" p1 r( g: j* g5 W# Vusing namespace NXOpen;' r" P& J/ ]; U! {
using namespace NXOpen::Assemblies;
1 `1 k8 f& T: z8 Q9 d5 g4 S" A1 d3 V
// Std C++ Includes& h) E/ X5 A3 k' I5 X. g
#include <iostream>; O5 [3 N1 `7 k' d2 |, ^* s: |
#include <sstream>% O8 s& c9 I, d! I
#include <map>6 @5 P# [* W! P8 n0 j8 l
using std::exception;
2 e, S4 ~9 P* e2 k8 j1 w7 nusing std::endl;1 u8 p7 H* k. K7 }; o
using std::cout;
$ g3 t+ @+ a# O2 W! Susing std::cerr;  c, W! c) M2 ^4 L
# Z& N# i" ]4 n" o( o
// MFC Includes6 ]) w! g1 G  Y; |* J% v  _
#define _WIN32_WINNT 0x06010000
1 Z) k, G( \3 K+ P#include <afxwin.h>- ?% [+ C# s9 V5 H* Q# j
#include <afxcmn.h>
: e7 }6 n. t! x
* o  \; O& O2 O6 u# T#define IDC_TREE1   10029 b6 |2 G( R( T: f/ E

+ O/ |7 L, |' N9 V1 U4 B$ l//------------------------------------------------------------------------------
: u. [1 {. f5 R. A4 t. R: E- {// NXOpen C++ class ' Z& v$ o  Q' g
//------------------------------------------------------------------------------; b- E6 T: o7 m! [) u
class MyClass
" i7 W" k' \8 `{+ Y$ {3 M! v( o( M. g9 z
// class members. v& L! E  x0 o' s5 q3 \$ H& P
public:
  l0 ~9 e; D8 ]- M    static Session *theSession;1 v3 _$ ?9 D% t: _+ A  f
    static UI *theUI;. S7 _1 m7 y7 [7 m* x4 M6 `7 ]
    static int m_tab;. y: W' B  r5 C9 H# \$ p! v
    static int m_cbID[2];
' p7 ]7 m) x  D/ ~. H
" o( c/ r2 Y4 `  y- H    MyClass();
% e! l% O6 P" D  O. t/ s" q    ~MyClass();
- O, H) ], v7 t9 G
6 x. B; A* C3 v7 f0 j6 M0 j    void print(const NXString &);- b" q: }' H# Y0 R( y2 a. l
    void log(const NXString &);
, f4 S% U  }6 @2 z, g. L6 G    void getAttributes(Component *, HTREEITEM);
# |- X, a! H+ g# ]" f2 Q    void getComponents(Component *, HTREEITEM);' E; W* ^" H5 m5 a1 b
    int ActivationHandler1(int tab_id);
, Z. m* |$ W- G) d! }4 G2 h2 B    void Clear();
" m+ ^* J7 d# }6 Z& g2 |! m    void Populate(BasePart*);
7 V3 A* M+ @0 R! c; ?- A    void cbPartOpened(BasePart*);( ~+ W& s6 z! `; N( |0 h
    void cbPartClosed(BasePart*);& ^$ {/ w! d8 p( f- d) {/ u

3 y% l3 x+ }: Q* J! T. Y, zprivate:- g+ \# r5 X& T. r/ k8 d- Y  w
    Part *workPart, *displayPart;
) ~+ W& E5 Z; {. I- f. l) i. P# Z' h; v% w    NXMessageBox *mb;( n6 ^  l1 m( f8 Q# N9 v
    ListingWindow *listW;/ `) J& E) |- g# j5 y
    LogFile *logF;: p- N* v* e* y: d& i9 @' u
    CTreeCtrl *m_tree;
' t4 |( s9 @; V2 D    CImageList m_Images;
$ j$ q& [# I5 l( \$ f0 L};8 X; i) y3 m: o0 P' D; V$ f
: X/ N6 P* m) U. C
//------------------------------------------------------------------------------+ g/ U( B2 Q( q7 p3 `1 {
// Initialize static variables% {; c7 W3 k2 d3 [; x
//------------------------------------------------------------------------------
& e3 V" ^5 L4 L* Q$ wSession *(MyClass::theSession) = nullptr;
  [8 f8 Z) Z! Z% CUI *(MyClass::theUI) = nullptr;& P$ `3 a" [! @. D# L0 d
int MyClass::m_tab = 0;* P. e8 g# d% ^2 e! g
int MyClass::m_cbID[2] = {0,0};1 y- I7 o# _1 V5 J0 P# |4 f7 a7 O3 m

& t6 }" T3 J- u9 u* ^& s: A7 j( _MyClass *theApp = nullptr;
3 P9 H6 w$ ?/ |. v
7 b7 r& K) S+ C//------------------------------------------------------------------------------+ N) ]) n3 J+ p
// Constructor
* A+ _3 O. `" b" r: b2 j//------------------------------------------------------------------------------0 j  j) e+ Y$ Q9 L
MyClass::MyClass()
- D+ C) C. J: A' a7 N{  D" R" f: O* p: V3 f6 r
    logF->WriteLine("GTAC: MyClass Constructor");! r% u+ E: o7 _2 ?
    theSession = NXOpen::Session::GetSession();3 H8 S* S" W- O& o; L
    theUI = UI::GetUI();
8 v" H- a# }9 V9 Z$ Z, _) N) ~' x: h    mb = theUI->NXMessageBox();
+ z  P0 \# A$ W3 w6 c    listW = theSession->ListingWindow();
" t2 [3 f+ b0 M& H3 u    logF = theSession->LogFile();0 }: b4 \- v5 {/ ]+ L

2 t' R' s, E$ h9 ~/ q9 w    workPart = theSession->;Parts()->Work();
- s1 U+ l  i) p9 y! `* V) A! w    displayPart = theSession->;Parts()->Display();: k+ l# ^! M1 u" Y

3 i  E$ }" Q+ J) V, p# g    m_tree = new CTreeCtrl();0 j6 I' R* M) S/ S) g

3 G7 a: `0 W# G$ j    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
- i9 c$ N% n) f  K" X    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
  x- ]6 h3 r1 o9 K    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
. R* X8 `! ?9 d( P1 U
' F4 o: g& f: t6 B4 A8 z. j3 {  [# {    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
/ v4 F3 K' s: ]/ U/ z: Y2 n$ I    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
$ t# V. U3 `; P4 V  K# m5 L5 g# `9 W        make_callback(this, &MyClass::ActivationHandler1));
3 ~4 c2 G0 p3 E" `    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);' k1 c4 |( B9 h3 H

$ G* _( T) D/ {) u. E& [+ H    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
7 D, y+ Y5 w$ S3 A" \% d    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));- g% T$ V# E! c/ E4 g1 H
}
- t* c4 s$ @& B! [
; r. r' X) C! i# o//------------------------------------------------------------------------------7 P, \; A, }' T0 y9 [) Y6 V6 u+ E( p2 f
// Destructor
" A4 I# o7 v$ b5 j' v/ |) c# C+ J//------------------------------------------------------------------------------: ?9 d" @' t6 b$ x
MyClass::~MyClass()
& ?+ R5 a+ V- s( A- r9 ]' `& Q{, W8 n/ i& Y2 T) }
    logF->WriteLine("GTAC: MyClass Destructor");! _7 Q/ a" l+ d+ ^' j$ m
    if( m_tree->GetSafeHwnd() )
$ m: B( b! Z0 V% A+ S    {( a& [9 s; o; J
        BOOL bSuccess = m_tree->DestroyWindow();$ `, a4 A0 M" r
    }! Z3 R) @0 R5 ~" I% p4 |  D+ J3 J
$ }) w- Y5 \5 I1 I7 {7 d- ^
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);2 a3 P: X2 s4 l- P2 T+ V1 }" l
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
% |4 o2 V; m$ ^& z# `7 G/ T    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);* r3 T9 l6 ]( N# I8 p/ c% N9 j+ Z& R' }

/ U5 j0 H( x! E9 p' B: o. ?5 @% q1 l}
& |  o3 H0 [" F9 q1 f( J' \2 F6 ^& U5 }" k3 H$ X
//------------------------------------------------------------------------------, }% @) }1 T, z- h) [7 m/ _! e
// Print string to listing window and/or syslog! o, ?; _  z1 I! y3 Z4 h9 c* n3 R0 u
//------------------------------------------------------------------------------% c0 d& [# l! s. ^# U8 y! @. h# b6 h
void MyClass::print(const NXString &msg): i, s: b; P5 L/ H0 q. |1 n5 ^
{
& v; Y$ Y+ f& a- Z    if(! listW->IsOpen() ) listW->Open();
) s# E- N$ c3 O9 w% s# z    listW->WriteLine(msg);$ t3 o1 I8 @9 A2 ]  V; s/ R( w
}# D5 [: O3 y/ h+ k4 G: i& p
void MyClass::log(const NXString &msg)! [7 J9 [8 d4 c* Z6 i8 y
{
( h! M. x) o6 ~5 T# J: A    logF->WriteLine(msg);( o& ~: h) `; a/ a: g9 b4 m2 k' D+ F
}
/ w! N' C" N5 L8 @& I
2 a7 R  Z8 J  s2 z- V// Callback triggered when opening resource bar tab
' a0 G( f4 C8 P* P" E2 S2 j" }int MyClass::ActivationHandler1(int tab_id)  K+ Q/ D& L7 z6 J9 D8 F
{' H% n  g6 J, f: B- s9 n
    // Get the WindowHandle object. B' M) Q0 k3 ?  m( |0 c5 [
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);% X- l3 n" }* N7 I. v0 o. n
    // Get the real handle
2 M6 R* W- a" Y+ Q, Y& D    HWND parent_handle = (HWND)window_handle->GetHandle();
* X  C$ W% m" ?! E2 s) h0 G6 }    // Get the CWnd object from HWND, FromHandlePermanent will return 0!8 ?. \7 Q- L! ]7 x1 R) S9 z5 [
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
; b7 T, I2 D  s& P1 Z) k4 d4 A5 T    ASSERT(wParent1);
" B2 G/ P, M' E: [% J; G4 E) O4 `5 h3 _4 N$ l: y9 ], e9 e& o
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
" I- j8 x( G+ [; Z. W    AFX_MANAGE_STATE(AfxGetStaticModuleState());0 M. V% E' ]4 A- q5 H8 d$ `9 S
7 r" v& v  ~  \' |
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, - H9 m  ^; D# z: U
        CRect(10,50,510,1810), wParent1, IDC_TREE1);. q9 K3 {0 W6 g$ x( n8 s$ I% `
    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);" _5 \0 Y( T& w, b

. D0 j! R; j# o& [' p    Populate(displayPart);3 Q7 w8 {& x4 [4 [3 G  q( Y

: W* I5 C" e4 r2 P, k3 X    return 0;
, u. [; H; p% C1 M/ b* d8 O. z}: p* @3 H3 A5 k6 G  G0 \  W) z+ h
& T% }& x1 J4 h4 Q% B! t5 r$ y
//------------------------------------------------------------------------------" {0 R$ }8 K; P- {: D$ `8 a
// getAttributes
( ^9 `( L$ P1 [* s% E//------------------------------------------------------------------------------
$ \8 i, E2 `5 J6 t0 {/ c
游客,如果您要查看本帖隐藏内容请回复

! a2 h3 Y" B" _& E4 t3 m% I4 `+ t7 [: t% x# ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了