PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

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

  [复制链接]

2016-3-8 12:00:27 21750 43

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

admin 楼主

2015-3-27 11:17:17

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

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

x

( E' R8 w; [+ C' K7 c& O
. _0 H# N! P1 v1 r& ]2 S! `

/ R& K& p" N% k0 g3 f

1 k  g& J) T. M9 BNX二次开发源码分享:NX10可以直接对资源条进行二次开发$ I! Y- G/ \  s/ p; n9 x( [
这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。- Z& V+ c2 S' G! T% v# K

6 l9 k8 Y% l3 R0 K  c0 l// Mandatory UF Includes
' J: p4 l/ `. f0 X, M0 @#include <uf.h>
& x1 [; M2 G1 E! ]2 g1 y% a- Q, D7 S* N# b; L  s
// NXOpen Includes
6 [; y* T8 V. d4 |#include <NXOpen/Assemblies_Component.hxx>
; @' D; L% j8 m1 M. J1 o#include <NXOpen/Assemblies_ComponentAssembly.hxx>- {) x1 A. ]+ z& @/ U; H; L
#include <NXOpen/ListingWindow.hxx>
) W! g. U$ }# T% U; I& c#include <NXOpen/LogFile.hxx>' c7 t' K2 ~. K! N: {8 |
#include <NXOpen/NXMessageBox.hxx>+ y1 H. _- a$ d  H" P
#include <NXOpen/NXException.hxx>4 ~" F  @* R# [9 T( J
#include <NXOpen/NXObject.hxx>2 v  e( @8 d- k2 d  o1 ~
#include <NXOpen/Part.hxx>
/ u" q4 Y& b, o% T8 \1 n. A#include <NXOpen/ParTCollection.hxx>
3 y+ ^9 h9 g. ]+ _3 f! }' x#include <NXOpen/ResourceBarManager.hxx>
6 u% p8 I, Z+ i) e#include <NXOpen/Session.hxx>! t( N: s4 K/ [6 p6 i$ L
#include <NXOpen/UI.hxx>9 j$ X# n1 U: k+ H
using namespace NXOpen;, l) \# Z5 v( P  _' N! p* v/ L* m
using namespace NXOpen::Assemblies;  b, F4 R( e8 d/ X: j, ^

  f& p* ?# \/ b2 U* j# [: b2 _& c// Std C++ Includes, n! Q" Z8 Z6 K# o
#include <iostream>8 T) `4 o) h# \% m
#include <sstream>
- m) P; Q' C( I& A6 x- _#include <map>
! {0 I( |2 C1 u* L  G" kusing std::exception;
- |  x1 D/ g7 q' H! d9 gusing std::endl;
, c( _7 X9 j& L. A3 E! }using std::cout;
  U2 ~/ e- D. i$ O9 X' i" ?% `using std::cerr;. N$ K) J4 y& t+ w( z& h# v1 x

# U& m! V# E. _' _+ o! c  Z// MFC Includes: u0 X, N9 Q. G4 @# C' P
#define _WIN32_WINNT 0x06010000
. F, f0 P0 y+ S  X1 x1 Y0 y& u#include <afxwin.h>
- C0 F5 h7 f. q/ L1 _#include <afxcmn.h>+ ~2 F) n% n: C

; L4 b' N9 R. ]3 F#define IDC_TREE1   1002: j* {) N& l+ `3 N$ ^* V
2 ]' y, R& o% A; ?9 z
//------------------------------------------------------------------------------
+ V- _4 ~" H, K! Q  s// NXOpen C++ class
  i! ]' V' m2 P" E//------------------------------------------------------------------------------
! E2 N# K9 X9 k0 M! d" }class MyClass: u( |2 Y$ k* ^- I
{
, M6 Q$ h/ x8 X" `" v- X  C// class members
& @( z% d3 _4 rpublic:
9 s1 i$ f$ D' B& |& K6 i    static Session *theSession;3 x! N" o( R* k( T6 a8 z
    static UI *theUI;
/ D" i" q$ E1 }1 y+ W7 W    static int m_tab;
( ]) N4 Y0 F  [  R9 W: A% x    static int m_cbID[2];6 k5 a) Q+ a# d6 d) P# j) f: B
0 W+ v4 O$ i5 ?7 P* U; ]+ F+ q
    MyClass();
  F0 E" @% @6 w# }0 F1 S  z* q+ i8 Y    ~MyClass();
. q. h6 R0 ^+ G* J" u! I% _, Z+ i% L+ @
    void print(const NXString &);9 l7 c; R" r4 t5 X% Q
    void log(const NXString &);
. A) }, \! V4 W# b3 J3 Q/ U    void getAttributes(Component *, HTREEITEM);
4 H" {- L5 `, U% @9 G! r3 d1 o    void getComponents(Component *, HTREEITEM);. ~9 \( e7 n5 I0 S
    int ActivationHandler1(int tab_id);
( w+ m: t7 S# n2 s1 t# P    void Clear();8 X7 d! b- E9 S% @
    void Populate(BasePart*);0 g: p( _0 {: |+ j* U2 {* @! S
    void cbPartOpened(BasePart*);+ v9 w) d9 B  j: L3 S! Z
    void cbPartClosed(BasePart*);$ D* |- n& |- d+ J/ t

3 g. A+ }  f7 Pprivate:
* Y4 w' e6 V  k! ?6 ?! T8 D    Part *workPart, *displayPart;
- N$ y+ K8 U9 H+ d  b" ^3 g    NXMessageBox *mb;, t. o1 D( K6 ?1 p5 _0 {5 g
    ListingWindow *listW;
- G" k4 }, I6 G. P1 c3 l    LogFile *logF;
: I6 ?2 p3 H1 S* W    CTreeCtrl *m_tree;
6 w+ B! }9 d: }    CImageList m_Images;
" `5 Y' k  F- U& \& F) ]1 i};
) J! F- _: Q& N0 n7 a: s6 X. G: K4 u  B/ i/ d$ {6 @1 w7 h+ N
//------------------------------------------------------------------------------3 ^; i! X8 l! I) l% S
// Initialize static variables
5 D% `1 e+ g+ _//------------------------------------------------------------------------------+ N: y& r4 k. D3 }
Session *(MyClass::theSession) = nullptr;9 p' l3 d# ~) t: y
UI *(MyClass::theUI) = nullptr;
! b$ o- f8 I4 D* g# G, Q# Dint MyClass::m_tab = 0;: k; Z! i$ B2 E
int MyClass::m_cbID[2] = {0,0};
% }4 n/ `1 H9 b5 ~1 X; B( S
9 e7 o4 }: C7 V" l2 F" ?8 [MyClass *theApp = nullptr;7 p2 b+ ?5 @' p8 A$ L, Y1 l

9 m% w1 i9 j# H//------------------------------------------------------------------------------
9 I% s4 Y& D6 x$ [5 V3 x// Constructor & M) y9 X* ~9 A( X
//------------------------------------------------------------------------------
8 N/ C# I8 I, p/ r  \4 xMyClass::MyClass()- f* N+ ?5 a3 c
{' Z/ V9 K! Z5 S; A/ F$ o: k% s) e
    logF->WriteLine("GTAC: MyClass Constructor");; E, v2 {: Q6 [1 W1 U$ c7 F" x+ [
    theSession = NXOpen::Session::GetSession();2 Z* y; S$ U' Y, [  z$ Z! A
    theUI = UI::GetUI();' w" V- J6 X8 `, v. S$ v
    mb = theUI->NXMessageBox();
) _1 X: @0 R2 n& e- ?& B    listW = theSession->ListingWindow();. N8 |2 E% i- E1 X, ~" y( E
    logF = theSession->LogFile();1 _& K% u" p- @& r, ?/ ]. k8 ?

' A1 b2 j2 b0 {! M    workPart = theSession->;Parts()->Work();: q9 S4 \: F' Q7 \$ r8 W  @( z
    displayPart = theSession->;Parts()->Display();
  ^% G) w8 Z9 L1 f& R
$ g) x! S" t' f( w1 g7 z( g: ~    m_tree = new CTreeCtrl();
; i$ N3 o# V" S3 ]4 J+ b; }% F' K& H* w9 N3 ^6 |4 a0 Z
    BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
7 j0 g7 Z- N0 d$ G4 p    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
( W* _4 P4 A! j) U% g  b, v* x/ Y    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );1 t3 I7 ]+ Y/ _% c6 {% {; j6 u

- ^- Y9 B* Z& }0 S  G8 p0 F    m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");# i4 J# P1 }  _  N& U
    theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab,
3 H1 \2 Y5 e; z& W        make_callback(this, &MyClass::ActivationHandler1));9 N$ o& o; V: O4 b& M
    theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);. b7 w. h/ E3 |% R

7 Q: G& x5 f8 B7 \    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));
5 j2 p; L# X0 D6 ?4 R6 t    m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));8 G* ?  h# `8 k
}
; O5 n  S' [' u7 J" O
# @- S8 V, `+ s6 E; [+ A* ?* G& t//------------------------------------------------------------------------------2 }: G: a5 U: t. _; b" Z2 f$ G
// Destructor/ M  O( Z1 h- I) V9 w1 a) l
//------------------------------------------------------------------------------: M$ d: ?* s6 E# B& [  N) ?) l
MyClass::~MyClass()
  K2 A4 q# H' ]! v/ P7 |, e* ^! i% h; l{9 {; x8 @. r' @6 j; a; ~6 J" A
    logF->WriteLine("GTAC: MyClass Destructor");
* M5 [4 m, G# G9 D) H0 {. F- z' @    if( m_tree->GetSafeHwnd() ): U' b5 L+ r5 o3 @+ a4 N
    {+ ?9 f) G: E4 B7 I
        BOOL bSuccess = m_tree->DestroyWindow();
2 U& s- Y% M% j$ H9 D8 y: u    }* m- B( [+ r+ T" i& N' O
5 X, k, Q' d3 g9 J5 A
    theUI->ResourceBarManager()->Destroy(theApp->m_tab);" v* B' B' {  e' r6 q8 g1 ^
    theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);  i( ?7 l$ D* j9 ^
    theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
; r4 z4 g0 ]3 W" E( w8 K: X8 a9 t# \$ n* `2 S: q9 B8 |: r: S- L
}- C& _. r7 b& y) j. u
( M* N2 M# H! S: T* b+ Q
//------------------------------------------------------------------------------& q' X$ B9 q1 s5 U
// Print string to listing window and/or syslog6 _% L6 E+ _8 m2 l8 Z! M; \/ b
//------------------------------------------------------------------------------+ }# q( Z. ^) N0 x$ K
void MyClass::print(const NXString &msg)& s6 y9 t. c& d% Y6 f! o& F
{
; i1 `4 L$ @  E8 B* Q! Y# B+ G; B4 d    if(! listW->IsOpen() ) listW->Open();; t# M) M) f1 D. a. j! ?
    listW->WriteLine(msg);3 S, J1 E2 [9 x0 T; V7 J
}6 Z$ ]8 [; \: G/ T6 P% p* f
void MyClass::log(const NXString &msg)+ r. C7 u$ N& t) q0 h& t" u
{% |& A: O1 u& `' b+ Q/ b8 z
    logF->WriteLine(msg);; ^3 Q* Y9 K6 ~
}
& L4 ]! ^* S% }  |; u4 t  h
& Y7 R5 L6 [/ s, c// Callback triggered when opening resource bar tab1 G# V; V' C8 ^0 g. {8 Q( O" H& Y) T
int MyClass::ActivationHandler1(int tab_id)  v2 g- `% F/ k9 g' k# E
{" v, g5 ]# F5 A" x  S
    // Get the WindowHandle object# p( E# ~/ l8 ]# W+ Z
    WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);6 `$ q( ~4 z1 b8 R6 v% k/ ^
    // Get the real handle
5 [5 A' J6 z- Q, H' }8 W    HWND parent_handle = (HWND)window_handle->GetHandle();% v6 g; a  L' `  a! k# R$ z: R  k. V7 Y/ o
    // Get the CWnd object from HWND, FromHandlePermanent will return 0!0 G% H. x8 h4 L+ j
    CWnd *wParent1 = CWnd::FromHandle(parent_handle);
9 s8 `* E, A$ h- P1 z/ H7 g) h3 k    ASSERT(wParent1);
+ e; P* z% C9 m* o5 n* N0 y7 F+ M! I# L3 t2 y
    // Switch module state to avoid Assertion from afxCurrentInstanceHandle
  j. _' U+ @9 T9 t0 Z" y/ s" _    AFX_MANAGE_STATE(AfxGetStaticModuleState());
# ^6 r! H& P. C; @& N# K
/ G* I% L! J' ?7 y    BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT, # ]& ?  l" L9 k4 H+ C0 B
        CRect(10,50,510,1810), wParent1, IDC_TREE1);
, r' `! n- _6 n4 M; K    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
+ ?; H1 T9 Y$ A6 q% J
- L# j0 ?2 `2 t7 I3 D    Populate(displayPart);1 E& e( N8 y' S+ r# `3 {7 n& H, K: `

! w- u! [; J4 f" h9 e6 X    return 0;
$ c3 W- y( h0 |( x9 J, D}% h4 s. s% p  G7 v1 S
" i6 Y, R- ^+ X4 ^0 f
//------------------------------------------------------------------------------
/ W/ r! H! q  `5 \, q// getAttributes
8 v! L$ O" Y) e' N4 C//------------------------------------------------------------------------------
# r5 T. Z; s; v& ~% {
游客,如果您要查看本帖隐藏内容请回复

. Y9 D6 a4 F% W8 d. {. J1 B6 G# G8 b& }" u7 B+ ?9 u; P
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复43

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二次开发专题模块培训报名开始啦

    我知道了