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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x

3 B) T( c7 `- f/ g. g: \3 nTeamcenter二次开发源码分享: Revise 版本 升级版本方法' v# V! a7 P9 y2 L6 Y

7 ~4 u6 S) {1 k( w8 z0 O; G) f! S/ t
[mw_shl_code=cpp,true]#include <TC/emh.h>, b4 a% Q  ~- r0 w2 A* X
#include <tc/tc.h># E- M) f/ h5 M
#include <tc/tc_startup.h>8 E" i! e" ]2 H& L, @3 l8 a' Q- z
#include <tccore/aom.h>  n! O) b/ q/ C4 [/ r
#include <tccore/item.h>
3 G% a' X2 Z, H# D6 V  c7 z/ t3 p9 A& n0 h  v# n: N! c/ L% V
#include <iostream>) N  [* L7 @' v' d
#include <vector>& ^9 B: N1 y! q  w5 q  d+ e
#include <base_utils/IFail.hxx>/ E( M" i' J+ b  O3 _
#include <base_utils/ScopedSmPtr.hxx>
# B. Y3 U' e6 q# [6 _#include <base_utils/TcResultStatus.hxx>: o; K, B* C0 P+ p0 {8 T; N
#include <metaframework/BusinessObjectRegistry.hxx>
( i5 }( n. ^6 n- [1 F#include <metaframework/ReviseInput.hxx>/ |; L# g# I. Z* U
#include <mld/logging/TcMainLogger.hxx>
1 x+ j9 B& G" ^. I. s6 m4 |#include <tccore/ItemRevision.hxx>
( y% B% {+ d. [#include <metaframework/BusinessObjectRef.hxx>
3 O! J1 p6 {  ?% _" _- _#include <metaframework/BusinessObjectRegistry.hxx>
9 \$ H& U; m4 `1 P" a#include <metaframework/ReviseInput.hxx>
. }$ i3 C' K+ q0 N# e( T% _4 Q% K$ h# m* v' [
using namespace std;1 h+ ^2 {2 c  S* {: i. E2 u0 U
using namespace Teamcenter;% Q  y6 g& b, r3 I/ K4 L7 o
using Teamcenter::Main::logger;2 V( s' i; c4 l1 L+ w! q! h
" e( p, C4 }7 Y. L3 b6 j4 J
int ITK_user_main(int argc, char* argv[])
* m  Y7 @% }% a. b( x3 m{
, t' n: J& O) @  E! O3 Q1 L6 M    int ifail = ITK_ok;; @9 B0 n/ j9 o7 X8 y* S+ J6 o- d
    ResultStatus stat;7 W& x, _8 M' D2 h
    try6 p0 u7 ?9 |; x' t% T$ ~$ W( X/ K
    {5 P( G+ r: ^5 U5 n  d) ], V
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         . O+ Z! W8 f  j$ L  L( d
        stat = ITK_auto_login();                                          
1 \4 u" B$ J. a  F' h        stat = ITK_set_journalling(TRUE);
: d# x0 y7 H5 I) G# H        % M' k) T, Q& W7 I
        char item_id[ITEM_id_size_c +1] = "0000000";
* C; W3 q. x* U! }7 U        char *i = ITK_ask_cli_argument("-i=");
: @6 }( Y$ S8 e! ~4 I% w        
8 R% H- M: c' b8 x+ a- K        if (i != NULL) strcpy(item_id, i);
5 s$ {8 _  m6 V1 a        cout << endl << "    ID: " << item_id << endl << endl;5 ^' e& P; F) O  E8 P
        # W  [* k7 X+ ?+ ^6 }3 R
        tag_t tItem = NULLTAG;8 C( z7 T# V) n7 ~
        stat = ITEM_find_item(item_id, &tItem);
, d" @& x9 _1 b! H+ F! f. ~$ X) {# `0 D7 t
        tag_t tLatestRev = NULLTAG;0 u) ?' y) m6 [4 u7 m
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
( O. ?% X* {, y  u9 W* C, |
1 a9 E2 q/ o" ]) Z; M% f4 c2 d        char *pszType = NULL;
# p* u! I5 U: G! h2 Z4 R        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
7 y" e1 B2 Q6 G; |. Q, v' |- ?- q- g
+ K2 `, y$ X7 C$ e6 R) e& i. y        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
9 C  I' P6 V3 e+ u        8 F- S0 ], e/ L0 A
        string revOp = "Revise";
: h9 S# G6 u) E+ Q; n) h        ReviseInput* pReviseInput =   u$ B, X, n7 L, t
            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
% B. S2 g% b! _/ Z8 h, Y- E
8 O6 S8 T. O0 H3 \4 U8 J" q! W        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
3 I, j! |2 q) r$ k        
7 z+ z3 G& E9 s0 H        vector<Teamcenter:eepCopyData* > deepCopyData;
; a" ^1 s) @2 ?9 ?        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);$ ~* F: ]6 J' f) }1 S% e: P' B5 [! X
        
, _- N5 R; R: ~8 x9 f) Y: b( R9 u6 ^        pReviseInput->setLogical("performDeepCopy", true, false );( B! f+ G: y6 ]3 V& p* N# I* O$ [
        
, T6 M$ }6 b. c        tag_t tRev = NULLTAG;
+ a9 d$ z* ^$ b$ ~" D' H* G# k( u" r        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);  T; Y5 i$ a' e

  Y2 q$ Z& ]" O+ ~7 R  C. w& t; k        stat = AOM_save_with_extensions(tRev);
2 b, H# Y* g$ Q6 Y        
5 A2 K5 H" J: u6 c. m% U( U        char *pszId = NULL;
0 R; B- T4 E- E; T        stat = WSOM_ask_object_id_string(tRev, &pszId);. B2 N/ s6 q6 ^# U8 t, T
        cout << endl << "    Object String: " << pszId << endl << endl;0 V/ c5 v. p: j! j/ ^
        ; F) W+ q( U4 m; O3 ?& {9 r/ ?
        if (pszType) MEM_free(pszType);( w4 \* \; @& w+ O, i0 l
        if (pszId) MEM_free(pszId); & z+ ?0 w; X) Q$ l* T. ?4 B9 ^
    }4 [+ m) a6 x, Q
    catch( const IFail &ex )$ y& z% o! q- P1 e' }. @
    {6 A" o$ s. {3 k) c, N% _% T* i
        logger()->error( ex.ifail(), ex.getMessage());
. m* |0 {7 C0 O; \' p" p        cout << ex.getMessage()  << endl;$ [3 Y- H! R7 P1 }$ g! x
        cout << "error " << ex.ifail() << endl;        9 u) [6 h" f! \8 z; ]
    }
+ f* G- I9 J. S* _    const char* syslog_path;- d1 m$ S; }$ x% E+ ]8 h3 l
    syslog_path = EMH_ask_system_log();
3 s" d! q7 f$ s- M- h- O    cout << endl << endl;
: T! B/ S6 c' l, t6 r1 J3 h    cout << syslog_path << endl;
. d8 O& E0 S7 k  @
6 O9 m9 M# z; t, q0 ~  S    stat = ITK_exit_module(FALSE);                                        : ]/ X! S5 k  A! m+ S( q
    return ITK_ok;
# `, \) S  l9 G}[/mw_shl_code]
8 ]# m# o& X1 I9 L2 X, t6 \: O% b
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了