PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2015-2-3 09:18:14

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

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

x
Teamcenter SOA开发中关于变量声明,转换等代码的新处理方式
- [+ v: E3 Y  ~7 s/ l3 M
( W- C# O" Q$ {
( t" D& [4 V3 _5 O- b$ s# E# X  h
1 变量声明1 n: I  o: S" [2 c- c
8 ?2 h3 L6 @! B( A  P
8 e  _  u& C" Z2 o0 x# j
o Old way0 V: o8 V: g/ |
// Declare pointers for an Item, Form and vector of ModelObjects. k" O9 \/ F2 m6 s. n
// initialize to NULL
8 `% z0 [, j; g8 EItem *theItem = NULL;
9 G2 o  y% |8 d+ o' ~8 DForm *theForm = NULL;
$ S: t# e9 S" C. H& i5 @# f! W8 ?vector< ModelObject *> objects;
* W" Y  M( g2 ?* w3 n1 u  ^...
  R! b- M! V$ Q+ c# q1 i// Use the Item. ]' H5 ~# B  |7 c. {0 i, g
theForm = theItem->get_item_master_tag();
% @/ [  O: Q5 l+ yobjects = theItem->get_revision_list();
- e% `! M4 F! _o New way
0 U5 q1 Q/ p+ y// Declare AutoPtr for an Item, Form and vector of ModelObjects
# v* B5 Y" y2 X8 F6 o8 r( D// all AutoPtrs are instantiated as NULL
) }* B2 b' i9 f+ e3 p- K# z$ ATeamcenter::Soa::Common::AutoPtr<Item> theItem;( K# s9 j" |, r3 A5 Y
Teamcenter::Soa::Common::AutoPtr<Form> theForm;
# ?& ?2 B) i, l* {0 x  jvector< Teamcenter::Soa::Common::AutoPtr <ModelObject> > objects;7 Y; Q7 @, b4 k0 ^+ G$ L) U
// Use of the ModelObject variables remains unchanged8 ?1 \" F4 e! {7 t
theForm = theItem->get_item_master_tag();; _8 f4 k0 I; q" ?
objects = theItem->get_revision_list();
6 O! [% B' ~- c! C5 Y/ i
8 w( b0 p7 \/ W1 U6 y, O( T1 i+ Y  @) L% d
2 类型转换 ! ?6 ]5 O+ r; ]1 b; \+ g
4 M  ^8 ~" X# t- ]9 k" M
o Old way
* c0 a+ x, B7 ~# n8 @// Declare the variables
, l3 i: u4 M1 g* o- wUser *user;7 L5 l6 S8 `! h$ U2 A
ModelObject *anObj;
+ l6 y% \. T) V1 c. R- C/ r6 [Folder *folder;
& C' \1 |) e( I* H* muser = sessionService->login(name,pass, “”,””, descrim ).user;# m# D1 [3 n& ~: L# Y
// Cast to the base ModelObject class- h) L6 \: R7 N6 |9 d' e. x
anObj = (ModelObject*)user;
/ b8 w# p. M4 Z/ v" ?- f// Cast to a speicfic sub-type, if not NULL
3 U0 G, ?6 m/ B: N$ R* p( N6 i// do something with the new pointer+ N9 U6 {8 u: N- s" ], ^
user = dynamic_cast<User*>(anObj);
. r" V7 ^& C$ k; Eif(user != NULL)
5 _/ L# F* p. U' t* N{  T/ _; e3 ^) U' _9 i
folder = user->get_home_folder();  ^0 X1 ^8 y. T5 V# ^
}" Y# y! X+ w' h; {" d
o New way
0 w4 I4 m3 H" p  w: m// Declare the variables1 F" q) h4 k) r
Teamcenter::Soa::Common::AutoPtr<User> user;* q; Q8 w- c$ S' n
Teamcenter::Soa::Common::AutoPtr<ModelObject> anObj;
: l4 v4 {& J/ v! d1 `' QTeamcenter::Soa::Common::AutoPtr<Folder> folder;/ ^# a5 \6 N! [" y! U, `& c9 K
user = sessionService->login(name,pass, “”,””, descrim ).user;. N# n. |5 N7 g$ R. J
// Cast to the base ModelObject class
' D+ D  u7 X/ |4 vanObj = user.cast<ModelObject>();
' T4 m! I& O+ I1 ?* U) X/ i// Put the cast to a speicfic sub-type, in a try/caTCh block: |9 G4 M! r$ D' G, }
// if std::bad_cast not thrown, then cast was successful
4 O2 z. z5 y+ p6 E' J: Y" ^try
2 r, l% p) `! w. A3 Q: m{
0 m' ], F0 ~( D( R: u9 R. p! juser = anObj.dyn_cast< User >();
6 O, ~$ {$ g. L5 U; {/ [folder = user->get_home_folder();( g5 }+ _7 N' v! S% {  o
}
8 b0 {1 H" v$ {% W4 R) p  rcatch(std::bad_cast&){}$ ]) P/ E  ^  [8 P) h* _( A* j1 f- m
" X) }$ d3 y5 U% D7 p
% D$ s; d( h2 @" M, e2 P
3 关于NULL 赋值
1 w( v- o2 t. i6 x8 q7 V4 h; _8 K9 Q( ?  R$ f# \- x
o Old way
8 \! A) ?; X: A6 u7 w// Declare the variables2 d" e. ?9 T+ S# P* {
LoginResponse response;7 ]% ?8 U+ z1 }; G6 c
User * user;7 J9 f  O; q# ~  m! r
// Call a service that returns a ModelObject (User)2 i5 [- j% \5 N% h( k0 r) \8 M
1-28 Services Guide PLM00076 Jresponse = sessionService->login(name,pass, “”,””, descrim );
, M/ j' k/ u" Wuser = response.user;
, E2 M3 C. K. Y5 Q// Test that instnace against NULL& o( }  m8 S8 N
if( user == NULL)
2 n6 n/ `8 K# W- s/ M" o6 f{
/ k3 Y1 I0 S- C. s' g...
' z* T1 \6 M: V}  C9 d& U5 Q4 M4 X7 x) O
else$ c# X% M. j2 R# k% |
{
& m+ C+ v' d# s! ]3 @) M: d// Assign NULL to the pointer
# V7 W0 W& w. G$ f! ruser = NULL;5 I4 G9 K" h5 b
}
9 Z  U8 \- {7 V) }: q# O: z( h  Yo New way) V3 {2 V* H1 q9 w- |& X2 `( Y  E4 v1 a
// Declare the variables" l& R! L: y4 h2 x) {. R
// The service data structures do not change, only4 ?1 `( l; w2 X5 m. a, P' g
// references to ModelObjects
3 B) G8 @; q! W4 O' N, bLoginResponse response;  D9 U% `- j1 ^- j( ?( `: f
Teamcenter::Soa::Common::AutoPtr<User> user;
8 i4 C1 M. y+ i1 T9 b5 \( B1 T* C* k// Call a service that returns a ModelObject (User). E& ^* t# P  ]% h; r  h, J
response = sessionService->login(name,pass, “”,””, descrim );
. l* J& W* a% f2 U* u) i0 l, euser = response.user;
9 f# Z: U* B! G# L! p  }// Since we are not dealing directly with pointers,
4 c  p& V: N' l0 W% h" |// NULL does not make sense here, use the isNull method from the
" P9 q/ D" V3 V" `( V6 m// AutoPtr template class.7 D; k2 ~7 v3 _2 s8 C; h! ^
if( user.isNull()), C. ~$ ~. v1 [* o
{- `0 h; z4 ]$ j2 b
...' |) u* n+ d; H  |% p
}- \/ G$ f7 z! O* T1 }
else
% t5 j5 A- u3 \& s. D( O{# l2 K; Z: W+ H" a4 W9 X2 @
// Release the instance and/ d' u% W! O  t% d* h3 I* w
user.release();
$ O9 r: o) }7 N% H}
4 A; L- r# W* c) {# e3 b3 }% N3 ^
/ n: m: J1 c3 P5 G

6 J% u+ [7 V( q% u; T" Y" s
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了