查看: 3347|回复: 0

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

[复制链接]

2477

主题

1280

回帖

8万

积分

管理员

PLM之家站长

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

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

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

×

; L. \* X8 x8 R' J. w" kTeamcenter二次开发源码分享: Revise 版本 升级版本方法, A0 D9 j* Z* m* N# g5 p4 O8 k

6 G! a( G+ }% F2 ]0 m( o% v# g1 _; b  z  p, h6 D7 ]5 [6 M
[mw_shl_code=cpp,true]#include <TC/emh.h>
1 Z( [3 `3 N3 x#include <tc/tc.h>
7 `7 P# k7 p; c+ G  s#include <tc/tc_startup.h>
/ |' [) T# y: Y; e- P#include <tccore/aom.h>- N# r2 x. X7 n3 L7 `. {
#include <tccore/item.h>
3 w1 a& t4 \5 O. p3 ?0 `
+ Y6 n  y( x  ?, v4 K#include <iostream>5 b7 H( U" n+ ]0 p# r# A
#include <vector>( O$ _) G: J5 H! p7 o- V
#include <base_utils/IFail.hxx>* G) F; g# F5 }: y
#include <base_utils/ScopedSmPtr.hxx>. F" [5 @% E) }" @
#include <base_utils/TcResultStatus.hxx>5 i3 N& M; ~+ @, O. ]
#include <metaframework/BusinessObjectRegistry.hxx>
4 K/ R  Z/ b0 A  K1 o1 m# l9 I7 F' c#include <metaframework/ReviseInput.hxx>$ z6 d  ~2 S+ ^0 f3 _6 L  g3 r
#include <mld/logging/TcMainLogger.hxx>
6 q$ r* S2 y5 P+ U( N4 P#include <tccore/ItemRevision.hxx>
" ~) P5 k' a2 o% _; s( C3 o#include <metaframework/BusinessObjectRef.hxx>- @! p* O! x% W4 o4 B% U0 x
#include <metaframework/BusinessObjectRegistry.hxx>* s( O1 Z6 N0 \0 Z# D5 I
#include <metaframework/ReviseInput.hxx>! O/ i  a3 u8 L: _7 n) z
7 K" [; Y! i$ m0 H. [4 [9 y
using namespace std;" j- K  a" B6 I4 G9 t5 I
using namespace Teamcenter;) ?$ H7 X& {  l
using Teamcenter::Main::logger;+ i9 C- l6 P" a

) C7 u5 |* K; ?int ITK_user_main(int argc, char* argv[])
; W3 O  m4 K4 I* g, ?{! w" h$ r- ?: ^. Y9 P
    int ifail = ITK_ok;7 Y1 `% C8 C! R3 A' t: K
    ResultStatus stat;& Z" a7 K* a$ W4 p) ~
    try# d7 [8 r6 o8 a
    {
- ^) k' ~8 d3 X& p# `7 ?, b# ~  C        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);           \: [) Z! c' j+ {1 G5 G
        stat = ITK_auto_login();                                          0 |* J3 ~5 K- j& L5 r% ~; o5 \+ J
        stat = ITK_set_journalling(TRUE);
' L" e+ c! I" z3 C        
# @# s: r( R: M$ G        char item_id[ITEM_id_size_c +1] = "0000000";
! Y1 K+ @+ Z: w' m+ @! q- J% K( o        char *i = ITK_ask_cli_argument("-i=");1 ]# W+ y7 e& K( L
        
8 ?6 o9 f! Z& O- I7 A        if (i != NULL) strcpy(item_id, i);+ g2 e' {9 [& w
        cout << endl << "    ID: " << item_id << endl << endl;
8 c" \3 t' a" w        ( M5 U9 {0 H7 [
        tag_t tItem = NULLTAG;
# i3 g( k2 o% r1 Y        stat = ITEM_find_item(item_id, &tItem);
6 ?( G- E( ]  @4 i/ w$ Q4 d! v( }9 {; p7 Q5 c6 T
        tag_t tLatestRev = NULLTAG;
% @# k7 h! |- w" A* w* f        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); ; c; Q( N& H. U2 R4 }
4 y- w# P# G9 F3 c, ?8 c3 }  g
        char *pszType = NULL;
8 y% Q7 U  X0 n8 Z% N$ b. Z1 t        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
6 w& G; N+ F3 M( w% |9 E, |- z8 N( n0 F/ c5 Z0 S. W
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
$ m$ r' }( ]; y9 _5 t: n6 E# v8 H        # W3 e% Q* [  r: \4 @* I) [- E+ f
        string revOp = "Revise";1 E0 v7 Y7 o" |( V4 g0 _$ B
        ReviseInput* pReviseInput = 8 [* M& T) p# }5 p# j( `% U; C
            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
/ `6 e1 x2 \: }/ J( Q& g' q2 z/ @$ h& y6 p
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);( Q; u# h- M7 H. n+ @% @
        + f* O- k- X" v" a1 T( y0 M- C
        vector<Teamcenter:eepCopyData* > deepCopyData;
! {! v' J0 P, Y, J; \! C        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);2 g- r4 O9 U& n3 [# W
        
. b; A' C  I; R$ A# q. R        pReviseInput->setLogical("performDeepCopy", true, false );
  u  {  C! g7 \1 D        
: b; V3 i$ m8 l4 K6 }7 i* n/ c        tag_t tRev = NULLTAG;
$ i9 b0 R9 X1 v. t        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);, ?% _: Q  D- k- {/ p' E
  p) n3 d; Y) ]. w* x
        stat = AOM_save_with_extensions(tRev);
% b/ @" H( p" `( m2 N: e        4 O8 X$ o1 `& k2 k* }; O% w% a/ T
        char *pszId = NULL;$ T% Q4 u$ ^# U8 e1 a
        stat = WSOM_ask_object_id_string(tRev, &pszId);
! j2 h) Q" ?. q/ j# g; d: v        cout << endl << "    Object String: " << pszId << endl << endl;5 J- J+ W! O( P. {
        : q4 \: z! L/ s
        if (pszType) MEM_free(pszType);3 p8 R3 Y7 r# f8 q  K5 \  p& z
        if (pszId) MEM_free(pszId); 1 `$ m& h. B  r# ?! U" a: Z
    }
' j$ @7 W: I" C  q0 g! a    catch( const IFail &ex )
4 L$ w* s. _" \* R1 r. b) ?- T    {
$ L1 S1 M) c$ b6 r2 C0 U% F        logger()->error( ex.ifail(), ex.getMessage());5 }# f5 q: f' j# V: _
        cout << ex.getMessage()  << endl;+ r- P* Y" z, |, A7 n
        cout << "error " << ex.ifail() << endl;        
3 I( ]: c+ b* v8 f! C    }% S3 _9 b2 y& G) l0 C' O: @2 M/ N
    const char* syslog_path;  E4 b7 i: B% w1 {
    syslog_path = EMH_ask_system_log();  m: E2 m7 L1 b
    cout << endl << endl;1 |  j! P& F& |  B- ^' x
    cout << syslog_path << endl;0 d5 d3 Z+ v6 L; T8 V
; C  O" u3 ~3 h0 [% K3 T
    stat = ITK_exit_module(FALSE);                                       
+ ^  W5 Z5 U7 z" @* ]/ z2 ~4 N    return ITK_ok;
* B0 I! I. x& b7 o9 }}[/mw_shl_code]+ Z; k4 [& G2 A; ~7 Z/ A
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部