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

Teamcenter二次开发源码分享: Revise 版本 升级版本方法

[复制链接]

2020-2-8 09:27:38 3074 0

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 2020-2-8 09:27:38 | 显示全部楼层 |阅读模式

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

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

x

' N" A) d) P# U8 @Teamcenter二次开发源码分享: Revise 版本 升级版本方法8 }- N! h7 G; l$ U5 g  r

" A2 p4 _& [1 E, x; x2 j+ }3 z6 B! E' r8 S9 ]
[mw_shl_code=cpp,true]#include <TC/emh.h>, x1 E" c: Q' |4 u$ C5 I
#include <tc/tc.h>7 K% l. f* C# ~
#include <tc/tc_startup.h>
: G, h  o7 x" Z  y#include <tccore/aom.h>
9 a! w2 t9 G, R* d* [#include <tccore/item.h>
2 o* `$ I4 l; c) Q1 g$ y. y5 I# y4 d
% ?$ ^; g7 b% |' W2 Q8 g9 {# H8 L#include <iostream>
; M9 _) w4 R8 u) j* ~. z9 Q! S#include <vector>7 N+ H# X/ B; R5 O
#include <base_utils/IFail.hxx>8 M3 c) T  S. ?7 Y' M: A
#include <base_utils/ScopedSmPtr.hxx>
6 O* f, u/ c/ b% t# E#include <base_utils/TcResultStatus.hxx>+ a+ G, g- U+ q& D4 t
#include <metaframework/BusinessObjectRegistry.hxx>
# p, O) [( Y- X# f3 e#include <metaframework/ReviseInput.hxx>
% m2 u, C0 O3 x. Q0 K" ?  f. Y#include <mld/logging/TcMainLogger.hxx>
) X* N+ L# n5 l! h& w* f' }#include <tccore/ItemRevision.hxx>
! \! r: y& X, C% u#include <metaframework/BusinessObjectRef.hxx>
6 I# t: ~" {4 T# A% L#include <metaframework/BusinessObjectRegistry.hxx>
4 m1 ]4 Q$ T9 m: ?% w#include <metaframework/ReviseInput.hxx>, J2 [- @, m" J" A- w8 X% m

9 `, K4 j9 K/ G; lusing namespace std;
% [& k( G) T- j# Z) Lusing namespace Teamcenter;
" R1 o. e; k, q9 V- J; z5 vusing Teamcenter::Main::logger;* Z, w) X& h5 J/ L7 ^- v
- D9 X) A7 D1 U
int ITK_user_main(int argc, char* argv[])
+ P6 `1 O5 N0 H/ r! C5 d% d, p{3 P6 O# q9 }1 `) Q( _( R
    int ifail = ITK_ok;
' e: x- m9 x- A% Y3 z6 O) d    ResultStatus stat;
8 [6 Z- w/ Z2 K. J    try$ e( e* E0 |/ c2 p& b
    {. W, j3 a) h( v1 a
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         & T; B' v/ B! C( w. w
        stat = ITK_auto_login();                                          
+ b. P' P# }$ q" \$ v1 r        stat = ITK_set_journalling(TRUE);
2 w5 k$ Q& z6 h+ _# X2 j# N) f        ( h( l& e6 D% Z9 A% e+ O
        char item_id[ITEM_id_size_c +1] = "0000000";7 j$ S6 P6 O5 V
        char *i = ITK_ask_cli_argument("-i=");8 R6 M2 X) J7 J& v' Q! h8 N& h4 {
        ' q! a' H- z/ q  g- c% I
        if (i != NULL) strcpy(item_id, i);$ e$ z  m- p) H( h
        cout << endl << "    ID: " << item_id << endl << endl;" d' s5 L1 i3 `' ?+ z8 t
        
- m1 F, x# l1 m        tag_t tItem = NULLTAG;
! w! o8 c; C, m. Q$ C/ T% w+ I        stat = ITEM_find_item(item_id, &tItem);
* V. S0 y0 F2 H- H! D& U3 G0 C8 N8 G* t  ?. ]& N: ^
        tag_t tLatestRev = NULLTAG;5 U0 M( l7 l8 `7 c) k
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
! @2 n7 W5 Y  s" H" t8 I$ B6 Y) J, a8 S  X0 g
        char *pszType = NULL;3 y  z, a9 X5 b& U! b) C, X* I1 n
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
8 b! N% U) W; W' Y+ A! y, t
0 n# V5 C) m: v: t3 s- M        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();; N# c9 R& L4 w3 J
        
' Z. r" E3 q0 T1 @# V0 _( R4 V        string revOp = "Revise";
) P( l( G+ N+ e  y: Z: D        ReviseInput* pReviseInput = , J9 V0 {8 ^& _( p
            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));: X! N/ u9 W( p0 T! f

, J) f/ Q0 S/ U0 L        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
! j( j  `* z6 c' y, x6 c; \        
7 u/ w3 r: c0 u$ G5 l7 Y4 U        vector<Teamcenter:eepCopyData* > deepCopyData;3 L6 w6 J: J) X; r
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
8 ~" ]' S3 [8 ]        
1 x* I' Q# ~* W; v' t9 T0 {        pReviseInput->setLogical("performDeepCopy", true, false );
) Q. L) C7 p* ]' j" V; P) h        
& {9 t8 Y+ a0 N, Z4 t* r- y        tag_t tRev = NULLTAG;
  B* @! j1 g- o& a2 D, X/ K        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);! @" \8 `+ [- X" b" q
1 u6 V) s/ i2 {* k- p$ u( _
        stat = AOM_save_with_extensions(tRev);$ w' O) A( E, J& d( B
        " x. ?* ~0 x) J- `+ z2 r
        char *pszId = NULL;3 z! Q; T! J$ J$ ?! x3 |/ c
        stat = WSOM_ask_object_id_string(tRev, &pszId);; U0 M; _5 e% Q) n# t
        cout << endl << "    Object String: " << pszId << endl << endl;! h" Y4 X" g9 K4 Q) }% C
        
% }! ?: W, [, ^$ L) L3 o0 S        if (pszType) MEM_free(pszType);
" K/ v6 P  D! J; ^! \        if (pszId) MEM_free(pszId); ; j1 s0 l, z. G0 ]
    }
+ [& b" i& [; A" Q' }$ m    catch( const IFail &ex )% ?* q$ d; ]8 e7 d1 n6 I' K/ ^. m
    {
# e2 @0 a2 B% c1 ^& c6 d6 M* T        logger()->error( ex.ifail(), ex.getMessage());8 J4 x( V" N3 H+ `
        cout << ex.getMessage()  << endl;
7 r. g* R5 G* `, y        cout << "error " << ex.ifail() << endl;        1 c8 L2 m' z" Y* ]' n
    }- [- v; c; X( @
    const char* syslog_path;
& g8 D5 P; z3 a    syslog_path = EMH_ask_system_log();
# X+ T3 i( }2 l5 w    cout << endl << endl;4 ^3 z9 \+ b# r" h5 f
    cout << syslog_path << endl;
6 e* }* D) F- v  k7 s
( j% P1 a% k# _/ E+ C    stat = ITK_exit_module(FALSE);                                        / [  t- t& p& R2 S0 W3 g0 J
    return ITK_ok;, k1 F3 c: R9 M, [9 c  X
}[/mw_shl_code]
) v- @& \/ M. [2 Y; i
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了