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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x

9 f' A6 L5 ?) }% E* s* G7 L8 TTeamcenter二次开发源码分享: Revise 版本 升级版本方法$ f1 j0 W* s. o: p0 Y
8 ]: p8 O+ d/ c/ t, n/ x4 n! g+ `
' [+ e7 v. L5 N0 j" ]6 X( U* y+ A
[mw_shl_code=cpp,true]#include <TC/emh.h>
; k2 N: K* w, m#include <tc/tc.h>
8 ?/ ~; _8 V% }#include <tc/tc_startup.h>
) l% U) r# U: \#include <tccore/aom.h>& A  A; Z2 y& v7 i; N! i
#include <tccore/item.h>
* F, i- B1 E& [+ {* V, V* Z3 K- p5 k7 b* i7 c( O
#include <iostream>7 k( C7 G0 p4 x+ h6 [
#include <vector>* I/ j. @& g4 B; x/ B
#include <base_utils/IFail.hxx>
& E9 T# g" D0 z) r1 S#include <base_utils/ScopedSmPtr.hxx>' @3 R$ G1 H% R3 a5 F$ z
#include <base_utils/TcResultStatus.hxx>
: z; y7 s8 {6 f7 y  N; k  k#include <metaframework/BusinessObjectRegistry.hxx>0 W: |# l, h" a/ x$ A: Y% X! w
#include <metaframework/ReviseInput.hxx>
& D% A1 o8 K: B#include <mld/logging/TcMainLogger.hxx>
. i0 [- u5 M0 m5 e/ r#include <tccore/ItemRevision.hxx>
, W0 b) T& o) B. H/ {0 F#include <metaframework/BusinessObjectRef.hxx>2 A) Q4 ^/ c: x% ?6 O7 _
#include <metaframework/BusinessObjectRegistry.hxx>
7 F, g0 l3 {; d: b) T2 ^#include <metaframework/ReviseInput.hxx>. d8 X4 s, q# j6 o" h9 `

" L) Z1 F0 P! p/ i% susing namespace std;
7 |. N6 n& l+ susing namespace Teamcenter;5 U# r: w( j. c3 p. |: V8 g# s
using Teamcenter::Main::logger;6 C7 W# S1 C- d0 D8 ~$ |5 X
3 b+ k) q1 k: ^& X0 I" J
int ITK_user_main(int argc, char* argv[])
  a& x! @$ M) B7 e( E{
! R; N5 _, _2 m    int ifail = ITK_ok;
+ A5 T% z4 E0 j9 N    ResultStatus stat;
. o1 t. J! ?* W$ f  w# S- d    try
$ ?5 E5 ]1 F  f3 y    {4 K% p8 p7 h' ]/ H4 {6 y- e% {
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         
. A7 _* z. J  W0 H0 V7 [( N7 k. K        stat = ITK_auto_login();                                          
2 T' ^3 y7 t8 t5 _) @" d        stat = ITK_set_journalling(TRUE);
& T" R2 p4 }. A! n3 x5 b6 d  v        
% o( j1 t* f  |$ v        char item_id[ITEM_id_size_c +1] = "0000000";. Y1 B* T  v0 N3 l0 G0 I0 \
        char *i = ITK_ask_cli_argument("-i=");
4 g+ l$ n$ l! o        
( K7 ?* _) B9 E+ M, h: X! [        if (i != NULL) strcpy(item_id, i);
) ?  s( I1 h$ p, C; b( ?        cout << endl << "    ID: " << item_id << endl << endl;
8 A$ F: n, o' Y+ [7 F        
- F! f$ ]9 J: M/ I        tag_t tItem = NULLTAG;# H. r" m: j6 _, P( U
        stat = ITEM_find_item(item_id, &tItem);
$ c$ e* x# }& L- Y
% t  H, K4 \- f# G% l  m        tag_t tLatestRev = NULLTAG;
" U0 {, ~! V1 y. q+ u; }        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); ) l9 v( e5 ^5 I9 W2 ^
1 B+ {7 Z+ {) {0 N7 ~+ ^
        char *pszType = NULL;
( Y: Z/ Z/ Y6 ~/ I        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
7 k+ d: i5 h/ G/ }, P1 L; p/ H' p4 {# Q; p  J% z
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
  U, @5 f# y# |) k9 e. [        
6 }: P' H4 C0 y' H" ?0 e        string revOp = "Revise";
  M: s1 n  v( H  d7 i* Q+ I8 _3 ]5 z        ReviseInput* pReviseInput = & t1 J* b5 F. p" e8 n( }
            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));5 u. r7 U* K! u

  M' j2 m+ U- j/ Z+ B$ V% d& F        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
0 r; t- c" o) p% N' C) w        5 w( ?6 i8 u9 @2 O' S) H
        vector<Teamcenter:eepCopyData* > deepCopyData;4 x. v; C. ~/ w% H. T  P3 @% q+ s3 F: x
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
2 s5 `' `3 q: P        
+ v/ }- u3 B; U2 F$ h2 A. |0 Z. [* u        pReviseInput->setLogical("performDeepCopy", true, false );, L% h6 t! p6 M. I# K5 ^1 P: J, n
        
3 M" f7 v1 b* l1 B& O        tag_t tRev = NULLTAG;
& c) r, W7 x7 k        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);
) w% ~% |4 f& b) A0 }0 `9 @! A# }  C5 b; o  F9 ~$ C, F0 f
        stat = AOM_save_with_extensions(tRev);+ ?& f' G2 U% f$ U( q
        
: [, _$ S4 k# g9 J' u. a6 @% x        char *pszId = NULL;. r! b5 x# {$ a, B$ J1 y
        stat = WSOM_ask_object_id_string(tRev, &pszId);2 a1 [$ c: i5 U
        cout << endl << "    Object String: " << pszId << endl << endl;7 Y9 L# o6 W; F" M" D8 U: {; s
        ! n6 g- Q' K; ?) I7 U% T* M
        if (pszType) MEM_free(pszType);
) Y! ]+ ]% ^: C' d        if (pszId) MEM_free(pszId);
% `3 c4 S. a  k% H2 O    }
" k1 q$ W2 I1 G' \: n    catch( const IFail &ex )
' j* u$ {  T# i  N" [    {
$ P6 |6 U" N6 f4 k. o  ]! W2 }        logger()->error( ex.ifail(), ex.getMessage());
) W9 z% d5 x  T1 {6 _% y        cout << ex.getMessage()  << endl;& g' [/ E; n( _$ P$ n8 B
        cout << "error " << ex.ifail() << endl;        
6 }" N' g) F: L' h! _2 D( H2 M% Q    }; U- @% P8 Z" J
    const char* syslog_path;
/ ^  N6 i0 W$ R0 _5 L# M    syslog_path = EMH_ask_system_log();2 H7 _! r( c) ?) `2 }
    cout << endl << endl;9 G! |# s7 v) K
    cout << syslog_path << endl;( ]: Q( `8 R1 `+ C; u9 a4 _

3 e  ~4 r5 f- Z' }: \$ ^1 b    stat = ITK_exit_module(FALSE);                                        9 N% B5 P( O% S! \
    return ITK_ok;# u1 e7 t- _* }: r% U
}[/mw_shl_code]
- t( M6 H3 d! i, u9 m" p+ d1 W
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了