PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

admin 楼主

2015-2-3 09:18:14

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

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

x
Teamcenter SOA开发中关于变量声明,转换等代码的新处理方式( I4 T5 Q7 I. [5 v

" }4 g6 w/ b& _7 I. i  m$ y
' ^. w0 U5 q# R. {
1 变量声明
2 t4 S  `/ p- q2 r) d3 p7 o2 S& y$ ]$ [- Z

- j0 Y- s$ G! F; ^! z: K9 J, po Old way. V( o; D+ B* v% z, @) E# f7 b0 U
// Declare pointers for an Item, Form and vector of ModelObjects
3 U6 E2 F; J# E3 r+ o4 s! D// initialize to NULL
: J0 n8 `+ [% T" k5 @* ]/ c: C2 G# oItem *theItem = NULL;
+ C4 @/ b4 Y5 I: IForm *theForm = NULL;
' p3 p2 y. y/ Kvector< ModelObject *> objects;1 {& j+ b3 I+ K! h
...
- U, {' J; G6 j/ X/ f: R// Use the Item
0 N, Q/ h% z& f$ s4 E' {theForm = theItem->get_item_master_tag();% t- }2 U# ]: D5 z( W- z
objects = theItem->get_revision_list();
) I3 A5 j4 v; B, g( Oo New way
/ c$ l$ }3 i( {" F4 V& w// Declare AutoPtr for an Item, Form and vector of ModelObjects6 O* @4 J' G' ?  w
// all AutoPtrs are instantiated as NULL+ [; z6 P, d8 Q4 l
Teamcenter::Soa::Common::AutoPtr<Item> theItem;
* s3 U. F: b. \1 j  M% tTeamcenter::Soa::Common::AutoPtr<Form> theForm;
% h0 _. O. ?2 w- j2 `" qvector< Teamcenter::Soa::Common::AutoPtr <ModelObject> > objects;4 [* B$ S& I) w5 s* W6 m
// Use of the ModelObject variables remains unchanged
( s% x$ y0 ?) F# qtheForm = theItem->get_item_master_tag();
! Y, p' q5 ?: Xobjects = theItem->get_revision_list();6 i' v9 [7 W4 c
3 k" I  l- v% q6 {, Z! P

) w- \4 S4 w/ G' f8 Q$ r2 类型转换 0 _/ j- s5 @4 Z/ N, Y
  f$ P' I2 O7 y- e
o Old way. e6 U/ ~* H7 I1 z9 E$ }# w
// Declare the variables
3 o" q4 E* V( S7 K1 f: _User *user;( y+ n; l/ |9 v/ u- O% `
ModelObject *anObj;8 i* k$ P8 {9 Y9 X) @, L. D
Folder *folder;  p" e7 Y6 y6 m, b
user = sessionService->login(name,pass, “”,””, descrim ).user;% E) f5 \5 L& h: y1 c' t  t9 u! W; j
// Cast to the base ModelObject class
; _" ?) r. f% l- Z% P1 janObj = (ModelObject*)user;* B: C; C$ @2 h7 Z: t
// Cast to a speicfic sub-type, if not NULL
+ \; P6 y1 }' @8 I2 }( R// do something with the new pointer) H& c: e% U6 K  f0 v/ o
user = dynamic_cast<User*>(anObj);
* P  K) m2 S, e0 m. Z0 Zif(user != NULL). Y. V0 ?' b" z4 D! B# Z7 O
{
: q: F& L$ N: ?* b+ i& xfolder = user->get_home_folder();
: m. I$ f( ^5 B* R}  X; X" R2 }6 O- j' |
o New way
5 i9 h0 i7 N8 n# o// Declare the variables( [! m7 h  J9 Z' o
Teamcenter::Soa::Common::AutoPtr<User> user;
2 ~. U# o* [6 K3 e6 n8 ^9 [Teamcenter::Soa::Common::AutoPtr<ModelObject> anObj;
8 z% L/ s# E4 c. J$ fTeamcenter::Soa::Common::AutoPtr<Folder> folder;4 E8 A  _, ?$ q5 F; A; ~
user = sessionService->login(name,pass, “”,””, descrim ).user;
3 g6 L) H$ B4 X/ \. G$ h! s// Cast to the base ModelObject class
( x& j3 g- d2 n' `anObj = user.cast<ModelObject>();
! `- d9 R8 O7 U( i7 U$ i' P// Put the cast to a speicfic sub-type, in a try/caTCh block
7 ]; s, C* {1 h. [5 _6 G// if std::bad_cast not thrown, then cast was successful
7 H: o( w. D7 S1 L# N& o' n: rtry- D6 [/ A. a6 K, `# E
{+ X# F. I  N  [4 A7 B
user = anObj.dyn_cast< User >();0 M. J8 R) s) q9 `
folder = user->get_home_folder();5 t" S" \! J& s( c( }  z% l
}" u' n6 E, \& T- {8 R3 h2 I# w
catch(std::bad_cast&){}6 y1 B. j' b" Q( l

) y1 U, ^7 Q- E9 ~' Q4 d; X1 L0 g1 p3 ?2 O
3 关于NULL 赋值9 u4 q, n# G# X" c6 R: w
/ I- S$ i  \' Z2 |2 ]
o Old way
. N4 n6 i! C( Z' @/ D// Declare the variables9 Z( |, T/ A5 s# ^; ~+ e
LoginResponse response;
) _. s7 Y9 F# S/ Q& w- v+ t0 I' HUser * user;- ]; X) x" _& Y3 v
// Call a service that returns a ModelObject (User), X6 g5 Q$ P# B
1-28 Services Guide PLM00076 Jresponse = sessionService->login(name,pass, “”,””, descrim );- a' Z: `" b1 {4 c+ _* w6 l( j, [' P
user = response.user;5 }$ A9 W' N5 _3 P1 T; U; J
// Test that instnace against NULL
4 `1 x: M- ^; qif( user == NULL), U% j/ a: c# y$ k- O
{  E2 Z9 X( p3 W  e/ t! A  p8 J
...+ c8 Y% C% z/ W" S( P2 ^6 z) Q
}
" {9 u, I: Z0 D, c/ ?else2 \4 X8 f$ \+ R6 `+ A
{
$ i- h# @$ X9 \2 p5 C8 n7 z. g! Y. O// Assign NULL to the pointer. m5 ?1 c# K- f1 \# f3 f
user = NULL;
0 R# n2 W# z3 c2 [, j$ p}
' O( R- X0 f+ f! Q! P. |o New way8 R4 [9 U" w7 P7 n& V
// Declare the variables& r7 W9 ^1 {) L4 ^) G
// The service data structures do not change, only* p0 d/ z6 j3 W; C1 l* U) `
// references to ModelObjects
- F+ ^9 u6 f% l( ~0 JLoginResponse response;
# U9 I9 w5 u$ U: }Teamcenter::Soa::Common::AutoPtr<User> user;
6 [! F. G- J. p& l! j- L1 {// Call a service that returns a ModelObject (User)* W9 m1 G+ U$ P# c( w
response = sessionService->login(name,pass, “”,””, descrim );$ h$ N* f) a) M) v
user = response.user;( Q6 h, Q, a& W; @% F/ y
// Since we are not dealing directly with pointers,2 U9 \( ^8 |; Q! u9 q4 K+ U+ ]
// NULL does not make sense here, use the isNull method from the
* ~% v' t4 U" w( e, @// AutoPtr template class.
: c+ k) [- I# l! p& S  I# r# gif( user.isNull())
; z* u* `* v9 `' y/ T! t% U{
7 i4 T& ]8 h8 z% v6 I% l& L- d...
2 l+ g1 [1 c! O1 F}8 x0 [1 Q* p& f% @
else: j. Q0 U* h1 M* c
{7 |- S9 b' q9 S. U
// Release the instance and
  J) b, `5 C# L. M3 l2 z  q# [  Zuser.release();: i$ S+ p! @- t0 \' B# `0 C
}. f; _' r0 \0 B
8 e: n! x* v5 A4 \' z. \7 s
: e, G% d6 m' k2 u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了