PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82172
QQ
发表于 2020-2-8 09:27:38 | 显示全部楼层 |阅读模式

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

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

x

' {3 r# M* u+ N* ]1 ^Teamcenter二次开发源码分享: Revise 版本 升级版本方法: @, Y. Z+ ^" }- `+ h% O
7 z: F* u* R, n0 b* ?
: `8 N5 J7 a4 o! i# {: J
[mw_shl_code=cpp,true]#include <TC/emh.h>' A4 i0 U7 a% ]3 Z$ V
#include <tc/tc.h>
- C8 |/ G3 J9 z- Z# ]2 L0 n#include <tc/tc_startup.h>2 o; \6 b+ r7 b# I" U, b  G
#include <tccore/aom.h>
. }3 J  u% N; m2 ~- a; i#include <tccore/item.h>
2 @( Z3 W$ r6 q' j
. f7 H. w, K% r' \1 d6 S#include <iostream>
1 w, j. a1 e6 c9 H& I. Y#include <vector>: `+ z, Y: e( W
#include <base_utils/IFail.hxx>
1 `$ A3 ^. _0 C2 H#include <base_utils/ScopedSmPtr.hxx>
3 y, [( s. `: u5 p#include <base_utils/TcResultStatus.hxx>1 r/ N9 ?% s7 w4 _1 o
#include <metaframework/BusinessObjectRegistry.hxx>% I3 e  F9 g# d) M5 F4 Y+ B$ d
#include <metaframework/ReviseInput.hxx>6 F9 Y  M2 ~; J3 [0 h
#include <mld/logging/TcMainLogger.hxx>
1 x4 g0 J3 ]) f# @! g4 S) f#include <tccore/ItemRevision.hxx>* W+ j/ G) @+ f0 L7 s9 {" U# x
#include <metaframework/BusinessObjectRef.hxx>+ B8 A% x; s4 |; Z% {4 _4 p) }
#include <metaframework/BusinessObjectRegistry.hxx>
' ~0 }4 q) e5 e9 U#include <metaframework/ReviseInput.hxx>. p4 J/ {0 \  E' m
* g' e/ w6 s5 j
using namespace std;! N) h- h( Y$ y5 I  L/ c0 }
using namespace Teamcenter;; W  f6 ~; D3 K7 O' H5 j- @6 z+ x
using Teamcenter::Main::logger;) X: C! A$ x. \, d: T6 x% G: x

; R8 Z. v. H* s3 y2 _int ITK_user_main(int argc, char* argv[])5 H, v# x7 p: @5 L1 K7 {
{$ P! ]4 p' u9 h6 D" F
    int ifail = ITK_ok;
5 Z9 ~9 D0 d& t    ResultStatus stat;
; N. {5 S+ u2 ^3 x5 ]7 S, \    try5 K- g3 u+ c: i. U: F
    {6 F* B1 T8 N+ @" N
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         
# H9 K3 P  P5 d/ X1 N        stat = ITK_auto_login();                                          4 Y$ E; h. ^4 E" N3 D# ?
        stat = ITK_set_journalling(TRUE);8 B% v1 `2 W9 e! v( O- K
        $ f/ W) {+ r* ^6 f- T6 ]
        char item_id[ITEM_id_size_c +1] = "0000000";
9 n) Y" s2 W& B1 C! k        char *i = ITK_ask_cli_argument("-i=");
7 t1 T1 ]. y1 e7 Y- _! s        ! ?' h+ n. i7 S$ w( s  x) r" @* z
        if (i != NULL) strcpy(item_id, i);9 @* I  b, S4 T1 }0 ~
        cout << endl << "    ID: " << item_id << endl << endl;
' I: ~6 [; k' c' l        
% k  B! A, e. M# Z, L) {        tag_t tItem = NULLTAG;) D- x4 w9 w& b( r
        stat = ITEM_find_item(item_id, &tItem);
  I8 i: S9 O# H' }% _4 X" m/ m; y  v# f9 c2 g  E: M" ?
        tag_t tLatestRev = NULLTAG;) @& Z: r; L* Z
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
" a4 a) ]6 t. `8 ^5 a: f) W  C( s+ l
        char *pszType = NULL;& W& V& }& C! \; r5 I+ B; F
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);0 U$ C- X; ^  Q0 S7 R& U/ B/ I
5 M( Q6 e7 |3 T, y' J% \. s; y$ T; ^% A
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
+ x) m( v* l4 C. W" @8 ~          ]8 m' t+ }, \. b, u- O
        string revOp = "Revise";
' _8 |( k: i  Q* b1 c        ReviseInput* pReviseInput = 3 e1 ^) H- |, L4 y# L$ x* g2 N1 I5 d* l
            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
0 o1 a: j+ k0 Q
. D! b& U# N$ H, w% g, C6 ^7 Z0 y0 ^7 e2 k        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
7 Q9 Y3 w; l4 Y& W2 i2 \        
% J6 d# c% i* E( [7 ?* |        vector<Teamcenter:eepCopyData* > deepCopyData;
+ _" p# h4 M: }7 J, O. n        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
9 l) E9 F1 Q( i% v        
0 `/ c; O$ V) ~' X        pReviseInput->setLogical("performDeepCopy", true, false );) P( g/ B+ S) B; T& M; d. F' _4 ]7 l2 a' x
        8 G5 r+ K4 c# y7 G: M
        tag_t tRev = NULLTAG;& ]. W# n0 f- v( o4 m: l6 [
        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);
2 N, h+ A# a3 w- K# P
3 p- }! ?. B; B/ m* T# W& h        stat = AOM_save_with_extensions(tRev);
, R  m+ R* l/ d        ( j. Q; ?* g  _6 T9 e  s
        char *pszId = NULL;
- I' B) V% ]2 @        stat = WSOM_ask_object_id_string(tRev, &pszId);
3 U9 R. Z, r/ _( F" I        cout << endl << "    Object String: " << pszId << endl << endl;
6 f3 G7 B8 x" \; y' F        
1 S. ?& M) b& G' h0 l! `" t& D        if (pszType) MEM_free(pszType);2 O$ q- W- Q5 {' z& e! h
        if (pszId) MEM_free(pszId);
- E5 d2 A4 Q' i  G% Q  M2 O1 \* Q) q    }3 v, u8 V6 M' r1 @: `8 Q% E6 Z
    catch( const IFail &ex )
3 c  a8 u" ?- d5 P/ Z5 w' j9 k    {
0 b0 J4 v0 ~  y9 {% x# S        logger()->error( ex.ifail(), ex.getMessage());
7 C( O* _6 V3 b( w" y* q        cout << ex.getMessage()  << endl;: B; l7 q$ H# k: F; k( y
        cout << "error " << ex.ifail() << endl;        3 P0 t! p4 N: `( t# v& V1 I; ?& d( Q
    }( y; F' h0 u  f6 q+ \
    const char* syslog_path;
: T) h  `% n  y0 k    syslog_path = EMH_ask_system_log();% D4 D, {" D2 j( i: }2 U/ v+ P+ ]
    cout << endl << endl;
; A+ D2 u. y9 M1 S    cout << syslog_path << endl;
& p. J- u" T7 [, E. S# }* D5 w* r2 t7 S4 I+ l- b
    stat = ITK_exit_module(FALSE);                                        ( P% K1 E. e% ?' X
    return ITK_ok;% t: \: L2 t; L4 ^2 Y0 P
}[/mw_shl_code]' T' G6 J7 o" p  p1 @3 X0 Z( ^, c, Z
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了