PLM之家 UG NX11.0二次开发(ufun和NXOpen C++)网络培训火热报名

PLM之家-上海点团信息科技有限公司工业4.0数字化软件官方知识管理平台

查看: 6653|回复: 31

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

  [复制链接]
  • TA的每日心情
    奋斗
    2018-2-16 10:48
  • 签到天数: 112 天

    连续签到: 1 天

    [LV.6]常住居民II

    1937

    主题

    3214

    帖子

    5万

    积分

    管理员

    PLM之家mildcat

    Rank: 9Rank: 9Rank: 9

    积分
    58573
    发表于 2015-3-27 11:17:17 | 显示全部楼层 |阅读模式

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

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

    x
    ; c; Z# O2 Z# w# d
    % S2 Z6 X' Q: F0 C4 Y

    . Q+ m4 d) s# h1 p
    * Y% B9 y) R! W1 h8 t# U$ n" l
    NX二次开发源码分享:NX10可以直接对资源条进行二次开发( ^+ x4 d$ a. `/ |
    这是官方的一个例子,新建了一个资源条,使用MFC的Tree创建了树列表,并加载了所有组件的属性到节点上。! D* K9 U8 \# t5 A: L" B) ?

      g  h" h- g2 J( l& G( a/ J+ P// Mandatory UF Includes
    , n( B* Q* e& Z. Y( x6 a#include <uf.h>
    + E1 v& L/ B; T1 S8 w; ~8 u
    - L* I2 s$ O$ X5 S9 y// NXOpen Includes
    / Q" T8 K2 s5 c. P; l* N#include <NXOpen/Assemblies_Component.hxx>
    9 W& {% v) e% V% f! c) ?( U/ h#include <NXOpen/Assemblies_ComponentAssembly.hxx>
    ! q; N2 D% M+ ^- A1 \( L#include <NXOpen/ListingWindow.hxx>  \  D) `+ O3 q+ T! D
    #include <NXOpen/LogFile.hxx>
    . f/ |4 E' L4 o* {/ ^& Z#include <NXOpen/NXMessageBox.hxx>: {0 r3 G- ]8 Q& \1 p9 Z
    #include <NXOpen/NXException.hxx>" |* ]! x% Z7 q; X3 ]! a' j+ @
    #include <NXOpen/NXObject.hxx>* @- S1 P9 B$ g+ ~" w
    #include <NXOpen/Part.hxx>
    + f% d; U7 G7 t#include <NXOpen/ParTCollection.hxx>
    9 r, x. {  Z2 j5 s6 D#include <NXOpen/ResourceBarManager.hxx>
    & [' L; Y( B) ~( k5 m" R#include <NXOpen/Session.hxx>$ n8 Y- g. B8 F4 ^: @1 y1 w! P
    #include <NXOpen/UI.hxx>3 \" {" Z! j3 p* c; b6 d( z
    using namespace NXOpen;
    / w9 Y) b8 U$ l& `* Iusing namespace NXOpen::Assemblies;
    & v. T8 l& x  k9 z, I1 t2 [' L; z+ k
    // Std C++ Includes
    + ?8 l6 s6 h; \#include <iostream>  h! @6 m9 ~9 ^  y' x" K1 U  {3 C! J
    #include <sstream>
    0 v. r& t! k1 n, T. H; u) v, ^& T' d) g" @#include <map>& _: ?7 z$ K' M( f+ }7 k
    using std::exception;
    % L' \* k! s9 I8 l" O+ ousing std::endl;
    , ?2 L+ V+ t# a* m4 y5 V1 G4 U4 ?using std::cout;7 n7 v2 j/ q& V' ?
    using std::cerr;
    ( V% w5 S% _0 U! t# g' D1 u
    9 [' h& m$ a9 k! v// MFC Includes$ H- q7 h) ?! h" |# Q/ K
    #define _WIN32_WINNT 0x06010000
    / X8 y% o4 x" J#include <afxwin.h>9 M8 d! ^1 J( s$ ]" f: Y; h
    #include <afxcmn.h>* u! |& g' _$ d
    & T7 z7 u" P3 M9 E, q
    #define IDC_TREE1   1002  z( {; j9 p9 n6 Z4 m
    - Q5 }3 R. d3 v/ Z( y
    //------------------------------------------------------------------------------
    1 B% i5 M, A# W/ I! Q5 g1 K$ s/ e// NXOpen C++ class : w  k9 ~( u$ j8 J1 W
    //------------------------------------------------------------------------------
    & `  _3 k2 |2 D2 f8 B3 q- n+ O, Qclass MyClass
    % u" a( j8 Q: z{* v, J1 c3 }* X8 _
    // class members- A; R  w( j# {7 Y* R
    public:+ E0 o5 J  r5 _' k+ r
        static Session *theSession;# i8 z9 c" R' Y; c/ R& v  R# ?
        static UI *theUI;7 @6 |' t; I+ q: H( j8 e7 y: ]
        static int m_tab;' [; F3 |1 ^% ?
        static int m_cbID[2];
    ( b+ g- D& G. I8 m: j8 u& ]0 M
    ! Q+ q: l1 D: a  _/ @, o, v0 J9 p    MyClass();* W/ S- c8 y: m' T
        ~MyClass();
    # v! r3 f9 e- m
    " C- p$ W% i2 R: [5 T% @! d    void print(const NXString &);
    6 Y" r4 H- U1 g2 J1 e& Q2 b0 Y( _    void log(const NXString &);) r) K9 y6 \# A  R& f
        void getAttributes(Component *, HTREEITEM);
    ! q2 T  b" }4 i& l. {- m    void getComponents(Component *, HTREEITEM);% n# b4 F! m' E' S" c
        int ActivationHandler1(int tab_id);0 n; e! F( n2 \! i
        void Clear();, I8 _* o' B  N% B( c
        void Populate(BasePart*);& ^: z0 B% S1 e3 Q8 B
        void cbPartOpened(BasePart*);: A2 a* ?$ Z. b; V- E
        void cbPartClosed(BasePart*);( Z9 U) B* n( E7 Y

    : c) W+ N6 J5 X# B. nprivate:( `5 E1 r% O; {2 {  h7 k
        Part *workPart, *displayPart;
    1 X$ u2 _/ H0 r3 ~5 X/ g- k    NXMessageBox *mb;
    2 w9 j1 h6 d5 I: t9 P) |% r+ \! ?) Z    ListingWindow *listW;' j+ P* P! `$ r4 t
        LogFile *logF;: A' m0 X( H' h# c0 s( y& r* X
        CTreeCtrl *m_tree; - u+ i: r' q1 B. d
        CImageList m_Images;
    8 F! w( Q! l7 p$ I, K" s};3 ]4 N. z' j: w" `

    7 U/ P  [& @" d7 E. S//------------------------------------------------------------------------------
    - E0 E# u4 T- }6 X// Initialize static variables. i9 g& y  I* l& a* x* |/ A, n1 U
    //------------------------------------------------------------------------------. k$ D0 s7 Q% y. N
    Session *(MyClass::theSession) = nullptr;; t  C  E) O+ u  k
    UI *(MyClass::theUI) = nullptr;
    " M$ e2 r+ J# D# Pint MyClass::m_tab = 0;& M5 l; Z, x& Z* T; q9 Q5 p* ^
    int MyClass::m_cbID[2] = {0,0};
    ' `& _# f7 k! r8 y, r5 R; {' l7 ~- o0 ^' l( C$ W# V
    MyClass *theApp = nullptr;
    ; v6 M* T. D. }3 o; x, {5 C- `$ }" Z3 ^( A" a5 A
    //------------------------------------------------------------------------------: B. Z; r; X0 j2 Y9 Y
    // Constructor
    8 L/ A0 B4 C0 S6 b9 J//------------------------------------------------------------------------------
    $ s) C2 z8 @. SMyClass::MyClass()
    6 r, F, y, Y( Y; E{
    + T6 ~) a8 x% [( N: [    logF->WriteLine("GTAC: MyClass Constructor");
    , n# c1 P$ k# U7 E% m1 P) e" p    theSession = NXOpen::Session::GetSession();
    + J7 S' H' D0 H$ c$ l* q    theUI = UI::GetUI();. V9 M: K% n" Z" ]* K( d8 U1 a+ V
        mb = theUI->NXMessageBox();
    , i" J% J. Y5 E7 d! F, K2 J7 K    listW = theSession->ListingWindow();
    ; X- `* v2 O: A9 N$ m+ H( R; _    logF = theSession->LogFile();
    ) d2 i7 j# J' b. O* @1 r$ i1 N& O, v+ m( G/ v
        workPart = theSession->;Parts()->Work();+ ~+ Z9 y6 I- X' E
        displayPart = theSession->;Parts()->Display();- Z$ X: g7 a9 ]& A+ i  {9 u
    4 u3 K+ R2 C/ q  J& S/ l
        m_tree = new CTreeCtrl();- z) @# ]( t4 b1 ~
    6 p. F8 y% f9 w% a0 N
        BOOL bSuccess = m_Images.Create(16, 16, ILC_COLOR32, 0, 2);
    ; I- L7 V, E! o4 `    int index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );
    7 }$ f( P+ J2 `# t$ H  ~    index = m_Images.Add( AfxGetApp()->LoadStandardIcon(IDI_INFORMATION) );
    0 r5 O$ p0 t( w5 ~0 m" c) ]! a7 z6 Y5 e- `+ j
        m_tab = theUI->ResourceBarManager()->ResourceBarManager::Create("Assembly Attributes", "ant_component_mode");9 k1 _& D* _; _/ |3 U
        theUI->ResourceBarManager()->ResourceBarManager::RegisterActivationCallback(m_tab, $ E5 W* [" Y( J$ F1 \
            make_callback(this, &MyClass::ActivationHandler1));+ U$ W2 I) L+ T/ `: h- i, M
        theUI->ResourceBarManager()->ResourceBarManager::ActivateTab(m_tab);
    2 C# S7 _" g; n4 ^! S
    2 D; y  d  ]& H) T    m_cbID[0] = theSession->;Parts()->AddPartOpenedHandler(make_callback(this, &MyClass::cbPartOpened));; o* A, r2 s4 l
        m_cbID[1] = theSession->;Parts()->AddPartClosedHandler(make_callback(this, &MyClass::cbPartClosed));. U) G5 V9 p* q) V+ d! b* }# L
    }
    0 _) M1 g/ Z# ]3 B( A0 u$ l- m: P
    7 H4 Q6 n$ i' f5 E. W( _$ X9 C$ x6 B//------------------------------------------------------------------------------
    9 |6 h7 J7 B2 a+ H& p9 X6 P// Destructor
    . s2 V5 N6 _# ^# }& z3 m5 ]* G//------------------------------------------------------------------------------1 Z/ i1 d/ u! p1 r8 \7 F8 s
    MyClass::~MyClass()
    : [0 \* e! L: c8 K2 ]{' T9 Y/ v5 L; z# i+ o" {
        logF->WriteLine("GTAC: MyClass Destructor");
    . U) h  T* ~7 h; |5 ]- u    if( m_tree->GetSafeHwnd() )6 T* ~' C& S, ?! s9 `
        {0 d/ I4 F2 y6 x# x' ?8 c& Z
            BOOL bSuccess = m_tree->DestroyWindow();
    0 U* P0 g% v2 v! x7 ~    }- y( c/ e; h5 h4 C
    , q# I3 b3 ]0 `. |/ [
        theUI->ResourceBarManager()->Destroy(theApp->m_tab);/ l' A* D9 b4 ^
        theSession->;Parts()->RemovePartOpenedHandler(m_cbID[0]);( B7 b$ z8 F7 t  I: x# i6 e$ s8 I
        theSession->;Parts()->RemovePartClosedHandler(m_cbID[1]);
    % @3 j' ]1 [2 F  t2 |9 q
    8 X4 r) h) r4 C& u$ r3 `/ D' W}8 x1 @6 h: q9 S! m' G% D$ L: }0 w" K
    / Q1 e, ^* m0 _& j9 B
    //------------------------------------------------------------------------------
    5 O% g5 g- F- B8 o: B, D// Print string to listing window and/or syslog
    + E7 p# v( r7 U0 K+ z8 k: x//------------------------------------------------------------------------------
    2 C1 L; V, S1 ^3 i% ]5 F# |void MyClass::print(const NXString &msg)( b, q9 S0 N$ f; \' J: @
    {% v! A& j6 }6 ^. ]
        if(! listW->IsOpen() ) listW->Open();3 P) m% p- }4 z* h
        listW->WriteLine(msg);
    2 H7 X$ k3 `" F6 a}+ _' Y* K4 C+ b" S7 {
    void MyClass::log(const NXString &msg)0 ]% k  }" M$ `
    {5 ?4 |- j! q' ?2 u
        logF->WriteLine(msg);
    : d& `4 v4 ?! s$ y2 o}
    * ?# x, g0 H! ~! R& P+ G0 D! O5 y& H8 R% y$ P" n: ?+ {
    // Callback triggered when opening resource bar tab- F& T0 k8 R/ i6 C0 }  k6 _
    int MyClass::ActivationHandler1(int tab_id)
    & f" z; x' v3 s2 Z( t- u9 x{
    : p* {; U4 @8 t. E1 m( K    // Get the WindowHandle object3 ]. c8 ]+ o( p: b3 G9 H! h0 e0 p
        WindowHandle *window_handle = MyClass::theUI->ResourceBarManager()->GetWindowHandle(tab_id);
    . j, o/ |7 N+ W3 l& A7 v3 h5 r+ w    // Get the real handle% ^% `* c2 ~. R- k. k7 m0 t
        HWND parent_handle = (HWND)window_handle->GetHandle();
    # l1 l$ F$ `8 `# E( ]3 S    // Get the CWnd object from HWND, FromHandlePermanent will return 0!6 K  e: _5 c9 k3 Y1 g
        CWnd *wParent1 = CWnd::FromHandle(parent_handle);
    7 g8 M& W/ i* ?  k$ y. K2 y. g3 o    ASSERT(wParent1);
    : C" x: G$ M- T) ~' x7 v% p  N
    7 h1 `3 p1 H. u% r    // Switch module state to avoid Assertion from afxCurrentInstanceHandle5 D6 v. `2 Y0 I0 n) S3 I. \4 K* @
        AFX_MANAGE_STATE(AfxGetStaticModuleState());
    ! c+ e8 f' N- M, o8 C1 `& w1 F/ H7 \' V. O' v; a- m6 [4 o
        BOOL bSuccess = m_tree->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_TRACKSELECT,
    & w# h/ Z- C. @. o        CRect(10,50,510,1810), wParent1, IDC_TREE1);
    * L8 {& e$ y# n    m_tree->SetImageList(&m_Images, TVSIL_NORMAL);
    $ _& \( i1 S: Q) q/ z3 n4 {
    % A' \4 q. D3 ]' {0 e5 m1 l    Populate(displayPart);
    ; ^0 n1 r9 _8 E0 D) y# M- D8 w8 G3 C. O% h
        return 0;
    , t; y. u# G' r/ a( f9 {# U}
    / F6 `- X2 p& z. l% s6 M5 z$ @3 n, H& T/ m( W; F% H
    //------------------------------------------------------------------------------
    7 w7 W& {5 S) ?- E) F& n) C9 W/ N$ `6 _// getAttributes
    - _5 D1 f4 o, r* u//------------------------------------------------------------------------------# K; r% [" w/ i8 W2 o# a  W: ^
    游客,如果您要查看本帖隐藏内容请回复
    & |% O5 M* x( W% H
    # T* Y# d9 C& B
    上海点团信息科技有限公司,承接NX,CATIA,CREO等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施开发培训,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    4

    帖子

    23

    积分

    新手上路

    Rank: 1

    积分
    23
    发表于 2015-3-28 08:52:40 | 显示全部楼层
    二次开发完全不会啊
    上海点团信息科技有限公司,承接NX,CATIA,CREO等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施开发培训,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    28

    主题

    88

    帖子

    530

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    530
    发表于 2015-3-30 11:24:29 | 显示全部楼层
    我想看看,进来
    上海点团信息科技有限公司,承接NX,CATIA,CREO等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施开发培训,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-7-19 16:11
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    4

    主题

    43

    帖子

    391

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    391
    发表于 2015-5-24 12:02:04 | 显示全部楼层
    看看,这个好像很牛的样子!
    上海点团信息科技有限公司,承接NX,CATIA,CREO等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施开发培训,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    56

    帖子

    606

    积分

    高级会员

    Rank: 4

    积分
    606
    发表于 2015-7-26 01:33:35 | 显示全部楼层
    谢谢高手的分享哈
    上海点团信息科技有限公司,承接NX,CATIA,CREO等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施开发培训,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    37

    帖子

    231

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    231
    发表于 2015-8-12 14:24:53 | 显示全部楼层
    学习学习学习
    上海点团信息科技有限公司,承接NX,CATIA,CREO等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施开发培训,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    29

    帖子

    371

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    371
    发表于 2015-9-15 21:49:29 | 显示全部楼层
    ddddddddddddddddddd
    上海点团信息科技有限公司,承接NX,CATIA,CREO等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施开发培训,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | QQ关联注册

    本版积分规则

    <

    QQ|小黑屋|手机版|Archiver|PLM之家-工业4.0数字化驱动之家 ( 沪ICP备13003373-3

    GMT+8, 2018-2-24 00:27 , Processed in 0.149014 second(s), 32 queries .

    快速回复 返回顶部 返回列表