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

2016-3-8 12:00:27 10011 35

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

admin 楼主

2015-3-27 11:17:17

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

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

x

& t) ?7 P: Q8 B1 J

* ~) D9 w1 ^/ ^* m( r, z+ H0 o7 f, |9 b3 X3 k

2 w* O- c4 L/ ONX二次开发源码分享:NX10可以直接对资源条进行二次开发
  M& [. B* j+ P8 K  A- j+ x- |( M这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。! A2 J4 Q# q! m' q1 v
8 [3 X. e+ {& @, ]
// Mandatory UF Includes
( `2 A$ A7 A: h#include <uf.h>+ T' l# D: N9 M" E0 Z

4 B/ n8 @3 _, u/ O+ e// NXOpen Includes
% }) y9 i4 o8 b. b* J#include <NXOpen/Assemblies_Component.hxx>
# I/ y6 k8 L: k( P2 \#include <NXOpen/Assemblies_ComponentAssembly.hxx>3 ^. K% q6 x# `" D4 v1 \# ~, w6 q1 E
#include <NXOpen/ListingWindow.hxx># p" {. `9 A+ g- n0 h* a# @
#include <NXOpen/LogFile.hxx>
/ A+ L' d) F4 z: r7 C2 `* Y( }#include <NXOpen/NXMessageBox.hxx>
, l6 i# H+ m# W  z- @; X" C6 _#include <NXOpen/NXException.hxx>
! \. |% W8 J- A6 S  m, G* ?# j) ^#include <NXOpen/NXObject.hxx>
, y& C5 @! P% z; W; a#include <NXOpen/Part.hxx>
  [# o( M# M6 [( n#include <NXOpen/ParTCollection.hxx>
9 ^/ a5 U6 _) o- s$ J& ~- }" U#include <NXOpen/ResourceBarManager.hxx>& ?! n  a& |" C
#include <NXOpen/Session.hxx>: D2 r9 K2 D! ?0 ~. b- s) i* B
#include <NXOpen/UI.hxx>  e6 ~8 F2 \& z2 J' ]6 s2 M- }, m
using namespace NXOpen;
/ {7 c! f+ \; N6 i& @3 z/ S. nusing namespace NXOpen::Assemblies;4 A' U, O( g+ C% z6 g' a; s) I* l/ A0 ^

# O1 F' \8 Z% y+ i$ H3 v3 y// Std C++ Includes7 I- G2 U1 I2 H! I+ G
#include <iostream>  Y1 F: a7 C7 M
#include <sstream>
! |2 c8 e& v- b, P% Q* \  y#include <map>5 b4 w0 T5 E* x  b% R, d
using std::exception;
7 W) h; w8 t* F" H6 f; gusing std::endl;. b: [* n5 Z0 a. J$ N- f
using std::cout;0 P& P  O) l$ F# N2 Q- k
using std::cerr;0 I8 t* }- r: e; d& @7 [" G& V

# m. ]! b4 Y; G* w9 I& \  S& t// MFC Includes7 B2 R' a0 B6 L, A4 ~# f- m
#define _WIN32_WINNT 0x06010000
4 J4 V; @3 b$ c' m) j#include <afxwin.h>
' g( O* w6 p6 w$ a. j) t3 [0 N#include <afxcmn.h>
& ~" @2 k7 f" _6 V" C. P6 s% ~3 g, i" |) p1 U; y  S6 e
#define IDC_TREE1   1002
& t9 @& Y" G0 p# c# i; e" n) D6 R8 I" X9 i5 q5 M% {7 K, R: C
//------------------------------------------------------------------------------
7 m* e+ K# z' z+ P6 ]- o// NXOpen C++ class
9 C4 B$ C; p/ S( ?8 R//------------------------------------------------------------------------------
/ G! k: I! U* z- v! ~6 Eclass MyClass
  t* K, m! w6 _% @' }- T5 o* Q{& k8 O  n2 T1 c# \* e
// class members
! j8 [! H6 r  E( ]public:+ q$ l0 R3 K3 s# H$ E( m. V
    static Session *theSession;
$ M- ?  i& b3 W$ W7 F    static UI *theUI;% J6 [9 L: e' `9 U3 i- a
    static int m_tab;& a* {+ |& v! K+ e8 X2 ?7 x
    static int m_cbID[2];- c2 u4 R3 i+ R# @3 |2 ]. w$ ]" u
9 T! j# j0 C4 r( _
    MyClass();
" j- E8 _% ]2 z0 a' a( [% k/ D# k    ~MyClass();
5 D# j, @0 L8 i7 z) m* r# Y' h, d3 r
    void print(const NXString &);7 t' _( U% i! T9 R( |
    void log(const NXString &);) b+ Z* x5 i" w' q( ^$ }) \7 G4 _- {
    void getAttributes(Component *, HTREEITEM);
: z8 L$ U+ v1 v; `4 M    void getComponents(Component *, HTREEITEM);/ e6 ^3 z4 B3 v- ^  B
    int ActivationHandler1(int tab_id);( f5 u% i- n1 y* h- m: Q. ?% b
    void Clear();
" s5 X$ T* n6 |    void Populate(BasePart*);
. b! o  Q/ j% S4 u- v, ?    void cbPartOpened(BasePart*);
$ G1 ~3 O0 M, b+ k5 R  O    void cbPartClosed(BasePart*);: R8 V: l& F4 _- f6 x8 _

2 n+ S1 V" V. h* _, sprivate:
; w; [: \% Q* s( b8 H( F. j    Part *workPart, *displayPart;' W8 Q, z5 L  X4 M$ d
    NXMessageBox *mb;; Y: B( V$ a+ D, M' q% o% L
    ListingWindow *listW;
4 m: `. B/ j. d    LogFile *logF;& x; b' m1 c' y; K* [7 e
    CTreeCtrl *m_tree;
) y* l$ L+ `; ~! q; M! V    CImageList m_Images;
6 s! n2 u' s+ I; Y/ K9 K  M# y};5 \' j4 i) E) u2 A. \
" I# \" O- j: w) H5 E
//------------------------------------------------------------------------------
/ u3 e& Y- l" h! ]% u// Initialize static variables( A( P+ c! B' O* a+ H5 I, j1 m
//------------------------------------------------------------------------------
& ]. z/ F0 k/ w* D1 c4 A6 f$ NSession *(MyClass::theSession) = nullptr;; l: _' v- w# v& C, X' d. S
UI *(MyClass::theUI) = nullptr;8 W2 S& z9 _, R5 \, P: x) V
int MyClass::m_tab = 0;0 x* x4 M' I5 G# K# @) u: ~9 K
int MyClass::m_cbID[2] = {0,0};
1 U' w" s  M7 `4 X' N4 Q
1 v* `+ {( c! k: `0 f( nMyClass *theApp = nullptr;
1 |# h0 |6 a1 X3 c- c
! `1 j9 x" i3 W. \" |" ~0 s: G//------------------------------------------------------------------------------
0 L( {8 b+ o/ c- W* b1 T5 ]+ Q9 v// Constructor
3 W. j  Q: x- U. Z" |" _) y8 i//------------------------------------------------------------------------------0 N  H# u0 r7 i! `& M! x
MyClass::MyClass()& \+ f/ o$ u# E# @# V3 y+ ^
{! ]* M* C5 N3 r! [/ w, @
    logF->WriteLine("GTAC: MyClass Constructor");
* J+ c5 B5 R( W" A+ V7 ]' Q    theSession = NXOpen::Session::GetSession();
7 Z6 H  p2 r; u: B    theUI = UI::GetUI();
! W, q: }7 A1 q. d8 P7 H( j1 K    mb = theUI->NXMessageBox();
: K9 a8 ?& N5 Z6 p2 e    listW = theSession->ListingWindow();
2 z1 g8 e# V9 N# r5 V2 {; Y    logF = theSession->LogFile();, K1 r9 o, H. t  _, H& y

+ w2 B  A- ?' I5 s( z8 {4 q- L    workPart = theSession->;Parts()->Work();: Q# d) W6 Z; Z! m
    displayPart = theSession->;Parts()->Display();9 F) Q$ |5 O* J- ^* ]* u  k
" j% q& n$ o9 k8 o* z7 v: B; _
    m_tree = new CTreeCtrl();
6 b' l+ z" Z5 @& W( B% `  g: s0 g0 F) w$ Y: W" ]$ _- l! G
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);9 O# \0 A# G% a" M7 b
    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
" g7 m% e( t! t! Q    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );+ t) [& x+ K, Q. B6 B- n' S
1 Y. C: j( ?7 e3 k6 K
    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");
8 G/ d  K7 c2 e" d- t    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, 4 M6 T" K6 C* S6 G. ^6 K
        make_callback(this, &MyClass::ActivationHandler1));/ _- ?& [# h( _" h8 u0 I
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
# @4 M; {; G4 x1 ]
3 |4 c: d% H5 ~8 \1 ]( S" L    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));1 R: S+ K8 I6 h
    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));# H- W/ J' ?4 R& P
}1 w" Q3 h8 ~: u2 `4 Z

/ ^+ w8 g1 f# \0 b$ z//------------------------------------------------------------------------------  M8 H' F& d, e4 f) B0 E% e
// Destructor
, I( y6 t& ]7 i( F6 n+ z$ z# }//------------------------------------------------------------------------------, z6 ?' [) |. p; q. z
MyClass::~MyClass()
  R5 W; V3 {6 v/ G# c; e0 Z{
/ I3 J" H% W# |- z/ F    logF->WriteLine("GTAC: MyClass Destructor");' W+ Y" ]# K1 M% u: Q* `4 A
    if( m_tree->GetSafeHwnd() )
6 z7 Z! ~7 [2 e* m5 p1 |    {
; R6 E  c( }' N5 u3 ?4 y        BOOL bSuccess = m_tree->DestroyWindow();
% ~' ^4 @7 d) B$ s9 D    }, u9 e: g, k* m' y- {& J; d% U

' A3 P' @, K/ V    theUI->ResourceBarManager()->Destroy(theApp->m_tab);3 {$ K( j6 G. A9 _* z
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);
4 \# m2 [0 b; r1 C8 Y8 N' z    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
7 W8 c4 p6 J7 e8 m) j, |. _4 H6 t: n4 ?! P% b& u
}
7 Z2 b$ D* x, G3 e3 F) e' d+ T* Q: C6 h0 H) f! l
//------------------------------------------------------------------------------  j" u, r$ G" l; Y
// Print string to listing window and/or syslog
' e) O) {, s% v8 F- e- e//------------------------------------------------------------------------------
9 \& O$ @; g% e7 Qvoid MyClass::print(const NXString &msg)
0 z, @( t1 |3 R7 g{3 X, y7 H1 j/ |, P
    if(! listW->IsOpen() ) listW->Open();
5 ^: T3 X/ i" D; H0 Z& v: u1 H9 c& U    listW->WriteLine(msg);& T1 C8 j/ l3 H7 l/ R
}& w& I% M; S+ K& W, f# a$ y6 a
void MyClass::log(const NXString &msg)8 t! v2 P3 e, @- H7 X) f" l
{4 ?7 J& o8 p; M+ h+ P; [7 _/ R
    logF->WriteLine(msg);
2 e& ~3 _' |  \% v4 `6 W. o- |+ |: C}
1 e4 ~7 q0 c7 r* e/ l1 {% Y# S
9 r. g3 F8 ^8 L; i// Callback triggered when opening resource bar tab
4 r) B9 p9 l, ?; v2 qint MyClass::ActivationHandler1(int tab_id)) `/ q" D! `! \4 J8 J( [7 ]1 a
{
4 R, R/ L) m) e$ K& ?    // Get the WindowHandle object3 X. y/ E1 T' p+ e) p5 _; ~. l& y
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
, ]8 A0 Q2 L+ g: I5 x7 V    // Get the real handle8 n$ q8 i9 B  }
    HWND parent_handle = (HWND)window_handle->GetHandle();
$ l: R7 ?7 U- s; H. O- M5 `    // Get the CWnd object from HWND, FromHandlePermanent will return 0!" Z2 ?, Y  I3 o) k! K, K
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);; C% r. w4 z, c: L6 j
    ASSERT(wParent1);; j' Y+ H% {6 F8 }9 w
- O( T/ `; z" |# y* t: A& B
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle/ E, q9 H0 B4 p
    AFX_MANAGE_STATE(AfxGetStaticModuleState());8 M! z& y) F* X
, x# I: W4 t) g1 f
    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
/ l' i1 e1 Y  X- f0 w1 k  h        CRect(10,50,510,1810), wParent1, IDC_TREE1);
- E3 Q% }! u+ u& M& k# q) {: ^    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
6 S% d* p4 N5 T, \. o. z5 o# v" T. Z! P
1 S6 o+ I0 h& B+ W' `" I  \3 X    Populate(displayPart);
+ A6 }, |8 u7 G; L6 _8 r
; e3 h. m, J- s4 o    return 0;; ^) i# o* S% c5 W: H/ u
}
/ J+ A9 ~7 P; X. F. d0 E3 f. D9 z( o1 _/ S! K
//------------------------------------------------------------------------------
9 ^* E* j! H8 o, [  O  s8 c1 F& ~; T' R// getAttributes" X  I% c# `6 `+ `
//------------------------------------------------------------------------------3 o) ^  u" H. f
游客,如果您要查看本帖隐藏内容请回复

0 j' U1 L+ @5 N8 Y4 U5 x
# j5 q1 G0 @/ o( L/ e! O6 J
上海点团信息科技有限公司,承接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培训实施等

主题2141

帖子3350

积分63518

  • TC12安装出错,求帮助

    日记没有记录啊,咋样?

  • Tecnomatix 二次开发

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

  • Tecnomatix 二次开发

    Tecnomatix 二次开发入门教程 5 创建Tecnomatix

  • Tecnomatix 二次开发

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

  • Tecnomatix 二次开发

    Tecnomatix 二次开发入门教程 3 第一个hello plm


  • 发布新帖
  • 在线客服1
  • 在线客服2
  • 微信
  • 客户端
  • 返回顶部
  • NX讨论
    Catia
    TC讨论
    Tecno
    云课堂
    业务合作
    快速回复 返回顶部 返回列表