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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x
3 i3 i9 |9 k4 b
Teamcenter二次开发源码分享: Revise 版本 升级版本方法
1 {# Z( X( c) ~1 L- i' f3 l" P  q; k& B  t" h# n- Q9 o5 N- _

- w$ {) n+ K, F( e[mw_shl_code=cpp,true]#include <TC/emh.h>
$ n. d* ^7 u7 ^8 b( c6 Z% f+ j4 L#include <tc/tc.h>: M7 H) M  d4 ?) |. j
#include <tc/tc_startup.h>6 J% G9 N$ i/ w; J8 `+ W
#include <tccore/aom.h>8 i4 f# v3 Q! C1 [8 M6 [1 d0 j
#include <tccore/item.h>9 W) c. |* _% B9 r5 d

( {5 A- g3 S- G* Z- _# N6 l6 V#include <iostream>, H5 Q9 I4 ~' {
#include <vector>
( M$ u7 }& e2 r: p' T$ W#include <base_utils/IFail.hxx>" w: @/ w  e6 p$ T
#include <base_utils/ScopedSmPtr.hxx>
: x, U' o6 }8 }3 t* h#include <base_utils/TcResultStatus.hxx>0 v4 S- @$ \. f9 b5 F$ ?% w
#include <metaframework/BusinessObjectRegistry.hxx>3 r5 T3 }. H5 n' h3 s% ?
#include <metaframework/ReviseInput.hxx>" I* c! I1 a5 d7 {8 I( [( ?* L
#include <mld/logging/TcMainLogger.hxx>
7 Q  }( f: J& V#include <tccore/ItemRevision.hxx>
) E3 h) {( H% [$ k( i3 o- R8 a#include <metaframework/BusinessObjectRef.hxx>
2 \+ c4 G! `! x#include <metaframework/BusinessObjectRegistry.hxx>( G' G: k4 C- W7 N; `9 h2 }
#include <metaframework/ReviseInput.hxx>
+ w0 i5 m$ u% l3 c5 u" r
2 |* q* u2 u( [) `7 ]using namespace std;
" {0 k& J' F! }, y: T' I; @using namespace Teamcenter;8 R1 i) r# d' W
using Teamcenter::Main::logger;7 j, M; y" K7 a$ }
* c1 K0 M5 d" G3 o/ t( f% _
int ITK_user_main(int argc, char* argv[])
3 C* }/ Z+ l. i9 m/ u+ I{
' p: e- U  O; K* o. i* s) E6 d    int ifail = ITK_ok;
' I. E- s+ V" Z9 R3 e" @& d7 W    ResultStatus stat;; Q+ s( S6 T' K8 g6 Z7 m- F0 V/ x
    try. g# ^- d, T& @0 n
    {, h4 k6 k. J0 ]
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         
, t8 e# G$ Q& N$ Y0 M# ?        stat = ITK_auto_login();                                          
8 ~: a; i* t( E& r: A- k        stat = ITK_set_journalling(TRUE);/ b: u% }# L" P% M
        ; ]4 C# Y' K% W
        char item_id[ITEM_id_size_c +1] = "0000000";  a/ l" z7 O9 |$ ~/ c+ B1 |
        char *i = ITK_ask_cli_argument("-i=");
8 C% k0 E4 k# m" g( {        
5 ?: C# A- ^! N. I5 d        if (i != NULL) strcpy(item_id, i);
2 P% Z/ [' \0 h        cout << endl << "    ID: " << item_id << endl << endl;
( G9 U- n, h1 u$ ]0 s+ e) j          t- e. l( h: k+ d
        tag_t tItem = NULLTAG;
! q+ `2 M: ]# R# H' ~, w6 ~+ w: g/ Z" ^        stat = ITEM_find_item(item_id, &tItem);/ Z: \9 S! j) d: P$ x3 l( R
  H. V& [, a. p' ^/ \! l/ j
        tag_t tLatestRev = NULLTAG;2 D. B& u/ l6 z! K# s/ ?& Y. j2 [
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
4 }0 ?/ w. m+ o+ {- F6 q
: u2 X) D/ `" \        char *pszType = NULL;$ T7 C3 r* _+ Y$ l: r: C
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);7 L+ Z( |/ Y* `5 I$ i; n

0 ]+ R) N4 Y+ K+ [, l: \5 e        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();* \4 T$ H0 M  T
        
' O3 R1 b& Q' M  k# v9 Y        string revOp = "Revise";
# F" t& ~" o) v, Y( O  u3 |4 j        ReviseInput* pReviseInput =
7 ~& N* E* `2 J            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));; G: r: m& @7 F+ a1 O  V& _6 [% o
3 }% J7 l# N2 y( }9 D' ]6 m
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);+ J" Q+ U% z3 Z* Z
        
0 z1 K# f5 f, ]; q! K4 y1 {, M2 B6 l        vector<Teamcenter:eepCopyData* > deepCopyData;
# h6 o& J+ |8 J/ _        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
# r% q( s( z) H  D' l  d- Y& g        
" x& s* s% K# Z# Z) k# W; V' e        pReviseInput->setLogical("performDeepCopy", true, false );
: j+ _3 i, \; H3 G# Z* d        
: c# d- _' o; q) d4 d1 b" G8 u        tag_t tRev = NULLTAG;! W1 g" [+ k0 F- d( X
        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);" s3 f6 z( Y8 U: g( q6 y7 S0 C: D- x
, s) Z0 v3 @0 c2 x! L
        stat = AOM_save_with_extensions(tRev);8 @6 ]2 R5 [1 m+ U( `" a# N
        , m  X$ ]  w  O) |# z+ N# u- h0 c
        char *pszId = NULL;# w" \2 Y% J# \, Q- c
        stat = WSOM_ask_object_id_string(tRev, &pszId);; N/ j5 c2 L# I# |
        cout << endl << "    Object String: " << pszId << endl << endl;5 p6 ]+ Q0 R+ P3 X/ z# n, a
        7 q# r3 s0 B5 _# X0 ?5 J, \0 a6 ]
        if (pszType) MEM_free(pszType);
7 i0 Z) Y+ g% O) @7 p& P# n% @        if (pszId) MEM_free(pszId);
- G$ {% a. V! Q6 J. Q: ?    }
8 I0 q5 i8 {% X* J    catch( const IFail &ex )2 l, O8 |, Y" j8 g% s
    {
9 Y) m; d4 f! S% `2 E        logger()->error( ex.ifail(), ex.getMessage());
; c6 N: [7 q9 Q4 i* {" T        cout << ex.getMessage()  << endl;# `; n7 _" M5 k. U# x0 ^4 J
        cout << "error " << ex.ifail() << endl;        
6 N+ n) k7 R2 x7 w, b# l* W4 O) o    }* x7 |* ^) v. M
    const char* syslog_path;
( y* N) A! S" M& k; c' M    syslog_path = EMH_ask_system_log();8 j  k8 M  E4 |
    cout << endl << endl;
% C6 F& F( k; m6 c# b2 f5 r    cout << syslog_path << endl;) P1 `) w, B' s/ e2 I

& ^$ P$ u/ K$ R' N    stat = ITK_exit_module(FALSE);                                       
# n# a8 j9 J5 W$ p6 x4 h    return ITK_ok;
- Q4 M4 I4 y5 y8 Y+ @' h, f+ A}[/mw_shl_code]; _7 T2 ]( {3 o7 w6 K* j6 D% @" r
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了