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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x

1 x3 N" t% a' n9 @' j1 E4 m8 a) B. [Teamcenter二次开发源码分享: Revise 版本 升级版本方法
) `' n3 q+ ~% N2 i; S
' W) w2 T4 G9 d5 U5 X" {- R: r1 x. `/ L+ R3 e3 L
[mw_shl_code=cpp,true]#include <TC/emh.h>
' p) b! T9 X4 Q* H% f: E#include <tc/tc.h>3 e. U, U/ |) n! Q0 N4 T# ~
#include <tc/tc_startup.h>  c: I( L1 w0 `0 H1 }* D& v
#include <tccore/aom.h>
; z2 v, f8 v1 ~3 Q1 T# _, g#include <tccore/item.h>3 C: n( n! i, L  @. h0 }8 c
, p- q: l) g* N! R! \, `
#include <iostream>
0 s) U- K$ `5 l0 ~, n8 J; v#include <vector>
0 n( d0 `( E: h# ^( o( l+ J7 q#include <base_utils/IFail.hxx>% G; f- G) l! w& V' p: p5 ?/ e
#include <base_utils/ScopedSmPtr.hxx>
6 c# E( |; N/ f5 ]2 Q8 n#include <base_utils/TcResultStatus.hxx>5 m- X  [& d, |: h1 t) V0 q6 O
#include <metaframework/BusinessObjectRegistry.hxx>& m# K5 V# b* h. Z) [
#include <metaframework/ReviseInput.hxx>
; X. ]: q& t0 S#include <mld/logging/TcMainLogger.hxx>! q; _. _) b- a/ @7 ?2 E" v! p. E
#include <tccore/ItemRevision.hxx>
0 y2 }- m! |! u! s# Y; T) x$ V9 u#include <metaframework/BusinessObjectRef.hxx>
  I4 w" w# @6 H8 H8 k! @#include <metaframework/BusinessObjectRegistry.hxx>+ Z+ U8 ~+ L8 l
#include <metaframework/ReviseInput.hxx>
' H4 i* u; p; b
% f8 i" A4 N2 n$ @% C; ~using namespace std;
2 _" \6 G, y2 u( `  ^* vusing namespace Teamcenter;
: A9 Z  E4 Q5 S4 Fusing Teamcenter::Main::logger;
% y. E. G! A6 Y( _+ ^* f8 A9 o" i' K
int ITK_user_main(int argc, char* argv[])3 `$ \: d' I* `% t  B- c
{
+ N3 P2 k) j0 T% U6 D. c8 p    int ifail = ITK_ok;
, Z( x# f9 f) M$ o! ]! j. g    ResultStatus stat;
: P1 X7 x5 O) _) C1 w    try
4 d: D1 u' _9 O  F4 k  \    {
5 L/ `* d1 M2 [, {8 d, y9 I        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         2 k- k! g/ j) I
        stat = ITK_auto_login();                                          1 Y" |8 q  u9 ~% \& w0 F
        stat = ITK_set_journalling(TRUE);
6 w8 K+ A  G/ b( T, y$ v) n, U; I/ H+ e        
/ _1 A( v& w8 G+ |        char item_id[ITEM_id_size_c +1] = "0000000";
, I/ o2 x8 ~$ B        char *i = ITK_ask_cli_argument("-i=");
5 T! P1 ~" b( h        
: d$ |* c. u# W+ l# l3 Z        if (i != NULL) strcpy(item_id, i);4 B0 o/ H1 j& ?# e( F7 l8 U! @
        cout << endl << "    ID: " << item_id << endl << endl;3 Z" X* M( P; a$ V; J
        
; N! ~0 N6 J( J( v) A2 A        tag_t tItem = NULLTAG;
/ M$ y( a1 t* C        stat = ITEM_find_item(item_id, &tItem);) J8 \. E2 s7 M/ P3 k: e9 D4 |
0 X0 W+ ]& j3 J& n* H" L; ^3 B& b
        tag_t tLatestRev = NULLTAG;$ b( B* F- o: M% ~" N
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
- C7 N$ }/ Z% Q& k& y+ r* f6 {4 R) n& i- `, I) @; C
        char *pszType = NULL;" [7 s% e! [5 t3 i1 u
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);1 r- q- e- g/ V# c6 p+ h6 h

, G( X, P4 Y$ c# |0 n* x, Q4 a        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
5 G+ m2 h3 \8 V6 f* @- b        2 u( \* j; O4 j. ?/ B* ~% L/ ~
        string revOp = "Revise";$ V( |" n* q; e( j! l
        ReviseInput* pReviseInput =
- L, T; k' m+ g; H            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));  r. B4 T' |/ G2 A3 w. y

* C8 B4 M0 n6 W4 M# `0 b6 y        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
2 X: v, a% e( s* ]) l. {        - u; E& @7 \: a: v; W, U! b
        vector<Teamcenter:eepCopyData* > deepCopyData;4 I' G9 w# H. X5 D; O
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);( L- ^# |9 [; M& r' p. J: c+ d
        ! k: o. h  x) T
        pReviseInput->setLogical("performDeepCopy", true, false );6 e+ z% L7 p! q& v) l
        0 P* ^* a  d: p) m9 {  z0 g
        tag_t tRev = NULLTAG;/ Y! ~2 H4 z; n& a+ {  p
        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);
0 G& A/ D' x  Z3 s- v: |. `% R( Y* h+ F4 N9 w9 w6 Q
        stat = AOM_save_with_extensions(tRev);
% d6 U& T3 ~# \1 B: Y, C$ ]9 z        
5 Q( v# ^8 {- m8 B2 O        char *pszId = NULL;
' \2 l/ K! i8 n' R: E        stat = WSOM_ask_object_id_string(tRev, &pszId);
( e# d4 v# Q+ A4 _$ |! O6 ?        cout << endl << "    Object String: " << pszId << endl << endl;
( V4 i9 W0 f" L# {) R        % `! E, ^4 F+ }5 Q" \
        if (pszType) MEM_free(pszType);
; F' A; X' a' w# K5 ?' _) s        if (pszId) MEM_free(pszId); 8 W1 j& E+ M0 d" h' r# S8 e
    }
  P& J, P  ?7 c5 B    catch( const IFail &ex )
) ~& W& C# i+ ^) N    {
. a0 J" n8 l, i2 C' Q2 B9 \: v& P7 {        logger()->error( ex.ifail(), ex.getMessage());
  f2 r  z  V0 B        cout << ex.getMessage()  << endl;& s3 r' Q7 g2 ^! C, L
        cout << "error " << ex.ifail() << endl;        
9 g0 ~# J0 i2 \' N0 G6 C8 _  F: i* f    }. H8 ^( A1 M' Q# b
    const char* syslog_path;% y1 r: r3 d) d
    syslog_path = EMH_ask_system_log();9 R2 u5 g2 }6 o
    cout << endl << endl;
2 h) t' |% @" F+ {# f9 h/ ~    cout << syslog_path << endl;
) T  N/ z4 D3 Z7 f4 r* r6 t2 F, V
" F$ y, `( _8 p# u. f4 K* A% G    stat = ITK_exit_module(FALSE);                                       
) ]- s2 ~$ [& T    return ITK_ok;* \& d5 c+ q. N4 |* A. Z
}[/mw_shl_code]
5 F" y! n3 M5 g
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了