[二次开发源码] NX二次开发源码分享:NX10可以直接对资源条进行二次开发

2016-3-8 12:00:27 8940 34

  [复制链接]
admin 发表于 2015-3-27 11:17:17 | 显示全部楼层 |阅读模式

admin 楼主

2015-3-27 11:17:17

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

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

x

* N# B  Q4 F! E

# O  I+ X  Z) [0 ^2 b" l* ]8 v9 g: Q4 ^/ F) c; I/ a8 L. d$ I& T$ L$ ?
2 N0 R% x$ l  _; U/ s
NX二次开发源码分享:NX10可以直接对资源条进行二次开发
% |; Q. M5 b7 B, c/ v6 r( M这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。
/ Z( E' `9 ]- N  t2 W5 l
$ g9 F# h. D6 z* C4 |, V8 {) S// Mandatory UF Includes- H# j' T+ [2 a1 m" C7 r6 J
#include <uf.h>3 p5 a" D8 K7 [

9 [! s) W% V% Y% @6 z& i) \// NXOpen Includes  {& J, c3 ^+ o3 c  P- o
#include <NXOpen/Assemblies_Component.hxx>
3 R5 s1 h+ W1 d6 g9 O/ D6 D#include <NXOpen/Assemblies_ComponentAssembly.hxx>  g2 }8 ]* V- `
#include <NXOpen/ListingWindow.hxx>
" X4 Z$ ?4 a5 G/ h#include <NXOpen/LogFile.hxx>9 s( ]  |9 j* t$ U8 A
#include <NXOpen/NXMessageBox.hxx>
7 ~& v! O  U2 h; W; c; c  L) g#include <NXOpen/NXException.hxx>) ~  q/ M7 M$ C1 q* ]7 i
#include <NXOpen/NXObject.hxx>
. ?! G. I& l8 c: Y3 Q  m+ W% |4 `#include <NXOpen/Part.hxx>
3 E+ {, _+ C0 E+ ?#include <NXOpen/ParTCollection.hxx>, q- l- [% x  a2 P; R" z
#include <NXOpen/ResourceBarManager.hxx>
! T  w/ N) p$ y. W) [7 d9 C# _#include <NXOpen/Session.hxx>% m2 @8 S) K, L
#include <NXOpen/UI.hxx>
, J/ x/ e, n$ X) s4 Q( fusing namespace NXOpen;/ ]0 t8 v% j+ W  E1 R' g
using namespace NXOpen::Assemblies;
( K; m' }- _0 B- ?# T* T$ D" ]$ F
// Std C++ Includes8 T& s3 J. H, P0 E( E6 t1 W
#include <iostream>
8 L# p0 u1 H1 a  T+ d! \; Y# o: ?" @#include <sstream>
5 B" \8 j: J* p8 H' K  K#include <map>% w  M; @) t9 F* y
using std::exception;2 ~: \6 ~4 ^$ _
using std::endl;
& E' X. ^4 l! n7 Fusing std::cout;
  X# E' G% c) ]& t! t; w6 f- Kusing std::cerr;8 r4 R- W/ `) S0 ^+ z3 s2 N3 Q
# X! a* I) u8 m9 z& t. r6 ]  B
// MFC Includes
- M: c, n2 N2 G* S" c, [0 g#define _WIN32_WINNT 0x06010000
6 r5 M  ]  {5 J; l% `! B2 N/ z2 A#include <afxwin.h>
$ h" k6 J! A$ L! w1 P#include <afxcmn.h>1 o( S) G  i2 M6 G' S& ^
' U0 S! _3 |! L* n; s4 h3 _
#define IDC_TREE1   10023 l; N2 Q+ {5 M: n& X& O6 F

& h2 r) o, Q& P7 i: |5 C; m//------------------------------------------------------------------------------8 b+ y8 E8 f( j3 K
// NXOpen C++ class ; K- h% H: t; Q: f+ J* D) T
//------------------------------------------------------------------------------+ j5 \( B" {- W3 Z( `0 `
class MyClass' Z- f5 ?% T5 g
{
/ ^2 ^8 b: L  P6 f0 Y* J// class members- U8 \0 U1 {6 Z5 K" C. s; }( E
public:
! N8 _8 w. T7 s8 n8 W7 D# e& {    static Session *theSession;( D8 X1 y+ m2 B* S
    static UI *theUI;  A9 {0 T) Q; d* x
    static int m_tab;- w% i0 b2 Q+ ^: D1 y/ B  ~. ?( j
    static int m_cbID[2];
, s9 Y- E2 k% b
- N  A3 s( M( N! Q% M" S* i* X; _    MyClass();
( F6 p6 V7 W! q: I, V8 B! J( H3 l$ ^    ~MyClass();
6 u* c- N! V9 {$ Q  }! F) s& s5 a4 G) i) G$ c4 ^: q& x
    void print(const NXString &);3 V& d9 |; J* ^
    void log(const NXString &);( ^3 ~9 P2 e7 J3 s' I
    void getAttributes(Component *, HTREEITEM);2 A; @& q4 S1 t1 u7 P- _. L
    void getComponents(Component *, HTREEITEM);1 U! U9 h6 N1 I# d
    int ActivationHandler1(int tab_id);
8 x( }2 B" d/ l5 n    void Clear();
5 b) ]. {+ i1 n    void Populate(BasePart*);$ F0 D) `: A, ]6 Q" a6 ]6 M
    void cbPartOpened(BasePart*);
# Z  e6 p6 }% N8 H! s    void cbPartClosed(BasePart*);2 w, H5 w) A3 B, W: C0 v

- X7 K. \9 }( p! p- A) Fprivate:5 ~* Q; M2 O8 E5 i) V1 i/ f
    Part *workPart, *displayPart;0 p7 Y* Z4 U6 D4 j9 j' ^' f5 p
    NXMessageBox *mb;
+ r- b% b. R/ d8 a: ~    ListingWindow *listW;! J) n1 S0 m% |% y3 g$ F
    LogFile *logF;
  [/ W! Y# e' B- v. u8 c+ q. h    CTreeCtrl *m_tree;
: m/ {; b8 D9 L! I/ P6 B/ t& U    CImageList m_Images;
7 N, }/ ]  O& k0 q7 ]7 h' Q};3 o( J- N2 r9 l5 M- D3 c

6 n8 w& t4 K+ U7 i& {" p2 n//------------------------------------------------------------------------------' _9 X7 R# T# q! @
// Initialize static variables
% ?5 _1 o+ X/ q* U5 s' X) E2 R! A//------------------------------------------------------------------------------
$ k) w9 x; M/ L6 e4 USession *(MyClass::theSession) = nullptr;
% X: z# O* A+ ]! \$ yUI *(MyClass::theUI) = nullptr;
8 i0 H) J& p5 Sint MyClass::m_tab = 0;, g5 l" e3 \8 I  G' F% R; @
int MyClass::m_cbID[2] = {0,0};3 R# X9 s' D0 P! F. U2 s3 h' W

  K) z5 @2 Z6 N0 {( `6 Q" x2 B, eMyClass *theApp = nullptr;0 Y. V" O6 P# I$ D  R
, Q. a  C! k# U3 Y
//------------------------------------------------------------------------------
3 j9 V! \7 T  f, ?: R// Constructor
- w& r2 Q) K# g( y//------------------------------------------------------------------------------
* z6 ^: C0 }: `0 sMyClass::MyClass()) R2 }0 w6 O7 w3 U4 L# O
{
( u; k9 J7 k. E* I* o# d    logF->WriteLine("GTAC: MyClass Constructor");/ P* h  _1 E; o9 _; Y1 |3 z7 N
    theSession = NXOpen::Session::GetSession();" x( V- K5 u  {  Q" N
    theUI = UI::GetUI();- u7 a, G* @- {7 }# c4 O
    mb = theUI->NXMessageBox();
( v, @' u8 r' x" I    listW = theSession->ListingWindow();
' p0 f* g2 c+ o9 Q    logF = theSession->LogFile();( f5 A; g# x- {. v, t) `* K

# F; B9 ?3 a! D9 T2 b    workPart = theSession->;Parts()->Work();
" [: ~6 a) t) E* X, z    displayPart = theSession->;Parts()->Display();
! Y/ r0 Z% U! W' U# a2 l5 n5 v7 T# u( H+ C
    m_tree = new CTreeCtrl();
9 U) S! _! s' o; S
% @- y6 F1 }" U9 G# s! E    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
8 n; {. t& Y  [: c3 D' e    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );0 V1 T3 |* A6 ]
    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );! c2 N4 P  T1 }& C

  |+ I& [7 \* S4 s: M    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");7 ]" ~' c- z$ W  L% d# z
    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, . d' u( y, P' }* D
        make_callback(this, &MyClass::ActivationHandler1));
0 e, z7 ?0 @, Z+ F6 x/ ]" ^    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);  Z' C( Z& o  v
2 Q+ N! b' b) l' E
    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));2 d; {% J& J4 j
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));/ ^; I4 c. H8 Q% e. P( O9 Q* h2 t
}
3 b; [  E5 f# e" B- B9 V: F
& Y$ ^# x( j! ?: T$ p5 g//------------------------------------------------------------------------------
5 s7 b, D" i& L" n) a/ }- s) r// Destructor
3 U- o9 B6 G' A% l5 l//------------------------------------------------------------------------------
# X" `+ @8 [1 i# j7 [MyClass::~MyClass()
6 L* S- F& G, H# \& C7 V/ m{* W0 r/ N( d' g2 [, A7 m
    logF->WriteLine("GTAC: MyClass Destructor");
" i, x. c2 M% x    if( m_tree->GetSafeHwnd() )
) i4 q% w  F8 d+ M' y$ Y    {
+ s6 T. q/ ]2 q3 m& A9 P        BOOL bSuccess = m_tree->DestroyWindow();# G! B5 T2 i7 }5 o- J
    }6 O& B, ^' `1 K% ?4 R$ k
' A* ?# ?. h0 Q2 ?
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);1 M- R# i$ y) F& w+ j( Z/ [
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
3 G* X/ v8 e0 j7 m  g9 m, v8 K    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
! D1 _) C9 B" p7 ^5 s$ j  j% j: S5 _/ }' f# @2 ~
}7 t. A% A5 H2 y7 T3 Z: `8 W
1 K  V7 Y' S3 v
//------------------------------------------------------------------------------
2 |* Z* H/ X3 n8 v/ c; ?// Print string to listing window and/or syslog+ W2 k( O# y* n
//------------------------------------------------------------------------------
% U# U0 k' U: L+ {* o2 g2 v$ E; _void MyClass::print(const NXString &msg)
6 m5 e4 y1 l2 v5 ]# ~{: k9 Y. x9 ?! \: e# o; Y
    if(! listW->IsOpen() ) listW->Open();
! d5 C# ]' s9 h$ G/ i9 B# e    listW->WriteLine(msg);
0 F7 [  U& e/ L2 V1 j- h3 V}) s. M6 j' i* ^; ?8 A' n/ B
void MyClass::log(const NXString &msg)% e) [0 x# _! _9 H/ G1 d
{
4 X+ ], `' O: d' p+ m    logF->WriteLine(msg);0 [* U+ u9 F5 Z6 N  Y
}
1 K7 t5 ]1 q5 s4 z. m: f& I4 X, W4 H0 I' C) _  R; [
// Callback triggered when opening resource bar tab
" U0 ?+ ~: S6 H6 C5 o3 F. q/ H  wint MyClass::ActivationHandler1(int tab_id)" o' u, C7 _9 G- S  _6 M2 [0 O
{1 b7 r. E% U  p: `# z8 N
    // Get the WindowHandle object$ l- a) }! `' s( c+ c0 x2 U1 m
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);* ?( _6 V7 a  W& v& s* @; R( B
    // Get the real handle
' i% M  Y- R" Q% J' x    HWND parent_handle = (HWND)window_handle->GetHandle();" D: {* p3 L, n2 D, z
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!
, I/ ~; \* B! s5 ]: P    CWnd *wParent1 = CWnd::FromHandle(parent_handle);  i8 {$ f2 p, _7 ]/ p
    ASSERT(wParent1);
4 Y$ T$ b3 R4 P5 M3 G
! m! p/ v6 q, x, I$ L3 Y    // Switch module state to avoid Assertion from afxCurrentInstanceHandle$ }+ u5 s* L% I: i6 c
    AFX_MANAGE_STATE(AfxGetStaticModuleState());- j3 U' W0 r( k% b2 [

: J* X( z: p" L& }6 Y$ M    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
$ J8 y$ I0 {4 k7 k& u+ Z& ^% E: }        CRect(10,50,510,1810), wParent1, IDC_TREE1);
: \+ n7 w2 z2 V% k    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
1 L( j, v- X2 }; ~
# m1 n' \8 f: y/ w+ {' Y/ X( r    Populate(displayPart);
( K5 o3 _8 w6 C" }8 n' |8 ^% a) H$ l8 K- J4 }% i
    return 0;6 F( t2 {" M, J0 ^+ i
}
7 S+ S* L- Q- B) d3 ~
( h& w( t! ~6 k- F! {! E+ L1 G//------------------------------------------------------------------------------
: L' b1 @% ?: h; d3 u) C4 q3 u' I// getAttributes: s9 ]- z; ?! Z/ n# `
//------------------------------------------------------------------------------5 i. W# V4 ^( j- C5 U4 j  G
游客,如果您要查看本帖隐藏内容请回复

& r6 z1 X7 n) y; V8 ?. p
$ Z( u2 V- U" @1 [/ i( Y; u& Z# f
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

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
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 发邮件注册

返回列表 本版积分规则

用户组 : 管理员
邮   箱 :xduniverse@qq.com
手   机 :VIP用户可查看[申请]
Q   Q : 点击这里给我发消息
性别 : 就不告诉你
主页 :http://www.plmhome.com
个人介绍 :原西门子NX高级教务员,10多年NX培训,开发咨询,Teamcenter培训实施等

主题2117

帖子3323

积分62156

  • 求助,如何更改装配导

    求助,如何更改部件导航器里组件的顺序,UG10的默

  • Tecnomatix 二次开发

    Tecnomatix 二次开发入门教程 6 实现打开PLM之家

  • 部署teamcenter visua

    部署teamcenter visualization设置和相关选项 我

  • Tecnomatix 二次开发

    Tecnomatix 二次开发入门教程 4 设置图标效果如

  • 206. 使用图纸Version

    206. 使用图纸Version UP修复新版本图纸相关问题

  • 发布新帖
  • 在线客服1
  • 在线客服2
  • 微信
  • 客户端
  • 返回顶部
  • NX讨论
    Catia
    TC讨论
    Tecno
    云课堂
    业务合作
    x
    温馨提示

    PLM之家(plmhome.com)提供专业的实施开发培训

    NX二次开发基础培训 | 已 80 学员 参加

    NX二次开发高级培训 | 最高性价比

    CAA二次开发 | 值的一试

    Teamcenter用户基础入门 | 虚拟机赠送

    其他培训申请

    哥已知晓
    快速回复 返回顶部 返回列表