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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x

0 y  |- n6 S1 yTeamcenter二次开发源码分享: Revise 版本 升级版本方法8 M: w5 P3 V* Y& k; x2 d6 m+ M+ T- b

5 G  |; E) Z* j( s, S; L
- P" e7 m: R( \, X; U; d, c$ D[mw_shl_code=cpp,true]#include <TC/emh.h>7 ~# |, c6 ?% F, a
#include <tc/tc.h>
1 R8 B/ n1 {( q' n+ S6 h#include <tc/tc_startup.h>
4 q# L9 T/ M/ h#include <tccore/aom.h>
, ^  v* ~$ H4 }. l; x#include <tccore/item.h>6 Q9 i* T( _: D, m
" x. q% v4 s# K: F
#include <iostream>3 m" y, o3 N. f5 f/ p
#include <vector>
/ ?6 o+ a$ C7 `8 Y, i1 F#include <base_utils/IFail.hxx>9 z) \# w6 J  N
#include <base_utils/ScopedSmPtr.hxx>2 g. ]1 w2 h+ `& f+ W
#include <base_utils/TcResultStatus.hxx>4 d& {; F1 U: U. R: K0 T
#include <metaframework/BusinessObjectRegistry.hxx># o; M( o* ?* m8 H6 w
#include <metaframework/ReviseInput.hxx>
4 n) S1 Z" ]3 p7 ^- r. E/ n#include <mld/logging/TcMainLogger.hxx>( e6 z; o4 E+ m8 J2 x, R$ K
#include <tccore/ItemRevision.hxx>
7 t9 v9 m  C9 c8 C8 I! a9 ^0 ?% V$ l#include <metaframework/BusinessObjectRef.hxx>/ R: u, K- n3 S  R' w- K
#include <metaframework/BusinessObjectRegistry.hxx>
7 C. _# `6 Q; l$ D- K* o#include <metaframework/ReviseInput.hxx>
6 ^3 m. H1 K& u4 w; \' [* Q
3 C" {- p' ]" K: W. Lusing namespace std;" u( a8 t; t% s( `
using namespace Teamcenter;4 M# b: W/ @$ }
using Teamcenter::Main::logger;
' [2 |6 ~' U; ^* |; x- O, r3 g  ~) E6 x; d6 y8 {* F+ z
int ITK_user_main(int argc, char* argv[])% D, c* i: y& Y. b
{
$ f. t. X5 d/ w9 V+ Q    int ifail = ITK_ok;3 n6 L5 v/ {* C4 R! Q8 W
    ResultStatus stat;
* Q6 }. \1 G( [8 f( W$ K, F/ ~6 v    try
! U6 ^4 m  z6 R! \4 D$ j& h2 w    {! l4 {! N6 T7 R
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         ' W& C9 d, j* S3 M+ W! }5 W7 N
        stat = ITK_auto_login();                                          
  @- N, d+ g/ `: [" a        stat = ITK_set_journalling(TRUE);
  ]( L' r/ D6 r4 a, T: F( ?        
# H& d8 I1 {& Y% E+ A        char item_id[ITEM_id_size_c +1] = "0000000";
- l# T' Y- b8 q$ m        char *i = ITK_ask_cli_argument("-i=");
! P( V6 \2 J" m' j7 H        
  Q$ z3 z8 V0 y& N        if (i != NULL) strcpy(item_id, i);9 E/ Y& ?1 ]7 d$ I0 `; [( f: t' }
        cout << endl << "    ID: " << item_id << endl << endl;
& k8 x0 R+ j0 ?4 `: ]        
4 m9 |$ R- n. ^5 `; x6 R  h+ ~        tag_t tItem = NULLTAG;0 k6 X0 E+ B* J, ?) }* T8 a8 |
        stat = ITEM_find_item(item_id, &tItem);
  K5 M5 g: P/ t4 G( C# {9 N/ I0 h$ r# A* c' ~) L
        tag_t tLatestRev = NULLTAG;
# I! Y- Z2 Q$ M3 x7 ?- x        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); ' _0 e  b2 I- {' }2 o( e, U
7 f$ m3 z' Y1 X7 v' F3 q  g; ~' D, [
        char *pszType = NULL;% s8 O4 r% m9 P! |& \9 U
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);" V8 J, e$ c2 o

, \" R  A4 @5 {; ^( n0 {  U* {        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();9 j3 z! h/ O$ d" [: \! [
        
9 `0 l: N: i2 v% R- w, f        string revOp = "Revise";
1 y6 U2 Y  X: e. H+ X! X' n; ]. Z        ReviseInput* pReviseInput =
4 Z  l3 r0 \: r, T  I            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
! c8 H6 y/ v0 X' e
, |0 I5 N7 V% f        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);3 p. Z7 v, F9 G6 w
        
( B$ _- M* I' `- O  V        vector<Teamcenter:eepCopyData* > deepCopyData;/ Q0 S& j' M9 \$ u
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);* E1 j- \1 L7 e- R- C
        
  A; F& Z0 H$ ~) T        pReviseInput->setLogical("performDeepCopy", true, false );5 y, q5 b5 r9 a. ?1 \* t
        ) ?$ o9 J7 Q/ I) Z
        tag_t tRev = NULLTAG;
3 d! c4 k( O4 x- P7 z# s8 W! q0 g2 A        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);
) n; c7 U& g' E- F5 h1 S- V0 ~
: T; m  Y( l& C8 Z" s9 f: ~: x0 \' v        stat = AOM_save_with_extensions(tRev);9 s$ Z/ r# `8 O
        8 {0 I& H* i3 T, |+ `* k' n* F! ^
        char *pszId = NULL;
8 D, W' U7 `. k        stat = WSOM_ask_object_id_string(tRev, &pszId);$ O+ s" R' }: n9 `6 |3 V
        cout << endl << "    Object String: " << pszId << endl << endl;* u3 j2 |2 N9 l0 [+ ?) I6 F2 ]
        / W) h, l1 C! L, v* A
        if (pszType) MEM_free(pszType);
. s6 w( z4 l/ Q- g7 Z        if (pszId) MEM_free(pszId);
) F3 o/ R6 S# E+ i8 A& ~4 l# y    }
, X7 a- j0 A, `) o, l$ h    catch( const IFail &ex )
3 l5 D! ]" z6 l7 U( \" k% d    {1 ?+ C) G6 J+ J/ i: S: [
        logger()->error( ex.ifail(), ex.getMessage());6 i) s  y% J  _' i
        cout << ex.getMessage()  << endl;9 ]4 L- y4 W! x
        cout << "error " << ex.ifail() << endl;        ) @9 ^$ J3 M" D# z/ c
    }
* P9 P( K! K$ V& W5 {/ i7 H    const char* syslog_path;
, _) Q% M+ s' J4 O6 y6 \6 l3 p( V: \5 q    syslog_path = EMH_ask_system_log();
3 C% ?+ I2 E0 _    cout << endl << endl;, ~0 M; ^3 _4 h0 l# I7 d6 _" D8 l
    cout << syslog_path << endl;
. V, {' H1 p  v6 b5 q* X& E! \! k8 ^1 m0 d; \
    stat = ITK_exit_module(FALSE);                                       
8 t/ A) [- ^6 F: n6 [. \    return ITK_ok;
: z& x/ E/ h2 T5 L, Y; w}[/mw_shl_code]
' _/ L) L, m# K: n7 P, i
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了