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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x

# {$ |. }6 G4 Q5 i, ZTeamcenter二次开发源码分享: Revise 版本 升级版本方法
' I7 e; o2 F. W1 M- P: Q. h( c* x- d% W3 t  V7 m  @! U

4 N5 m% A. O6 |" R5 Q[mw_shl_code=cpp,true]#include <TC/emh.h>
" g3 P7 C) x. N8 ~9 `#include <tc/tc.h>/ t' X( E  q& t& @3 ^* X
#include <tc/tc_startup.h>2 A7 Z/ U/ R& g  _
#include <tccore/aom.h>* v+ {7 S- n0 U( ]+ O  r
#include <tccore/item.h>* d$ l8 H3 h' m, i6 h6 z

' s5 U" e$ @; @2 f* v/ ]#include <iostream>1 F3 c4 ~% o( ?, h9 \* J# @
#include <vector>
2 m  H# }+ r5 h6 p#include <base_utils/IFail.hxx>
7 z$ r5 r- N- ~#include <base_utils/ScopedSmPtr.hxx>4 T! t7 S7 w8 U! B
#include <base_utils/TcResultStatus.hxx>& a+ T4 z7 h, l! O
#include <metaframework/BusinessObjectRegistry.hxx>
# p4 v2 a' Z, ^/ j5 Q#include <metaframework/ReviseInput.hxx>$ r( b' w" z9 S5 \
#include <mld/logging/TcMainLogger.hxx>
) E( h) ^% m' |% M# \7 l#include <tccore/ItemRevision.hxx>
( C1 o: u. Z# m) u#include <metaframework/BusinessObjectRef.hxx>
) d$ d) L& P# @% T7 H, q: o#include <metaframework/BusinessObjectRegistry.hxx>
) |( N& R) Q9 e" `#include <metaframework/ReviseInput.hxx>
; _2 p* g1 R' p* a) Y
+ j: q: m; s: @% `/ I6 V6 ausing namespace std;) i3 C2 v- Y! V& I1 {4 z7 S
using namespace Teamcenter;  W- G" L9 \0 A) x! d
using Teamcenter::Main::logger;9 N% L* e) k9 @. ]$ }8 }; h
/ w% S, b! }) z% h2 x# `" u
int ITK_user_main(int argc, char* argv[])
4 y' e/ `6 D) `: X) X{  q( h/ Q8 Q3 B) f
    int ifail = ITK_ok;/ u6 j8 H# y+ w& ?
    ResultStatus stat;
% \$ {! _4 H. E$ C( S) T: I1 ]% O    try% B) |! M% j9 W; l
    {
# N1 z) r5 G& u) {9 }        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         
% `# D% r" x+ d# u# K' u  ~6 z        stat = ITK_auto_login();                                          
( z) E5 |8 Z+ [        stat = ITK_set_journalling(TRUE);
. M( Q3 l) |$ B6 h) f- {) |! l        $ i! c, d  u1 y" S; x
        char item_id[ITEM_id_size_c +1] = "0000000";( T! ]+ |0 x, z/ u+ r
        char *i = ITK_ask_cli_argument("-i=");4 H5 P/ r0 w) G, f6 i
        
. q" _6 C  I2 N- C' d, c- Q- x/ V        if (i != NULL) strcpy(item_id, i);7 ?1 r. H. @( W0 |: _8 [
        cout << endl << "    ID: " << item_id << endl << endl;
& q3 w. |5 Z* _$ ~* G        9 v9 Z! a! S2 K, C
        tag_t tItem = NULLTAG;
: o4 s6 o9 b1 M6 E7 V9 S" w        stat = ITEM_find_item(item_id, &tItem);
2 f- z' d, L$ A* G% G1 b8 z! C
4 b5 S# h3 f5 \% R. o        tag_t tLatestRev = NULLTAG;% R7 d7 t, V# v1 M6 D& g9 {+ T- k
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
! l$ z, @2 a- }# o4 s+ Y' l, w% p5 e$ P9 n/ w: ^5 i$ S
        char *pszType = NULL;
7 e' A" }3 q+ ?5 Z- h. z+ w        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
; T7 H- {/ ^4 d0 W: E
, P5 \( n) d: i- ]        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
& x, Q. J$ O" J% }5 h) H3 B: i  b        9 `3 t$ ?; r9 F; S! f- x, Y0 G0 Y3 B
        string revOp = "Revise";
9 `$ O+ g2 |9 ]! H        ReviseInput* pReviseInput = 2 {9 }6 _. m/ y1 q, y9 K
            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));0 ~! U  _. ?5 \

. M3 q' [( a# B" l3 ~        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
0 j: m$ p. Q3 S: j        7 F# _/ i  t. ]* Y5 y, w4 O# U
        vector<Teamcenter:eepCopyData* > deepCopyData;3 k' C7 @! R, J% q8 v& i9 k6 O, f& b
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
* y/ @' y) G& l7 u        $ O' [6 Z1 O5 s0 o# s, M
        pReviseInput->setLogical("performDeepCopy", true, false );9 u3 y. o! S* n2 t/ l+ d( V- ~
        ( m5 K4 d" \' v1 Q+ K6 d; O0 y
        tag_t tRev = NULLTAG;# H# N) k9 S' g
        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);. J! R' w' C( z/ Z
, ~( O; k7 e+ a" l( Z: E4 @
        stat = AOM_save_with_extensions(tRev);( o( v. b) R7 b2 u; L/ @9 Q! |
        . \% ?; R' z, a0 r4 d. {$ @
        char *pszId = NULL;' ^" P; W, k: s7 O; }  Q* p
        stat = WSOM_ask_object_id_string(tRev, &pszId);
' G+ o4 l' r! b; e. T, c) j. ]# ~        cout << endl << "    Object String: " << pszId << endl << endl;
) _- ~) u9 @+ z  H) P        & z9 ^4 f: z: d9 I
        if (pszType) MEM_free(pszType);+ K6 s& J8 R- _2 ^8 ~1 C$ c
        if (pszId) MEM_free(pszId);
- w+ V1 C! J- Y% N. D6 y    }
, D# \7 D& Y4 i/ N/ F4 Y    catch( const IFail &ex )
- Q4 `* d/ y8 @6 F$ O: X    {
/ z' q/ d2 k. u4 [( S9 K        logger()->error( ex.ifail(), ex.getMessage());$ l/ Y0 n4 m) E
        cout << ex.getMessage()  << endl;9 W* J' X: c4 F  R! N
        cout << "error " << ex.ifail() << endl;        
% E: N9 a( W: f* m* ]    }- v" a1 F4 ]# l! l" ]
    const char* syslog_path;
8 P9 J) c9 x: w    syslog_path = EMH_ask_system_log();. j, F6 v# ~3 v" j8 V
    cout << endl << endl;9 B3 n) \$ ^+ e: e, t
    cout << syslog_path << endl;6 C* h. |5 s7 `0 I- _

2 [" [% R) I9 F/ B9 K+ I    stat = ITK_exit_module(FALSE);                                        5 \) `3 a7 H! }- t
    return ITK_ok;# z! _9 D9 Y" I& \8 t8 a, _
}[/mw_shl_code]
4 E8 z& m- b$ j6 f1 d& u3 M7 J
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了