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

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

[复制链接]

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

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

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

x
* s2 }0 V: I. E3 v: U- t. ?
Teamcenter二次开发源码分享: Revise 版本 升级版本方法( q* [9 P5 N9 j) v" J% K0 ^

' c; L1 i* H( |2 ]4 y+ N; h( a" G  m, m
[mw_shl_code=cpp,true]#include <TC/emh.h>
7 O" j: i; i7 f3 v( @( N# w0 @% R& L#include <tc/tc.h>
9 [+ E. e- ^. s7 v  H6 g#include <tc/tc_startup.h>8 a; H3 e1 a: I) O: {
#include <tccore/aom.h>4 a( L1 ~. X$ W  h) H
#include <tccore/item.h>  @* x6 U$ x; U

" k. \1 Z* Y! c4 `4 U$ M( }' f# J, r. q' j4 D#include <iostream>3 l1 Q/ e7 G+ ]( M) l
#include <vector>$ O: V" {( |3 M. M" `
#include <base_utils/IFail.hxx>: A7 y0 n. j4 }, i! M' y9 g
#include <base_utils/ScopedSmPtr.hxx>
3 M, P% {/ a/ S5 `: m* O* g#include <base_utils/TcResultStatus.hxx>
7 d- W5 w8 i/ f$ e8 A% m% f#include <metaframework/BusinessObjectRegistry.hxx>4 V# H6 ?7 D5 K2 Y# ]. [$ E
#include <metaframework/ReviseInput.hxx>
/ o% E- A  X$ R; H$ V# n3 E#include <mld/logging/TcMainLogger.hxx>
0 _* b) _7 `4 O#include <tccore/ItemRevision.hxx>& g& L; C5 W) C* L* `9 K
#include <metaframework/BusinessObjectRef.hxx>
' [5 _6 u6 `  n8 x$ G# H#include <metaframework/BusinessObjectRegistry.hxx>& C. K/ i& v- {& e3 w1 r' H
#include <metaframework/ReviseInput.hxx>
2 ~' [: z( z/ J/ g% A
. ~- F. c' h8 r; m0 qusing namespace std;
7 M1 L& R& s. P2 ~6 ?: [+ Kusing namespace Teamcenter;: o9 r8 N( G' ]( _
using Teamcenter::Main::logger;
, i  X4 L5 M5 Q8 c1 f, L8 C# k& u& d* Q( R2 f. C. w; v
int ITK_user_main(int argc, char* argv[])5 s. \$ u5 k# `
{
+ `1 k0 j0 r+ V% }( K9 U, @$ X    int ifail = ITK_ok;; ^# M4 e" ~: Z$ n* o+ R& B. [  J* e
    ResultStatus stat;8 R: p* s* |; x6 l
    try9 |. J' w' M* G, @* B5 v
    {2 }5 y$ O% t! ?$ F  |3 i
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         
* ~5 O& K- Z) I; @4 n0 a        stat = ITK_auto_login();                                          : r; @* ~) h4 j, v9 W& l
        stat = ITK_set_journalling(TRUE);2 B+ d) O3 o# q, v( K# T2 _
        % w2 L1 \0 t- j
        char item_id[ITEM_id_size_c +1] = "0000000";
% m" i: Y2 k' t. Y4 U        char *i = ITK_ask_cli_argument("-i=");4 O* |% k7 M/ q' d
        
- o/ Y7 Z+ P/ @* A        if (i != NULL) strcpy(item_id, i);- {0 V4 `! d8 ^( v* I8 l* d
        cout << endl << "    ID: " << item_id << endl << endl;
4 N. Y1 ?8 X0 B1 C5 d        8 R0 x3 p3 n1 z  X4 J
        tag_t tItem = NULLTAG;" S( C" ^% r* ^
        stat = ITEM_find_item(item_id, &tItem);
  H; r" N% ]! T$ I5 ]% f; L
2 x3 \6 v# L7 C4 n/ R. U        tag_t tLatestRev = NULLTAG;! S3 u  W' _6 M2 a9 d/ f7 S9 V
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); 4 P( g! |" q' b* d3 Q

. {0 {( E" @( e( [% w7 p6 _- |        char *pszType = NULL;( [, E+ p* f0 l( h+ D
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
+ H1 {7 y" h5 @' v  c
( a7 H1 o8 o  P        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
3 @! |7 B+ }. V. ~9 v! }% Z        8 y6 S% e& Q1 W3 B
        string revOp = "Revise";9 G% Z. }4 l' o* n5 B3 ]
        ReviseInput* pReviseInput =
% f6 o8 M: N4 `% i2 V            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));# ?8 I, D( {+ s7 P: ]

. W8 W; k: [0 @; J2 \        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);. b- U2 v0 V1 u& Y
        % m9 g8 s8 }3 w1 P+ T' t
        vector<Teamcenter:eepCopyData* > deepCopyData;  M  a/ v0 s+ e# j
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
; h5 e: g2 K" [' z. [        
5 e% h+ P! z* D, x+ G6 H        pReviseInput->setLogical("performDeepCopy", true, false );
/ t& |& _  P. v* J; `. L5 q! v        
% J7 l$ o! i5 t- K" u        tag_t tRev = NULLTAG;- f  t$ }4 ]0 @
        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);
. V. t! f, a' Y
, p1 M9 t; ~4 A. N0 q        stat = AOM_save_with_extensions(tRev);2 `/ ^9 S. J# ?: D
        
9 K$ A1 I; J# s" H$ V5 t        char *pszId = NULL;
" M- J( s8 M0 n+ i5 k4 J4 U        stat = WSOM_ask_object_id_string(tRev, &pszId);* J* a$ y$ h2 j
        cout << endl << "    Object String: " << pszId << endl << endl;
. @" g4 Y! e/ a% O        ) t2 L" z3 E: Y
        if (pszType) MEM_free(pszType);
' G7 T% b; D. n! G: P8 I( o        if (pszId) MEM_free(pszId); / [* }* J7 k; P+ |* c
    }
7 L% H* A0 @3 ^    catch( const IFail &ex )% z6 z& w# W7 U0 e: |2 r7 F
    {
; A& ]2 z# {/ M9 L0 a        logger()->error( ex.ifail(), ex.getMessage());
7 h% Q3 Y' m! m        cout << ex.getMessage()  << endl;% X6 N' ~) _# ?$ Z9 `
        cout << "error " << ex.ifail() << endl;        
& [' V" S- m( s    }
8 `6 C) v; w9 F  \3 E( u% [& A    const char* syslog_path;5 M# I0 Q" y) W' @% l
    syslog_path = EMH_ask_system_log();8 m$ h# T0 B/ l5 ^1 G2 e1 J9 _
    cout << endl << endl;  P: W% m" \6 c$ j' P# u- n
    cout << syslog_path << endl;" F" U! l- x0 c0 Y% `

7 A2 e! f1 d8 s7 j; U    stat = ITK_exit_module(FALSE);                                       
/ S- F& L0 U4 p: P# E/ y    return ITK_ok;/ V$ O9 C7 `- s, j3 P& F: t6 t
}[/mw_shl_code]4 J- e6 C1 C  }6 V3 ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了