|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
. ^ `: I4 S! O2 G3 ~7 }
Teamcenter二次开发源码分享: Revise 版本 升级版本方法
6 X, c( r4 U+ }$ \. v& @8 S* Q5 Z9 {; w4 u2 y; {
6 S3 R; a% l# H2 l% P[mw_shl_code=cpp,true]#include <TC/emh.h>
3 K" T1 Y- k1 T6 k# Q) J#include <tc/tc.h>
! a% m9 B" z. [& [6 \#include <tc/tc_startup.h> }: @6 n; v- c `" {
#include <tccore/aom.h>
% I0 y D% _, l7 a! ]* N. B! m8 H9 H#include <tccore/item.h>; ^7 B4 {) t- N0 R
5 J: s" @3 t, E#include <iostream>
u7 m' \) R& J; n" P$ F#include <vector>
+ f' V0 d, D, W#include <base_utils/IFail.hxx>( p- I5 P) _8 m b
#include <base_utils/ScopedSmPtr.hxx>
/ S' y0 Z3 n9 Z! C# z#include <base_utils/TcResultStatus.hxx>4 Q& w$ F* D/ o6 A0 c$ u
#include <metaframework/BusinessObjectRegistry.hxx>
! [4 D# n) v9 Q4 V6 E. q+ b" k#include <metaframework/ReviseInput.hxx>% k1 G' J4 Q! U+ I
#include <mld/logging/TcMainLogger.hxx>
, i1 w* E; q9 @#include <tccore/ItemRevision.hxx>( R, N2 {7 |. m
#include <metaframework/BusinessObjectRef.hxx>
/ [8 |) x2 _' d* s#include <metaframework/BusinessObjectRegistry.hxx>* j' c5 `3 W; U
#include <metaframework/ReviseInput.hxx>
8 w- w! y* l" K% R( s( N$ C1 O: U% O
using namespace std;
$ t" o* o( c9 j4 }using namespace Teamcenter;' X! |: i. s$ e v9 `
using Teamcenter::Main::logger;. H" s9 ~! p( ]! W+ x2 m/ Y( q
( B8 t6 G8 l- d
int ITK_user_main(int argc, char* argv[])3 p \" j# M& G
{
% V: Q' a% F$ s% \' ?7 {) P int ifail = ITK_ok;9 f1 Q! g- m# |& O- o+ z* t! C
ResultStatus stat;
! ?9 W" A8 V, R# y8 v: F5 A4 ] try2 T) V6 D* |* K8 t7 I
{: b+ Z& k$ ^# D4 R
stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE); / }3 C. U3 a* N' Y2 h! s
stat = ITK_auto_login();
- g2 k, D( F( C7 V stat = ITK_set_journalling(TRUE);
9 M6 ?( ^ T& s " [; [+ v' ^* u- a5 t
char item_id[ITEM_id_size_c +1] = "0000000";
/ b5 N% A) Q% ?: j9 S: B char *i = ITK_ask_cli_argument("-i=");
6 V' a) K5 h: _5 @8 s5 N
7 h% ]; B3 S/ S" h5 } if (i != NULL) strcpy(item_id, i);
$ r$ y* N- p: _ cout << endl << " ID: " << item_id << endl << endl;
5 W4 _0 P* m# S$ `3 D
8 d8 U5 e2 e1 O1 u9 I+ F- b: _ tag_t tItem = NULLTAG;
4 L. q* {+ z+ I9 q1 n. u! ] stat = ITEM_find_item(item_id, &tItem);
* Q1 _! l/ ?0 A& p( O
9 f, D& \1 B, c- }, ~- x7 i tag_t tLatestRev = NULLTAG;
+ _4 y2 R% P$ j! c- m stat = ITEM_ask_latest_rev(tItem, &tLatestRev); . C# W b8 {7 U
9 a8 S# @ p2 ~* ?- f7 s
char *pszType = NULL;
f- j) \/ S4 o4 ^ q stat = WSOM_ask_object_type2(tLatestRev, &pszType);
9 K( _- d6 `, S5 _+ [+ o
0 E0 o$ h! V r9 V. d BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
" U3 V4 x6 o' K: [& c( g& B 5 F8 ?4 {, Q* W4 i. g
string revOp = "Revise";( ]! P8 j" k$ j' e
ReviseInput* pReviseInput =
! }3 E$ W( l( ^) l6 i2 G9 i dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));- {& L$ s& Q- Q' q9 o! g' D
% n* j. P- W9 D$ p2 c* d! U
BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);& ^% n, f J! O3 [" F z+ S! b V
. p3 R0 X* b6 Y/ m! Y9 e) R vector<Teamcenter: eepCopyData* > deepCopyData;" P* e! {2 s8 G2 Q8 f
boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
1 ]* D$ t2 g$ z+ Q $ c6 q! x) o5 e' ]: l+ l
pReviseInput->setLogical("performDeepCopy", true, false );
9 O8 `7 u, t( o/ M* O9 ^; Z
. m. N) D$ u. I5 m) y k tag_t tRev = NULLTAG;5 S2 W# }' p* ], s& W& k$ y
boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);" J, L* G: i8 c# a3 P
. q: H6 T# ~0 Z8 q stat = AOM_save_with_extensions(tRev);
5 m6 R; p8 K1 s$ { # h$ b' H1 P# d1 ~! }6 J+ g
char *pszId = NULL;
" _) x T8 J2 e stat = WSOM_ask_object_id_string(tRev, &pszId);
* U& f- L+ C9 Z7 K: J6 c! ^1 { cout << endl << " Object String: " << pszId << endl << endl;" k' }3 s4 F, G: F
! |, H6 G! J% }- |$ M, E
if (pszType) MEM_free(pszType);+ ]8 g' r8 G2 ~9 H; G7 o3 ?
if (pszId) MEM_free(pszId);
! O+ M# K3 w3 d; X, p }: y4 O; g. X3 u. P0 q+ n- B
catch( const IFail &ex )/ g) E7 O* ~: J& `
{" {; l1 f9 `, O C- C# E! X
logger()->error( ex.ifail(), ex.getMessage());
% C: s1 a \4 j) H cout << ex.getMessage() << endl;
. G6 J' ^9 \ K3 C/ {6 v' c8 i cout << "error " << ex.ifail() << endl; 2 [4 u9 e: W u9 z* X
}
! r6 f) A( }9 G4 z. K const char* syslog_path;, S+ N/ \4 ?( s: t1 k7 u3 L5 z+ t
syslog_path = EMH_ask_system_log();
6 Z G1 [3 K2 a: ? cout << endl << endl;" y4 ?) ^' A7 I; ?
cout << syslog_path << endl;+ e/ _! b; E6 Y2 A9 L8 D
: c5 m/ _1 M" V ^- G stat = ITK_exit_module(FALSE);
0 `% @( y# h( G4 D' R return ITK_ok;
6 C3 e/ U! v3 f$ y8 l* C) `: D}[/mw_shl_code] m' n2 V* [( `) V% x2 b* R
|
|