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

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

admin 楼主

2015-3-27 11:17:17

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

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

x
2 b1 v/ z% v* z4 n+ z+ H: s
  z$ `; W% ~+ e
3 D( n( j* P) {8 ^+ [9 [4 l

$ k/ i2 z/ \- _- ^7 ]NX二次开发源码分享:NX10可以直接对资源条进行二次开发2 j/ I7 d) q4 J- n
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。$ H8 m9 m  ]5 c
6 X9 _" c1 a# H" [
// Mandatory UF Includes1 a0 N2 P/ M, f' m1 d
#include <uf.h>
$ m5 T  c$ b; S2 V7 \! @
: n( A! f5 k; w, Q. ^  A( k// NXOpen Includes9 V# H: y  X% a
#include <NXOpen/Assemblies_Component.hxx>
% p. \6 ^5 k/ Q1 k0 e#include <NXOpen/Assemblies_ComponentAssembly.hxx>
) n" N4 S7 s7 r/ X% P/ E#include <NXOpen/ListingWindow.hxx>
  f1 _# u4 H  T- `7 Y9 K) l#include <NXOpen/LogFile.hxx>
9 L; h* E" W7 J" x/ Q  N# N#include <NXOpen/NXMessageBox.hxx>& N' q9 D3 H; I' F; g9 C
#include <NXOpen/NXException.hxx>
3 x: ]) R/ e0 i#include <NXOpen/NXObject.hxx>
; P3 F/ s9 G0 b#include <NXOpen/Part.hxx>6 P* o3 x2 N- }1 i4 O2 K
#include <NXOpen/ParTCollection.hxx>3 F; w7 u5 `, o1 W: m
#include <NXOpen/ResourceBarManager.hxx>  C; G* Y" i/ g" e& L; B
#include <NXOpen/Session.hxx>
3 F: V/ |4 o6 N& \) ]& n: a; h#include <NXOpen/UI.hxx>3 g0 @3 q0 w. M2 w
using namespace NXOpen;+ ^1 K* f6 X" J3 R
using namespace NXOpen::Assemblies;; E2 t7 m/ s. A6 b

, R3 U9 v3 M  c7 Y- `- `5 q3 Y// Std C++ Includes) B" O7 u; O' O  x: I
#include <iostream>
8 J- ?' N6 M6 I1 N5 Q2 m+ T#include <sstream>
9 O) x/ N; R% s# n4 ^, {#include <map>
: E. Z4 c# L% O) }using std::exception;
. Y) Y$ M- z( p& c/ j9 Tusing std::endl;
8 A+ w' E3 S% {using std::cout;
; T! c, i4 H) h4 B! ~1 |1 qusing std::cerr;! w$ G% a) n# q' E! x' {
1 o7 O8 c% z7 a% P
// MFC Includes
: M3 P* s# Y* c  b4 {% S7 L. _/ L#define _WIN32_WINNT 0x06010000 6 O9 G/ T1 S4 S  f
#include <afxwin.h>! z5 ^6 S* z& K+ C
#include <afxcmn.h>
' T1 V6 P! A! P) ~2 V
$ @( ?' r6 m" W; T1 a#define IDC_TREE1   1002
  p) k8 l0 d0 b/ y3 H( k! [/ Q
" n5 M0 ^4 z1 ?$ F3 Q% R//------------------------------------------------------------------------------/ x7 N( H& i3 h) c5 `# C
// NXOpen C++ class 9 |& J# ^  R2 v: \
//------------------------------------------------------------------------------6 p; }- g( J- O5 P2 X3 m& C, W6 i
class MyClass
$ y* J3 S; q: N7 U5 N{' I4 B8 _( I8 m3 ^6 [1 \2 _( H
// class members2 c% M' @9 u, Y
public:2 r4 Q9 m6 G3 V& r( d0 Y0 G7 q
    static Session *theSession;) q& w" \7 ~' S
    static UI *theUI;
. c3 S0 g; p, {6 M. ?    static int m_tab;
4 A1 Q0 Z0 o2 ^- L- p! U    static int m_cbID[2];
- \/ B  q; m3 A! U+ y( S, A  J0 \/ i% ^$ }! X( b' a- j# s- W
    MyClass();
* ?+ T% g2 u: l0 H) L! N: y    ~MyClass();
8 @) h" m$ W- g9 G. B' j# M
5 K: p: F7 H6 Q5 i7 v' [$ Z    void print(const NXString &);* D$ t- c  ~1 w( F6 ]4 z" _8 D4 \
    void log(const NXString &);# Y5 V# l( v7 D7 ^! L5 _/ Z
    void getAttributes(Component *, HTREEITEM);; S6 N$ u$ [- e* C) m
    void getComponents(Component *, HTREEITEM);$ L$ R7 ~1 C( G. a  z6 C
    int ActivationHandler1(int tab_id);
4 P0 _  @, g- \. V  f    void Clear();: l0 c. v  J- |, a. X+ n. T( h
    void Populate(BasePart*);9 P2 u7 O9 S2 u& d. p; j2 @5 A
    void cbPartOpened(BasePart*);  e/ l: I7 ?' W7 U4 M( [
    void cbPartClosed(BasePart*);0 H+ F5 @4 L2 S6 n0 J6 Y
9 R  J% L, {3 h# M" Z+ a
private:
2 y' A+ W' x" r0 L' }5 J  E- o    Part *workPart, *displayPart;+ V6 G* y1 }% R. V& D6 W: i
    NXMessageBox *mb;
5 V0 w2 C7 [! n# }, J2 ~    ListingWindow *listW;
$ x' Q4 N0 a, [0 t  a& }+ h    LogFile *logF;
3 C: u3 k4 n; j" b- G    CTreeCtrl *m_tree;
3 t/ H* E3 S- M" \$ @/ q. [. Y! t: j    CImageList m_Images;
8 ^0 M- `1 b; Z9 j- i7 H( x; R. _};. z% I4 k$ G' C9 ^

  c$ ]% {& s) q9 b# y& V' B7 C2 F//------------------------------------------------------------------------------( i0 A. H3 _/ _% y' c3 `: B$ H+ {
// Initialize static variables
  _7 s; i! l7 N; }# b. I9 v/ l//------------------------------------------------------------------------------: e2 o2 `* I9 @: w
Session *(MyClass::theSession) = nullptr;
: Z( B# r( i* F) D" p4 Z7 nUI *(MyClass::theUI) = nullptr;# l9 G2 y/ O8 P: S5 a3 `; i
int MyClass::m_tab = 0;
, ?- d$ P3 M1 Q2 J4 b5 jint MyClass::m_cbID[2] = {0,0};5 |& x. y5 D' }- e6 ?& {" B
1 O1 y8 h) |( a! Q& ?
MyClass *theApp = nullptr;5 a+ I' u% Q7 l; v- n
* [# ?. V( a" @" P7 j; A* R" l2 C
//------------------------------------------------------------------------------
: _% U  I; l" Y- D// Constructor $ V" }; o% p% N/ A% T
//------------------------------------------------------------------------------4 c' [/ y5 @' Q
MyClass::MyClass()
% Y' Z' ]: k4 r4 s3 R{
  k2 b% P2 H9 g% h, _    logF->WriteLine("GTAC: MyClass Constructor");
2 w; q& I# e# O! c    theSession = NXOpen::Session::GetSession();
. u  |/ k/ A4 @" j* j0 a+ q3 @) N    theUI = UI::GetUI();
- i. h" E+ w- m6 [7 J. B: {5 n    mb = theUI->NXMessageBox();
5 Z% `9 ~3 ^7 l3 L    listW = theSession->ListingWindow();8 M/ K6 P- _& C
    logF = theSession->LogFile();
( w. n3 W- m' h  K) j/ L- O/ Y2 V( Y8 f, z8 M6 X! X, X  E
    workPart = theSession->;Parts()->Work();) O" T' T( b/ h! @: ~/ {! X$ F
    displayPart = theSession->;Parts()->Display();$ |; F/ `) }( W' A
( s" i3 K9 `1 F! f  P; n
    m_tree = new CTreeCtrl();# s/ o2 r* s; t! n* \
( [8 ^- `1 J2 D% m% D) w) D0 u
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);: f( c9 J$ Q; V. D0 w
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );3 X9 }" p, D4 N) x- p: y) p
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );+ Q5 c$ g! A  W$ f5 f/ E3 V

& r' y0 i: O7 u' [7 F% V5 |    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
1 W2 p5 L0 i. @4 J; r1 V& v    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, , E, t- A6 p, x7 j% ?) S
        make_callback(this, &MyClass::ActivationHandler1));; p- ~7 y4 u+ h$ K1 U
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);( e  [- r. ^+ t0 Z, \9 [5 `, X

% y4 u8 z/ K7 m. u) X1 c    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));9 {1 ]6 K' S5 B+ J) @1 @
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));
+ Q+ N# I, s5 n; z0 A, |4 `( l}4 n* ?1 ~1 h* }& u9 j/ v" ~7 F
3 U$ N% n- a' I  f
//------------------------------------------------------------------------------0 J1 y, i8 I+ q4 Z$ X" u& v
// Destructor
4 f& @6 U' M. }6 k0 I2 P" H7 C//------------------------------------------------------------------------------: X7 g. J: V) ^  l
MyClass::~MyClass(); v6 O8 N0 E! L: Q% y0 y8 b1 p
{
! @) ^$ w/ Q% W* g    logF->WriteLine("GTAC: MyClass Destructor");# |8 e0 B0 ^2 A0 J5 R' v
    if( m_tree->GetSafeHwnd() )
4 F5 J" f  ]7 ?: B# N; L! Z6 C    {$ S) I; f! V. [* W7 k) y# X7 \
        BOOL bSuccess = m_tree->DestroyWindow();
- Y) H* B. A2 [! e6 U* {: N    }. x. N! x6 W3 z# A' [0 d

2 C) y! P4 z2 J5 `3 q    theUI->ResourceBarManager()->Destroy(theApp->m_tab);
( v. `( z3 ~1 w3 B6 T5 ^' V2 |    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);. I+ u7 h; n4 K- N* L
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);# f2 i6 ]3 M, [( `
! r' C& A0 @, c0 u/ S
}( p3 n' x0 a( z; E: j
7 h* h8 C/ U% t1 U
//------------------------------------------------------------------------------: ~3 O8 X, Y4 c  c
// Print string to listing window and/or syslog
7 j& d0 l# x% x) G6 G7 @//------------------------------------------------------------------------------
* o3 Y+ a+ i0 J; B9 z; y0 \6 \% Vvoid MyClass::print(const NXString &msg)/ \4 s+ `6 E/ Q' |. P
{% q9 X' ]  e% ]) I! x
    if(! listW->IsOpen() ) listW->Open();2 x7 u! v. B- R) i) k0 d
    listW->WriteLine(msg);" R4 d1 f/ T+ S, Q+ B) x5 A
}! P+ a) V" c# d" F+ N3 Y' H3 M
void MyClass::log(const NXString &msg)
$ E' k+ t7 ~8 J/ ]5 U{
+ L$ E! u/ V/ B/ I" C    logF->WriteLine(msg);
  Q1 \1 @) A. a; B( {# D( e}7 E* {& b* O: \" b

; Q) N3 Y. H3 ^* S. d8 s// Callback triggered when opening resource bar tab
8 ~) ~' D* ]/ G0 B& k7 H; ~int MyClass::ActivationHandler1(int tab_id)
1 a1 T% o3 |5 a% m/ `. t{8 f5 Q" }) ]) j( Y6 b6 d7 l( n  y! n
    // Get the WindowHandle object
6 B- y% ]& S7 ?( A$ k; W    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);% }9 m) ]; m+ a1 c$ t6 A; ^
    // Get the real handle
/ w; h' J$ b( ^) c    HWND parent_handle = (HWND)window_handle->GetHandle();
! w, a" h  L3 n% g5 K5 S; d2 c    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
  g- T+ a; O, z0 x3 G& C    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
$ l7 [  [8 O4 g  N2 m9 v( ~, }    ASSERT(wParent1);. Y$ l7 x' L% U" F0 s2 W
9 C9 M8 }4 j1 s) p/ Z+ S, n9 F8 z
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle5 q& `2 i; l  i2 F$ e6 F
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
! r8 `' R- {1 _, h2 W- j" ~! l& |, {, w2 f4 y
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
. ]1 g+ B) K7 {2 ]6 ^( r        CRect(10,50,510,1810), wParent1, IDC_TREE1);
8 Y. @) K# E: o; l    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
3 [6 ]* ]0 S" H# L  P0 m7 Z; C# c) h) L
    Populate(displayPart);) Y) R' T" x$ [: J
- x: }& k3 |0 t3 z1 }5 D; c
    return 0;
! Y) r! {# w( _3 ?, ]- u. _$ X}' x( ?& _0 j& Z% i7 v' n$ R

  w: z9 U7 u; S! x//------------------------------------------------------------------------------
/ r& L( g5 O1 ]( L' w( j5 L1 q// getAttributes  j4 c0 u% P2 |" `, a1 l
//------------------------------------------------------------------------------5 f* A, x7 L% d- z5 u; W. n# F# e
游客,如果您要查看本帖隐藏内容请回复
- ?  J6 o& f6 n8 }7 U

0 W  v- Q' D& x2 m; e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了