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-国产软件践行者

[二次开发源码] UG NX二次开发源码分享:创建自定义引用集

[复制链接]

2014-9-27 21:06:44 3901 0

mildcat 发表于 2014-9-27 21:06:44 |阅读模式

mildcat 楼主

2014-9-27 21:06:44

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

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

x
UG NX二次开发源码分享:创建自定义引用集- o. h" r- _1 k9 C  ~
; y5 ^# F- q0 ^/ S: J% V
  D/ b+ |) N# _  c6 M, R7 y, x% @

1 x- }' L/ v2 ~5 d7 u; E% y$ p//create_specified_reference_set
" t. F- m4 j( S- e' Z4 h
+ A' G7 r7 J# g  A// Mandatory UF Includes, P7 ~+ Z) Z9 O- ]1 @
// UF_initialize, UF_terminate, uc1600
) l, m2 o7 |: k1 A5 [#include <uf.h>% g) c, M  ]/ l: z) Z1 L
#include <uf_object_types.h>
' F: [: ^; ~. ]- L* a# }" `  M#include <uf_ui.h>3 \0 w( w% U" ^& q8 c# n- ]9 |

. c2 N+ M! H1 O, H+ H// Internal Includes
. I1 ]* l/ \; G1 s$ Q9 C% Y#include <NXOpen/ListingWindow.hxx>
4 m! L0 q# e& R. R) y, V5 [#include <NXOpen/NXMessageBox.hxx>* q( \3 y8 r* b8 P& a
#include <NXOpen/UI.hxx>- w& a$ Z% a5 i# X' i6 q. L

; U" J5 T0 a3 _- S& G7 a9 ~// Internal+External Includes
- C7 i  K6 D- r. L- W# B" F# a#include <uf_defs.h>
: B1 O; G2 e* C- J2 _3 S#include <NXOpen/NXException.hxx>4 T( F3 [, w, k. K8 W
#include <NXOpen/Session.hxx>% k6 Q9 Y- E9 q/ n" q: D+ ]) V
#include <NXOpen/BasePart.hxx>1 u) \5 `4 P+ s# @1 k6 j1 Z
#include <NXOpen/Part.hxx>
+ a$ m: }. s5 G4 t" \' \#include <NXOpen/ParTCollection.hxx>
5 Q) d7 A: t- j( |7 v% q#include <NXOpen/ReferenceSet.hxx>
( V4 `  X* Y, D1 |8 }#include <NXOpen/Session.hxx>6 }- r  S5 I! l5 w) F
#include <NXOpen/Update.hxx>
4 V, r( d7 X/ \6 y- k$ N
8 \. I$ z+ a9 z+ r. c/ J/ A
; p, M; G1 x4 l; k5 z8 Y1 ?// Std C++ Includes3 U7 _% D/ m7 d  Y+ R* q5 F. q
#include <iostream>
; P% R3 |: n/ Q1 D" v3 j: Q% A#include <sstream>
2 i- B$ \! P1 j2 Y) u
" p9 [5 [) Z' n! Ousing namespace NXOpen;) J5 Q6 a- U$ f7 S2 ~: `& n3 g
using namespace std;" r; u3 y& e4 y0 E

. v& ]% q- ~( i4 g+ Z//------------------------------------------------------------------------------$ G' b  I" B" O$ Z
// Open C error handling
5 {- w. v7 V% d1 q' M2 I//------------------------------------------------------------------------------
1 j# r% @; X- C#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))6 [' o+ V0 R% c8 `5 r! p
int report_error( char *file, int line, char *call, int code), U1 j" M3 o* v
{; W! I3 u! g6 K) k
    if (code)
9 _6 U- H( {) m    {
( u) f! J5 H' f  V5 U  E/ [% _# R
        stringstream errmsg;$ S7 a4 e* N2 Y
        errmsg << "Error " << code << " in " << file << " at line " << line << endl;
6 _+ c1 l9 G% C  B  q* m6 ~, O        errmsg << call << endl;
  O, K( S2 c) P        UI::GetUI()->NXMessageBox()->Show("Open C Error", NXOpen::NXMessageBox::DialogTypeError, errmsg.str().c_str());
. ]2 U, e- _6 {9 ?        throw NXOpen::NXException::Create(code);
& b. ~% D, o, z* s    }
' w/ {- h1 f3 [  z    return(code);
9 ?% M" t! O9 q}. C8 j0 q: K5 c2 R% V
- [& B& @% F* Q+ y' u" ^$ D
//------------------------------------------------------------------------------& C, ^4 H! s; x. C. G5 s4 C
// NXOpen c++ test class
& c, e4 c# T2 z3 L" N1 c) U3 w9 N//------------------------------------------------------------------------------
5 f4 c  h" b; j( P$ @class MyClass
6 Q% S+ h$ \! e1 S$ o{
) c8 H" L- }' U) R5 M9 S    // class members
9 [4 z8 \5 t* ]% ?/ I/ Vpublic:  ~$ Z0 n3 A7 O# G
    static Session *theSession;
( p0 G& n6 k2 U/ \5 x" H' i$ e    static UI *theUI;! Z+ d: p& c, z1 C1 }

) n1 `& p2 X% y" K    MyClass();
4 }  s. s' l9 x$ C; a* A7 I0 U& r    ~MyClass();
7 F# v. W( P: V  x& B- k
7 G6 i+ L7 |: n  u- z: v6 M( V    void do_it();+ Z2 ^& _. Y' O& p# Y
    void print(const NXString &);0 }$ m* t7 B+ C' x

0 o5 Y' I! d5 [" ^: J0 z1 a1 l& qprivate:: O  b# M: x0 |! T
    Part *workPart, *displayPart;8 i) h. N/ \1 J9 r  n3 P( Z- B
    NXMessageBox *mb;" P4 p& t( b1 v) h1 A7 R
    ListingWindow *lw;
, T0 Y7 q- w- p- R};% J! o' F8 I/ `+ h0 b

4 D- P* \7 U# B! E2 k1 i1 k$ j- p8 c//------------------------------------------------------------------------------
9 u0 }5 O9 W( `5 s& |0 V$ S3 l// Initialize static variables" v- d5 ]; u% X
//------------------------------------------------------------------------------, f- g( }- D! i* n& K; N& m
Session *(MyClass::theSession) = NULL;/ K3 j9 \* ^8 H1 B0 Y3 e
UI *(MyClass::theUI) = NULL;
$ j! v3 z' z7 |7 `1 e0 T$ M, z( L' U% u
//------------------------------------------------------------------------------3 g: q$ c( m6 m6 T
// Constructor * J9 q0 Z& b- n/ X. J
//------------------------------------------------------------------------------9 ~+ A! T2 S8 L# n# M# @1 J% v5 p
MyClass::MyClass()# S3 Z6 W1 t7 r# a8 A
{
( @# J& H3 l) h* \    // Initialize the Open C API environment *// h2 `1 Y& s; I* o& z* f
    UF_CALL( UF_initialize() );" v* [! t3 `$ X, j6 p1 }
% j- r. V; [" ?
    // Initialize the NX Open C++ API environment
' F. i! p7 t" Q' w4 ]3 o    MyClass::theSession = NXOpen::Session::GetSession();
5 F( @* E5 g6 N+ g, ~: e! J    MyClass::theUI = UI::GetUI();
2 M2 ~) V8 t8 `    mb = theUI->NXMessageBox();
; V* P# N: S2 a! Q$ T    lw = theSession->ListingWindow();0 ~8 d. e0 H5 E! W; n

3 K' E1 k5 h9 ^8 t$ ]    workPart = theSession->Parts()->Work();# U( F8 W! e; T3 D, g
    displayPart = theSession->Parts()->Display();
; c" I2 A& {' y; @9 Z( P    3 x( A" z9 H2 _) L9 V, X3 ?4 _
}
; z" S) O# P. K: C% u5 T& Z. h0 S( i( z% }
//------------------------------------------------------------------------------& e& m/ x1 h  r9 g* x. V) Q6 b
// Destructor
' _& Y+ B; o( [  Y/ m% z//------------------------------------------------------------------------------  D1 r) M9 O' L; ], V
MyClass::~MyClass()
) h+ a$ m) K0 D( y+ J/ F3 {0 a+ [{2 l) l8 q3 I/ ]$ I9 J
    UF_CALL( UF_terminate() );
+ F# {& Z' Q) y- x}
; e; r" k6 V' T  y8 @
8 `/ F) Y5 y% E2 k//------------------------------------------------------------------------------! S; P9 @4 S+ _+ O
// Print string to listing window or stdout
" _9 W" {7 \0 d0 n//------------------------------------------------------------------------------
1 N0 F- C4 _8 D, n! G6 C) Mvoid MyClass::print(const NXString &msg)
+ f0 D- I2 M  Q  W6 Z) }" D7 g% E{
9 ~/ N  O# D! b9 x    if(! lw->IsOpen() ) lw->Open();
7 _$ N: ?7 b6 e3 a; h- ^% D    lw->WriteLine(msg);4 G9 P9 w/ T; L0 z4 v$ O
}
6 n1 j1 B5 v. R' b! _  p
3 x* m) N; K5 H- G  x: W  A6 R* t% [3 Z3 r
# S2 \) F/ i+ v
: g3 L8 W6 p$ @0 o3 a- e
//------------------------------------------------------------------------------' i9 \" I2 k4 \: w
// Do something; T* g$ ~/ v( \" l# c8 I
//------------------------------------------------------------------------------9 h& |1 i2 @% u5 u: m( d
void MyClass::do_it()
7 l1 F; p9 l6 R{
$ z5 D) i, E' G    // Prompt for Reference Set name
1 U# ]: f) }1 {; H$ Q% X    char refsetName[133] = "My Bodies";/ C) k) ], T- p: ]  e( M# x
    int length = 0, resp = 0;
* a9 t& w# I" Z5 x    resp = uc1600("Reference Set Name", refsetName, &length);: w7 c0 _# o, O8 ~* V, x: h# E" m* W+ P

, N8 G3 f2 R' \    if( resp == 5 || resp == 3)/ t" V& L0 ~& q' o0 _  N( O. Y
    {% x4 U) d0 l& }% L' k3 W! k% r
        // Create Reference Set
' {* z6 ^4 T. p9 H        UI::GetUI()->NXMessageBox()->Show("Reference Set Name", NXOpen::NXMessageBox::DialogTypeInformation, refsetName);
4 I4 H% `% A2 u0 r7 \2 f" w3 G$ {8 q8 f1 w
        Session::UndoMarkId markId1;9 P3 U3 O5 T. c. m4 V
        markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start");5 P9 B% o0 f* H. {

/ C+ o: n3 P2 M% g( E! g* w* W% [' U        ReferenceSet *referenceSet1;
3 y8 Z" T: V5 w  G6 C8 G        referenceSet1 = workPart->CreateReferenceSet();) ]0 m% u, c  B1 x6 I9 I
        referenceSet1->SetName(refsetName);2 m3 A3 G/ B1 q# s4 ]7 D
   
+ H! _3 W+ c* S" t/ C        int nErrs2;
! G8 m) R* @3 t8 i! T+ k( _3 l( l        nErrs2 = theSession->UpdateManager()->DoUpdate(markId1);
9 r+ F9 f% ?4 D" r) ]3 D( P    }
; S5 [: C2 Y6 K, v% B" n+ p}# {7 O1 k6 V) \' ]5 a

! A! E( X1 b! I" v. _+ r8 J) B+ x//------------------------------------------------------------------------------
& L- _/ [/ S' f' e4 ?* m9 D// Entry point(s) for unmanaged internal NXOpen C/C++ programs
5 U/ R6 C* ?! ^, N8 t( o//------------------------------------------------------------------------------
" ]# ^7 p" a4 v& }" B//  Explicit Execution
4 q. @7 r1 e  I2 @& |. C: jextern "C" DllExport void ufusr( char *parm, int *returnCode, int rlen )2 ]  Z7 }! l- G: ^1 Z
{& g* M: G+ r* U, H# G9 Y
    try& |* q# {' T( @- W( z3 y" v
    {
0 {. X( }$ q6 z9 M9 Y        // Create NXOpen C++ class instance! h; ~9 J  m4 x" B+ _
        MyClass *theMyClass;
( F9 T8 F( m4 i6 {  I$ g; E6 [) T        theMyClass = new MyClass();
. K" r5 o! Y5 }, s1 H/ U  e        theMyClass->do_it();
/ `( M& x) i0 X# K9 b& w7 [        delete theMyClass;/ y# I7 ~+ |% |. S1 Y$ S
    }
; }# J9 {. o3 @8 A    catch (const NXException& e1); V7 Z5 @  ~( s& ?
    {
6 u8 Z% l% @! D: v9 F        UI::GetUI()->NXMessageBox()->Show("NXException", NXOpen::NXMessageBox::DialogTypeError, e1.Message());
/ p; \; a* |/ Z    }
! l7 `& V; [( Q4 [9 A/ z    catch (const exception& e2)
* X! B% O( g2 r2 T    {( D  {: P. K" d8 I) D0 r
        UI::GetUI()->NXMessageBox()->Show("Exception", NXOpen::NXMessageBox::DialogTypeError, e2.what());7 _6 x  F/ g2 C& {0 C5 L- \9 \, i
    }0 k; V2 N0 {9 w: X" s) l0 V
    catch (...)
/ {% d! H% _# ]5 y! x+ L    {
$ J3 F$ M) x% ~! B4 \; V        UI::GetUI()->NXMessageBox()->Show("Exception", NXOpen::NXMessageBox::DialogTypeError, "Unknown Exception.");. H% a3 j% f4 r4 Y* [8 e* Y! u; i
    }7 S8 d) X: V% a* E# \
}4 _, k1 Z* M! q
8 ~( M' |" f2 M' ~: m

" P3 P$ m& O0 E& G3 A7 U) L, L//------------------------------------------------------------------------------
* b9 t# ?5 p6 e8 i' U// Unload Handler
& q7 h. y- R% e" F$ a$ C+ W//------------------------------------------------------------------------------
% y/ `: a+ c6 E( m2 s8 wextern "C" DllExport int ufusr_ask_unload()
( u7 P2 z" X, {9 E0 D+ J7 L{
; U; ]  y# C" w) S5 g    return (int)NXOpen::Session::LibraryUnloadOptionImmediately;
; ]6 [3 Z' H; G- R" ^) Z}( S$ g% f8 g) D7 i

$ d1 J5 {+ w' j) A' s
% ?% b: H4 Z, H
该会员没有填写今日想说内容.
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了