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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x
# w8 H. T( J, v9 F
Teamcenter二次开发源码分享: Revise 版本 升级版本方法: d5 b  m5 M9 S( b8 R# u: Z

! h8 A8 J5 y# e4 {# h7 z
4 V( k0 R  f1 o3 M[mw_shl_code=cpp,true]#include <TC/emh.h>
' I9 }- G+ z# c5 @% m#include <tc/tc.h>
! P7 P! D7 {7 l0 S3 `0 Q#include <tc/tc_startup.h>( `* @# r) s7 F( y* Z8 n
#include <tccore/aom.h>7 Z/ `, @$ m/ D# J2 Y& @
#include <tccore/item.h># p$ d7 G6 K. ~: }

" l5 e9 `+ L' A- j#include <iostream>
) |" F0 b3 B( o. m1 ^#include <vector>
" Z: `9 \% R) N; x5 Q* D#include <base_utils/IFail.hxx>
6 p. S( X3 O$ s, U. i# F5 ^, `#include <base_utils/ScopedSmPtr.hxx>- H3 K: Z3 o2 \2 U7 G& O
#include <base_utils/TcResultStatus.hxx>
" ]/ `+ U2 f; n) E0 P" ~; a" w#include <metaframework/BusinessObjectRegistry.hxx>
* j* d6 o8 y1 @4 Y4 X" q#include <metaframework/ReviseInput.hxx>; X, s: t* ?  n9 i! v9 W" \
#include <mld/logging/TcMainLogger.hxx>) g, f4 Q$ {' q" m5 k( ]* T  y1 z
#include <tccore/ItemRevision.hxx>% D3 Y% n1 x* t) `, l
#include <metaframework/BusinessObjectRef.hxx>
. X' s; G7 H* _7 D; d#include <metaframework/BusinessObjectRegistry.hxx>
! ~7 A2 c+ m- s0 g! I#include <metaframework/ReviseInput.hxx>
* r, F* A+ O# }* `2 g+ o8 J: O/ f" r  [
using namespace std;- w5 t- d5 A# J8 t/ C/ c& y0 e1 d/ G
using namespace Teamcenter;; p: W2 J  Y" n( r0 z0 b
using Teamcenter::Main::logger;
( V$ O1 l8 L  Z- i- t# m8 i$ W
1 j# L6 H/ A# H6 M3 sint ITK_user_main(int argc, char* argv[])
# R' k+ ]- i% H8 n$ a+ V{( e  \" _" F8 M& V3 C
    int ifail = ITK_ok;
( X/ ]& n, Y! J2 g    ResultStatus stat;0 d! Q4 z/ I# p" g* Z- x$ w' |, P0 z
    try8 Q- H8 `1 b0 `3 ]: V
    {
. Y6 B6 J" j; y3 j3 c$ e( T        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);           X! A. a: {* P
        stat = ITK_auto_login();                                          
5 I$ }/ ~% R4 E2 ]* k% _0 f$ b        stat = ITK_set_journalling(TRUE);
7 V! E. S6 k6 m: \0 ]' _        / l) u9 n* M: g* u$ p9 a- ?
        char item_id[ITEM_id_size_c +1] = "0000000";
5 V1 w; [& v( D5 e' X$ Z        char *i = ITK_ask_cli_argument("-i=");" g5 n2 E# Y: L/ o
        
% Q, X+ @! Q8 i9 Z# t) X, v6 {        if (i != NULL) strcpy(item_id, i);
! U" B/ D, _/ p        cout << endl << "    ID: " << item_id << endl << endl;
+ ^. W8 X* u# f9 o4 V! B# V( d        
" K2 c" M! X7 ]( G! R        tag_t tItem = NULLTAG;
% F  h9 E. x( S4 c( Y$ R        stat = ITEM_find_item(item_id, &tItem);
  Z1 u! H, Z" @% h" C2 g  p0 g
        tag_t tLatestRev = NULLTAG;- g; J* L3 l! _2 O5 e* x; }1 [' a
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
+ Y+ |/ A4 N" R2 h/ Y# [) u. ~1 j3 ?9 M8 ^% X, t
        char *pszType = NULL;! o' Z7 m2 I/ W5 ~% i7 \1 R
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);% Z$ q  v( \' j+ ?7 k. q' H/ s- I

8 N& _# I0 |1 l+ g' O3 J, t5 x        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();9 {* q$ \* @4 h- j2 ~4 w) m: {
        # y. K9 l, H# J1 v
        string revOp = "Revise";( I5 I. V7 j2 H4 n# e
        ReviseInput* pReviseInput = 8 h6 X) {% Z% K! d" b
            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));+ K- [& w4 _& ]" L9 @& J
$ A+ s! _% k; O6 L# k: w2 Y
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);; k# L: `7 ?, M( Y" |- E* S& P7 [
        & M$ A  ?- g( f# n
        vector<Teamcenter:eepCopyData* > deepCopyData;
4 B* B0 v! Q: N' D9 }5 S5 W        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);! I; E  H% ^7 ~& h8 O% V; u6 ~
        
1 s, H( h, W% V" |7 J! @( f, b, N        pReviseInput->setLogical("performDeepCopy", true, false );
1 o* B0 D- u# W2 s0 z. u        
1 h, O# R# d) x5 O        tag_t tRev = NULLTAG;
' p3 `: @' g, R; J        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);0 z+ l# s/ N4 x$ ?1 J
# Y4 l3 p5 m  o# }: b, Z2 G( ~
        stat = AOM_save_with_extensions(tRev);
& s. X" r1 U8 w# D        , ?9 o# A. ?+ f0 N
        char *pszId = NULL;
( c, u  w9 K: W. v' W( t9 A& l. N1 ^        stat = WSOM_ask_object_id_string(tRev, &pszId);
1 y: I2 l: I; ~6 X9 t3 S# P        cout << endl << "    Object String: " << pszId << endl << endl;
7 F6 C. T2 c* N5 m  {          r, d8 N! [2 t# y
        if (pszType) MEM_free(pszType);, u7 Q0 Q1 B# Q: f* J5 x* i
        if (pszId) MEM_free(pszId); + i9 d: Y. I6 `7 K7 o* ^
    }7 S  ]4 }- X2 w! Q  \
    catch( const IFail &ex )4 c" V0 R, P  P: u& Z. ]9 |- p
    {& S# T" j2 O  ?) K; X$ S
        logger()->error( ex.ifail(), ex.getMessage());4 p5 b8 E* o' k
        cout << ex.getMessage()  << endl;
8 d  o2 v% K- i+ T  k        cout << "error " << ex.ifail() << endl;        
0 h9 C; S) \3 X8 S4 D    }* }9 F  E5 u8 K9 U) ^
    const char* syslog_path;1 X' p9 k3 J. e
    syslog_path = EMH_ask_system_log();/ U( d7 t+ p2 q  A
    cout << endl << endl;
2 R$ v) d4 r; w8 r4 t/ J    cout << syslog_path << endl;
# s2 i! I% ~3 X- J% e: `6 k
4 a/ ~5 p  p% I3 I1 _4 J    stat = ITK_exit_module(FALSE);                                       
5 D7 `; ?/ K0 ^1 T6 J7 E    return ITK_ok;1 g% x6 j) l7 i: Y# Q
}[/mw_shl_code]) g: }: g9 C/ F0 `, l7 F
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了