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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x

* L$ X8 `8 Z$ M/ W: STeamcenter二次开发源码分享: Revise 版本 升级版本方法
# i* _! t# k& @' V4 ]. T# R( x- Y( H- |
; \# n/ ^+ }" M7 u( G
[mw_shl_code=cpp,true]#include <TC/emh.h>. _( H2 e9 W3 a" R% C" D! }
#include <tc/tc.h>5 O4 z( C" a% [3 @& S7 H5 i
#include <tc/tc_startup.h>
. M# Q, Q5 w6 t  t9 {: Y#include <tccore/aom.h>! g" w. ^0 C' d& n, v7 C
#include <tccore/item.h>
# _- s: {* c$ }( d7 J! E6 X: r8 n6 b
#include <iostream>
5 F1 H" D" ~* S. t( ]9 G# _#include <vector>( G% {9 u' A- I. |7 v7 O
#include <base_utils/IFail.hxx>
5 L+ e% ?! b; m# k2 w# ~#include <base_utils/ScopedSmPtr.hxx>4 S8 w' Y( T5 G3 e7 v8 y9 z
#include <base_utils/TcResultStatus.hxx>! {# b; c' t2 }% C5 T/ @* Y
#include <metaframework/BusinessObjectRegistry.hxx>
# n$ g, G* E/ _0 _" F; y#include <metaframework/ReviseInput.hxx>
* V* W3 y/ @7 s: L3 ~: U) Q0 [3 J: G+ S#include <mld/logging/TcMainLogger.hxx>
1 G2 r2 K' i6 r% l7 ?#include <tccore/ItemRevision.hxx>$ a2 G% a' r7 A9 L9 k
#include <metaframework/BusinessObjectRef.hxx>
; B0 z+ F5 Z0 A! {, S& w#include <metaframework/BusinessObjectRegistry.hxx>
0 k3 Z" K/ P" O' ?#include <metaframework/ReviseInput.hxx>
4 F1 J  V1 e& x6 m2 @% _' B0 ?* `0 O- }  D/ W
using namespace std;. v+ V  Z& Z$ {. m9 A( V
using namespace Teamcenter;
" F- j6 _5 A' \/ ~using Teamcenter::Main::logger;
* y! n3 P: Y% V  p& d
% D! H  v& Y( I; T, w3 @# C- Tint ITK_user_main(int argc, char* argv[])! x8 K' K6 Q: Z% ]2 ^( G
{# Q' `' g/ T5 e4 [; S6 {; Y
    int ifail = ITK_ok;
' S" w( k8 x8 X  ~) P    ResultStatus stat;3 @$ s: v. _  f
    try
% y9 s& Z. s( X$ @0 M    {7 O$ S5 `& F1 W; c( ]5 ]" s# X
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         # I9 q: [/ c  M! i
        stat = ITK_auto_login();                                          5 v2 c8 n9 W1 y0 p* P, @# n( M
        stat = ITK_set_journalling(TRUE);
& O/ b/ m# d2 _' e9 v) R        ) a. {3 U( W9 F0 Y$ e" x% F& Y
        char item_id[ITEM_id_size_c +1] = "0000000";
' @% J. S  M! f5 ?9 K        char *i = ITK_ask_cli_argument("-i=");* G5 u2 n/ H; I) s. s+ r
        : {' e' W6 Q6 Q5 r  _" N. i. K8 v. j
        if (i != NULL) strcpy(item_id, i);/ [( r- j( L0 m: W" c' t6 K
        cout << endl << "    ID: " << item_id << endl << endl;
/ r5 E6 }* r9 |. J        $ F9 X/ E5 i5 ?8 P
        tag_t tItem = NULLTAG;5 o1 {+ k2 y8 F1 S) U
        stat = ITEM_find_item(item_id, &tItem);. r) Y" M4 ^5 ]# L+ q
  w1 T1 ?0 q0 a6 K, ~6 J
        tag_t tLatestRev = NULLTAG;
+ v3 }. m/ q7 |3 }1 q; l0 p/ M        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
- k0 R6 M) @% v% L
& g, ^; Y( Q% j0 v) S4 f        char *pszType = NULL;( j6 e* }( S) b" d
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);% K; {) L$ n) o+ J+ o7 F

8 |/ Y" X5 k* I        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();5 j5 K! d4 \, a6 v
        
6 o' X3 x/ @/ [: i        string revOp = "Revise";
- {# Y& {) J& U  u( O2 \        ReviseInput* pReviseInput = : |% F4 s' s( }! `, T* d
            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
6 c' q# L+ l3 u5 D7 x# a, x- ?: V' k7 h: T7 ^
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
8 C1 C5 s- \  Y- t+ o( p) z- F, G. d        . L* {- X# N% k- l6 l" W2 |
        vector<Teamcenter:eepCopyData* > deepCopyData;* j! l. q' j' }) Z. k
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
- M1 `% L! z% A8 }# V/ ~        $ x# h1 C7 E9 `/ f( D
        pReviseInput->setLogical("performDeepCopy", true, false );+ d7 e) r  S# k8 |! h5 b1 a2 I
        
9 F0 `" {7 L) ?' g5 t1 b/ a        tag_t tRev = NULLTAG;
4 J2 h$ n) D2 [; g0 F        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);5 w* L7 d- ~: i9 [& r' I

* p) h4 @, ~; v* h- r, G        stat = AOM_save_with_extensions(tRev);
% _- C! a# h6 {/ B( J        
5 R" u& G' q5 g0 V, g        char *pszId = NULL;8 S3 @: {# K+ f0 r! ?$ l
        stat = WSOM_ask_object_id_string(tRev, &pszId);& V  U# P$ f  g* z7 S0 b* R) Z# z
        cout << endl << "    Object String: " << pszId << endl << endl;$ z; \- M6 O  r/ k  G: a
        - S# z5 P. y2 a' [
        if (pszType) MEM_free(pszType);
1 e) J- h7 S: n5 Y* T5 m! Y3 E- u        if (pszId) MEM_free(pszId);
, }) f: P! ?! h  A' [7 t9 B    }+ J) ~8 a( O: ~! P8 x  Y, N
    catch( const IFail &ex )
6 {* i9 X0 A- j$ H# {    {
- D, M; y; o8 C: r/ e        logger()->error( ex.ifail(), ex.getMessage());1 a$ V% p5 [. V* y' t3 _
        cout << ex.getMessage()  << endl;
! x+ f: p9 K) b, \# [8 b# ?        cout << "error " << ex.ifail() << endl;        / ~6 J+ S5 `. u* k
    }0 a% ]5 `) J. u
    const char* syslog_path;5 O) _% |  V! i1 A# Z
    syslog_path = EMH_ask_system_log();
7 B8 i( n% I, \3 B$ f+ q! C, v- ~    cout << endl << endl;
' e! Y! A! \4 Z  I    cout << syslog_path << endl;
* w3 J/ x; \/ ]. K
2 a  H/ W- L; K    stat = ITK_exit_module(FALSE);                                       
/ E& v! @! R3 G# T9 k+ C8 A, c7 s    return ITK_ok;
. p; h* P: _0 ?2 k+ m" X}[/mw_shl_code]
- @8 c, ?- C* B  X/ K# T* R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了