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

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

[复制链接]

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

admin 发表于 2020-2-8 09:27:38 |阅读模式

admin 楼主

2020-2-8 09:27:38

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

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

x

" L8 ]1 L* d" R6 Z0 h7 E8 e7 uTeamcenter二次开发源码分享: Revise 版本 升级版本方法
) F2 @3 Y, Q. {( k# E& {4 h
! r' f* p3 E" w( g% ~% C
1 q0 A" m2 E' k8 q" N) @0 A9 \[mw_shl_code=cpp,true]#include <TC/emh.h>
: ~5 E$ ^6 r4 `- ?9 c$ z8 [#include <tc/tc.h>
2 z0 t. T3 f3 }' U( s. b5 x! e#include <tc/tc_startup.h>
9 M4 L3 S) }+ ^4 p' y4 ]( b7 a#include <tccore/aom.h>
5 H- T1 o3 L( o5 e: P8 z#include <tccore/item.h>
7 J# U( A" w) _5 L* a6 _- e  \& A* p, W( Z' v& i7 B
#include <iostream>9 {( w, O/ n, o, t
#include <vector>
+ Z! [* J6 I+ d# j1 F#include <base_utils/IFail.hxx>3 |; z0 X2 u6 q$ y
#include <base_utils/ScopedSmPtr.hxx>' N) {* t. {& p( m, x" m
#include <base_utils/TcResultStatus.hxx>, d- j6 l: d+ a# [* {! D
#include <metaframework/BusinessObjectRegistry.hxx>
4 E+ T8 e7 ]4 }- q; w5 X* k#include <metaframework/ReviseInput.hxx>( D- ^" ~7 [+ W" f$ j5 `4 A
#include <mld/logging/TcMainLogger.hxx>
5 Z! l" \7 B' j#include <tccore/ItemRevision.hxx>9 u  J+ V+ S7 l
#include <metaframework/BusinessObjectRef.hxx>
+ {, q4 y9 f" j9 d! a#include <metaframework/BusinessObjectRegistry.hxx>
6 j( P1 B8 U( E4 U! X; N6 Z#include <metaframework/ReviseInput.hxx>
2 V* s8 z% L8 I2 `! ~* {6 u& L
) ]2 u" M* g+ `$ h# g( t0 {4 Zusing namespace std;5 \6 A  N3 Q4 f+ B+ E% u2 _0 q
using namespace Teamcenter;# E! ]+ m4 u: S5 d+ X6 u9 Q
using Teamcenter::Main::logger;: I( C- J; A: F3 O, M/ A# x- Q

+ ~) k* y6 c. R. _7 [0 p2 e5 nint ITK_user_main(int argc, char* argv[])( L  E% N# U8 z+ v
{
* A% V7 G4 h1 E    int ifail = ITK_ok;7 K% I' s& _/ c9 B6 @
    ResultStatus stat;8 u  p& @! N+ k7 Q" n
    try
! M+ b+ M  H+ P) A* q4 t" N    {
7 i! V5 X& q& `$ d        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         
7 q% ?% }. ~- ~' E: a        stat = ITK_auto_login();                                          
1 f( ^/ C. i2 d        stat = ITK_set_journalling(TRUE);
; P. n9 N: T$ p+ y' }        
+ P8 E! t) b3 `  T- Q# p1 M        char item_id[ITEM_id_size_c +1] = "0000000";' I; S( h" R' |: c) E
        char *i = ITK_ask_cli_argument("-i=");
  ]. i; U6 n5 X8 I) C2 [, E        
! b$ I) ~. A# N9 z9 e        if (i != NULL) strcpy(item_id, i);* S+ [: e  u, ^+ f
        cout << endl << "    ID: " << item_id << endl << endl;) {3 i8 E/ t3 v1 I7 p
        ! ^! a4 y$ Q  K
        tag_t tItem = NULLTAG;$ o! o$ a) q- ?  L3 Q
        stat = ITEM_find_item(item_id, &tItem);& _9 f. a7 |* _* j0 B/ i
& Q+ W0 a& l* }# k
        tag_t tLatestRev = NULLTAG;
* \) y- Q0 }) P+ y% V        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); % w3 K# L( G! i% `, ^# d

+ @, S+ R# j; t0 n2 ]        char *pszType = NULL;
7 u( G/ w+ A- a9 r        stat = WSOM_ask_object_type2(tLatestRev, &pszType);8 z7 V& \! {+ j* M& T
# y5 r. y9 e- _* l- d
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();- s# f- X+ H0 f$ ]0 Y& Y1 h' Y
        9 r0 U) w0 Q9 {$ ?  U% u0 k3 d% p$ E
        string revOp = "Revise";' X/ L- M4 g( |/ S1 C. x% r
        ReviseInput* pReviseInput =
* J$ g( P. A) c! B- \2 p% C            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
( ?% {6 g/ H* w( X) a( Y( d/ H; Z/ Q) J
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);. \" Y; x% w9 G% K
        : @* R! ]. J, i5 B
        vector<Teamcenter:eepCopyData* > deepCopyData;+ `* U5 s* m5 S' E! D- B; t
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
! O; A- _2 Y  g$ Y        7 l  E: G- ?% y" M4 X5 W2 S4 |
        pReviseInput->setLogical("performDeepCopy", true, false );7 t+ h" k# f6 |+ C
        
5 N  D5 Q4 j3 r1 a, j1 P        tag_t tRev = NULLTAG;
5 f, L9 b+ P  B' |; C# U        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);4 k2 l" S8 b! g7 Q' O8 {

6 ~; q, @# T/ [  ]; J        stat = AOM_save_with_extensions(tRev);1 E' A( K$ n9 a) g
        1 B! K8 y" p0 h3 U% L
        char *pszId = NULL;9 h: [( Q  n. [  i& G/ W
        stat = WSOM_ask_object_id_string(tRev, &pszId);
% z3 I* p; X/ e! _5 l0 w+ q6 z        cout << endl << "    Object String: " << pszId << endl << endl;/ W: V: o+ ~! _" Q6 ~# D
        
( o7 F5 h$ [+ i        if (pszType) MEM_free(pszType);
" T9 d, x8 H3 B3 P+ O        if (pszId) MEM_free(pszId); $ L0 ]. G2 b9 o; b2 m8 [9 H2 I
    }- D/ C& K7 w) @, x
    catch( const IFail &ex )- _9 V+ {' \4 Z* g+ [
    {
5 _) R9 |3 [5 [/ y1 A2 M        logger()->error( ex.ifail(), ex.getMessage());$ F( Z2 \7 \8 T
        cout << ex.getMessage()  << endl;+ H5 i; a7 ?; m, E! T+ A! j2 k$ w/ h
        cout << "error " << ex.ifail() << endl;        
# T6 t$ P6 y% d' x) q+ h: d    }7 S& k0 ~3 Z. ~6 M: s3 }
    const char* syslog_path;$ I8 {6 L; e' I4 X0 p8 Y
    syslog_path = EMH_ask_system_log();
1 v. E2 I; \6 p4 ~7 X1 r; @    cout << endl << endl;1 g) A0 m0 R7 O5 a! G
    cout << syslog_path << endl;
  G  S1 r! Y+ M) {) N8 W: f2 b* I$ N# v  Q! ~- Q& G+ g
    stat = ITK_exit_module(FALSE);                                       
. p, q( A5 _. n$ U9 u4 h: @$ h    return ITK_ok;
" i) V( p4 q; x+ w) s- B2 T}[/mw_shl_code]
  r! z! C! R: Y) Z0 O
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了