PLM之家PLMHome-工业软件践行者

Teamcenter SOA开发中关于变量声明,转换等代码的新处理方式

[复制链接]

2015-2-3 09:18:14 3787 0

admin 发表于 2015-2-3 09:18:14 |阅读模式

admin 楼主

2015-2-3 09:18:14

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

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

x
Teamcenter SOA开发中关于变量声明,转换等代码的新处理方式
  e5 O4 i$ ]' T# V# E: B, C. M6 m3 Y* A" D3 v
5 ?- g4 o! ^8 V& R
1 变量声明. h  G+ c) V: B# ^' Y" O% H9 ]% n

0 f; j& c  o: j5 `& z4 u+ f4 M0 ^

$ E$ X. C* P0 w9 G9 D5 ^: Io Old way
5 a5 C" L0 D$ l& ?, ^$ C+ n: m// Declare pointers for an Item, Form and vector of ModelObjects8 m* i+ u7 w% ?0 R
// initialize to NULL1 u3 U0 z! t; q+ t6 }
Item *theItem = NULL;
1 a9 X4 U& ]  g+ O6 w# ?% c0 QForm *theForm = NULL;$ S' c: r3 P2 l4 n
vector< ModelObject *> objects;' \7 C  m/ ^/ E$ W+ ~
...
# b% {0 R1 M$ B, E// Use the Item# Y' w2 j: L# P3 j
theForm = theItem->get_item_master_tag();# @2 T- U" M$ P9 U& m
objects = theItem->get_revision_list();% D; p6 V/ ^2 E  w1 b: Z, K0 f2 z
o New way
) Q4 J* l( ^2 J! F' t// Declare AutoPtr for an Item, Form and vector of ModelObjects, |7 m6 }- U: B3 ?, i
// all AutoPtrs are instantiated as NULL
0 L6 }* I. M% D4 {* p% J, v7 KTeamcenter::Soa::Common::AutoPtr<Item> theItem;' }% c2 h) I: A2 K1 e, Y
Teamcenter::Soa::Common::AutoPtr<Form> theForm;# x# P. H! D- I9 d5 R- X
vector< Teamcenter::Soa::Common::AutoPtr <ModelObject> > objects;  S2 Q' u+ {& d1 P. F8 g
// Use of the ModelObject variables remains unchanged- g$ n: c5 R2 K' i( }
theForm = theItem->get_item_master_tag();
6 Y' v8 A2 `6 ~0 \objects = theItem->get_revision_list();0 F# @5 N9 P6 `7 {  n1 m* ^

3 _4 B% p4 e- _" {6 o) p% ?: i0 I1 e  x
2 类型转换
; w3 r: A( p8 `9 A0 J) N. c& a8 A5 ?. x3 U4 u% ^3 d
o Old way
: O3 f$ n7 {3 H+ e: x// Declare the variables
! V. k* i: |' a; w3 J; SUser *user;
1 L' e5 q1 N, l1 H; sModelObject *anObj;  e# C  {. V  V* N8 |. {" G6 U
Folder *folder;
4 C/ P/ N; f" F% N* I+ x8 ]# ~: c# }5 D2 huser = sessionService->login(name,pass, “”,””, descrim ).user;
) ~; ]; i2 S0 s// Cast to the base ModelObject class
+ x3 W3 T1 u4 A  [* E5 i# sanObj = (ModelObject*)user;* ]9 [* `9 H) L7 x& `$ o
// Cast to a speicfic sub-type, if not NULL
9 C0 H7 x% ?( q& w: h// do something with the new pointer; i# Y, A- F. N: k: S4 }3 B
user = dynamic_cast<User*>(anObj);
* N  K+ g3 V4 n/ h0 gif(user != NULL)
9 R7 [! Z: K  r4 V! R' h7 z{
7 ?6 Q& k- q2 ]9 T8 X, @/ O$ H7 S" `folder = user->get_home_folder();9 x. X% |* Z% v( C- V
}
" L7 ?2 t, k0 }+ z& X9 K# L- F2 so New way2 J/ D/ t3 n% }. ?( }& ~
// Declare the variables; P# k' u: x( {( A
Teamcenter::Soa::Common::AutoPtr<User> user;; ?  U& B8 t: y: ^% Y  a0 ^1 T8 V
Teamcenter::Soa::Common::AutoPtr<ModelObject> anObj;' a- M' I  c0 u) ?# h
Teamcenter::Soa::Common::AutoPtr<Folder> folder;
2 g( i  t6 ?, |user = sessionService->login(name,pass, “”,””, descrim ).user;8 j  c' C" J- Z+ {  t
// Cast to the base ModelObject class- V! M4 E% a. h2 J$ R
anObj = user.cast<ModelObject>();$ f, B, t9 @9 |% ], L" F
// Put the cast to a speicfic sub-type, in a try/caTCh block
  _" ^4 L8 t  _& v+ ^7 m// if std::bad_cast not thrown, then cast was successful
/ U4 p3 F# W! u7 l5 z6 Otry
$ Z: R& O0 s: e& t4 p{
% D. D4 S  D5 h* G- L- V) k1 Buser = anObj.dyn_cast< User >();( n+ [2 I- z; N1 x+ L  B0 g& L
folder = user->get_home_folder();! o2 M5 W9 B* B9 e0 h; Y
}
+ J& ?, G" I4 t" O2 l+ \catch(std::bad_cast&){}
: b+ A* Y; i8 j# @5 X' g) d# }! B0 C

+ I1 W; s; n% x8 k3 关于NULL 赋值' y1 V  V- [3 N
1 x5 p6 K$ z. J
o Old way2 O5 Q2 B* U  W' N3 h6 H% B
// Declare the variables
8 r! ^" @1 M" Z) R" wLoginResponse response;  E1 i: W1 ]  L- x6 Z
User * user;8 x  S3 M  u( y/ ]: h
// Call a service that returns a ModelObject (User)
% N( O+ H- `' [- T1-28 Services Guide PLM00076 Jresponse = sessionService->login(name,pass, “”,””, descrim );
) {& ~& W# e( ]. O' Z0 @user = response.user;4 l6 a9 o  S% I; n
// Test that instnace against NULL/ z1 v0 u1 M, D. S! [- @- \
if( user == NULL)7 E4 i# {: e  M- |9 z' b+ B+ z0 y
{3 e/ n4 \1 i! d- Q1 N* M
...9 q! k! ]: F  G/ B1 n8 a) o) m+ s
}
' |( d4 _+ i0 N. o6 t/ welse
) e, O2 |; ^  q: B{
+ O& S' Z5 h% n// Assign NULL to the pointer
" Q% V8 y4 u! ~7 [6 [1 Iuser = NULL;9 I5 A5 b' `. G
}5 W$ ]- [' p! t, a8 g
o New way& L/ A( J5 g) z7 O
// Declare the variables+ Y, O! X: J) |3 J" D8 d7 Z
// The service data structures do not change, only, K3 @" O! m# m6 }/ D
// references to ModelObjects! l* x9 f& f9 D! g2 v# o
LoginResponse response;" }/ p; x. h" P2 R; w9 h% N
Teamcenter::Soa::Common::AutoPtr<User> user;, G/ V$ J1 a- q( ?4 n7 f
// Call a service that returns a ModelObject (User)
3 o& v3 H3 R! A  x5 xresponse = sessionService->login(name,pass, “”,””, descrim );
* M% W+ g# [& `3 X& {user = response.user;
8 K2 @& F) t3 h9 d// Since we are not dealing directly with pointers,' @4 ?# _0 g* c& I1 P
// NULL does not make sense here, use the isNull method from the
" x) T5 r: r0 B// AutoPtr template class.
/ H/ v# |* G$ U9 W+ v& V5 Bif( user.isNull())
+ c5 `9 b( m/ R{( Q# e; t) h% G: t. ]8 n9 b
...
6 N1 `1 b0 E7 w+ H$ q! [' p}
( s$ ]' Z3 m2 ^else: k3 O* @* q0 ]; @
{; G3 F5 Y$ H( j. p
// Release the instance and% D8 W5 s- u( V3 L4 h, ]% K
user.release();
* W( |" Q# e2 g; M2 Q}9 h5 W9 E3 w1 @( b

  o! L9 m! e1 V+ H& N: u: Q( J
* ~- J0 J$ J) x
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了