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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x
8 {- A; c8 R; U- `0 {4 |. [1 d. W
Teamcenter二次开发源码分享: Revise 版本 升级版本方法
: a- \' ~% O. e
. Z( P+ _# i$ ]( _+ k0 E1 r
5 W; T2 E; W% m# V[mw_shl_code=cpp,true]#include <TC/emh.h>
# B% W- p: M2 I$ K% A#include <tc/tc.h>9 ^8 ~+ o5 O8 i; [. k
#include <tc/tc_startup.h>
. @9 d6 d$ \, g  e' K; B1 b" _$ J#include <tccore/aom.h>- x1 W  j  o9 N# {8 M7 O
#include <tccore/item.h>9 h7 `" G, H- v
; S3 G" a# J3 B  ~/ v' p9 l: O
#include <iostream>3 X3 A- i& I2 B* k4 A, j6 O* b2 g
#include <vector>
, V" o' f1 R  ^9 j& y" Q7 V#include <base_utils/IFail.hxx>
7 R, Q- T- x$ Y7 O  m6 p#include <base_utils/ScopedSmPtr.hxx>7 R5 u% ]# h1 \
#include <base_utils/TcResultStatus.hxx>4 g, d7 d3 |1 L- c7 ~4 T5 v
#include <metaframework/BusinessObjectRegistry.hxx>
' Q& R: x; S( I6 g! A#include <metaframework/ReviseInput.hxx>
2 X$ t, e) X/ s/ [& I) z! ~#include <mld/logging/TcMainLogger.hxx>9 d: S8 M1 F0 p
#include <tccore/ItemRevision.hxx>+ U$ ~! ]5 t8 y7 j" ~9 C  y
#include <metaframework/BusinessObjectRef.hxx>
: j* W6 a# {4 I#include <metaframework/BusinessObjectRegistry.hxx>. I5 `$ k8 A  q9 y: A* Z" q
#include <metaframework/ReviseInput.hxx>4 T" N% J: Q+ r3 U- ^8 ?  s# m; i3 T

* k6 ~! ]% _0 d2 ]: o/ Zusing namespace std;. j6 ]% a5 U  b$ i  h7 R9 R" `8 b
using namespace Teamcenter;
( C2 O* c4 w0 ]4 `$ R6 V! pusing Teamcenter::Main::logger;
2 r9 D: O" Q2 ]' i/ M6 w
* ^1 J& g. K6 R- R9 |1 c, Y7 H, lint ITK_user_main(int argc, char* argv[])
: W8 H% e8 L, _9 _{
4 K) D) b5 Q& a# o& e' l    int ifail = ITK_ok;+ Y0 q0 w  v& X, \# a3 T
    ResultStatus stat;
2 R1 J1 ^7 \1 j- Y# l  s. h5 p8 q    try
/ I+ g2 t7 A" r/ R6 {    {/ P) `" S3 N& x0 |
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         , L( F+ n+ \8 J7 K/ g
        stat = ITK_auto_login();                                          6 q. D8 r) }- n' [# r0 e( C2 @; Z
        stat = ITK_set_journalling(TRUE);4 O3 K) z0 s5 G6 Z9 l
        - g! t. T8 Q+ X( c1 B; P: d
        char item_id[ITEM_id_size_c +1] = "0000000";( e) F. H1 H2 r
        char *i = ITK_ask_cli_argument("-i=");4 D* U% I. T- }( @! H
        
  h. ^+ `$ M0 R: k  b7 A" f/ K' |        if (i != NULL) strcpy(item_id, i);  v) P" _6 J# p2 {" j
        cout << endl << "    ID: " << item_id << endl << endl;' W  U; l2 m4 ~* d
        
4 {2 ]* a7 C3 l$ y1 l: a        tag_t tItem = NULLTAG;# o* U3 x* }8 {1 Q; T
        stat = ITEM_find_item(item_id, &tItem);5 g& V' R0 z) n
7 \. `  f/ C5 H, x+ R. V& ^0 s' }
        tag_t tLatestRev = NULLTAG;  ]2 E4 O1 f1 k. w9 D/ ^: M
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); 8 }& |, K3 ?5 s( D! P

5 |: }& ?+ @/ ]4 y        char *pszType = NULL;) x7 |9 N% z7 }* h4 d& k) l
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
1 V% j# u5 g0 @- ?6 a! g7 V# L5 ]  T0 y  {2 C  p+ l* i4 e; A
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();% P% v$ t$ L6 e$ X, S; s
        1 Y' x% b7 y; S- z" G( _
        string revOp = "Revise";3 d0 F- y& C+ [
        ReviseInput* pReviseInput =
/ ]* P$ o0 B# e& J9 S; x, x            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));# h. Q, l& I0 M- {: M9 X' L6 @
) R* P! X( y" a) q8 q7 C, O/ x
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);/ _. H6 c# N* h+ [( m
        
+ c1 E6 {6 z6 m& I2 h: A        vector<Teamcenter:eepCopyData* > deepCopyData;
: `3 k( x6 G" m        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
$ I4 T; \, |# n' Z3 X0 `$ X        4 U" e/ Q* q( N; C1 q
        pReviseInput->setLogical("performDeepCopy", true, false );
! E# z7 ]$ W* t- c% L        ( z& H' \" J+ D! H( G% o% t9 ]
        tag_t tRev = NULLTAG;
8 L4 A4 H9 k& S9 V: B2 F5 F        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);/ {5 Z+ A4 r: N2 L

5 G: L' c0 h4 {$ ^        stat = AOM_save_with_extensions(tRev);
! P. I- J1 C* c& X" X5 H        
) b* ^, D4 D$ {        char *pszId = NULL;6 n8 p* q5 ~7 f
        stat = WSOM_ask_object_id_string(tRev, &pszId);
( c# t) T' a% ]( `  h( L        cout << endl << "    Object String: " << pszId << endl << endl;
: e+ k7 |: f; C% a        5 B/ R4 ~5 m% f( `, U: D
        if (pszType) MEM_free(pszType);
3 h) C5 A. l7 T& M; @- [        if (pszId) MEM_free(pszId); ) S* h; e9 F, d+ H& G7 i5 g" \
    }9 I; o. X. u) f* A* M
    catch( const IFail &ex )
; d1 D( q3 v- p" b, D& C9 h' g' X' [: k    {
9 z& ^: T" Q+ j" Q) h( `0 y        logger()->error( ex.ifail(), ex.getMessage());
: n1 C; _0 p  X9 D        cout << ex.getMessage()  << endl;- n0 _: ]; r6 V( ]
        cout << "error " << ex.ifail() << endl;        9 l) u) U6 ?# v1 y4 B5 y
    }- ^% y) b1 ^1 [4 t9 n: l
    const char* syslog_path;0 @! O- A* l2 q% C$ I3 s
    syslog_path = EMH_ask_system_log();
. r4 ]1 _1 [, y" v+ e    cout << endl << endl;9 U. g; [) E, o8 E" `
    cout << syslog_path << endl;0 x( E! Y3 M( T" m) h/ T! _# P0 p
4 U7 G$ V0 m  B9 E9 h: s
    stat = ITK_exit_module(FALSE);                                       
3 F' l# j/ T3 {) [# ^    return ITK_ok;
0 u$ g4 C- B$ S; L}[/mw_shl_code]  E4 |+ m# b* }4 d! u% c! M9 s
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了