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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x
. ^  `: I4 S! O2 G3 ~7 }
Teamcenter二次开发源码分享: Revise 版本 升级版本方法
6 X, c( r4 U+ }$ \. v& @8 S* Q5 Z9 {; w4 u2 y; {

6 S3 R; a% l# H2 l% P[mw_shl_code=cpp,true]#include <TC/emh.h>
3 K" T1 Y- k1 T6 k# Q) J#include <tc/tc.h>
! a% m9 B" z. [& [6 \#include <tc/tc_startup.h>  }: @6 n; v- c  `" {
#include <tccore/aom.h>
% I0 y  D% _, l7 a! ]* N. B! m8 H9 H#include <tccore/item.h>; ^7 B4 {) t- N0 R

5 J: s" @3 t, E#include <iostream>
  u7 m' \) R& J; n" P$ F#include <vector>
+ f' V0 d, D, W#include <base_utils/IFail.hxx>( p- I5 P) _8 m  b
#include <base_utils/ScopedSmPtr.hxx>
/ S' y0 Z3 n9 Z! C# z#include <base_utils/TcResultStatus.hxx>4 Q& w$ F* D/ o6 A0 c$ u
#include <metaframework/BusinessObjectRegistry.hxx>
! [4 D# n) v9 Q4 V6 E. q+ b" k#include <metaframework/ReviseInput.hxx>% k1 G' J4 Q! U+ I
#include <mld/logging/TcMainLogger.hxx>
, i1 w* E; q9 @#include <tccore/ItemRevision.hxx>( R, N2 {7 |. m
#include <metaframework/BusinessObjectRef.hxx>
/ [8 |) x2 _' d* s#include <metaframework/BusinessObjectRegistry.hxx>* j' c5 `3 W; U
#include <metaframework/ReviseInput.hxx>
8 w- w! y* l" K% R( s( N$ C1 O: U% O
using namespace std;
$ t" o* o( c9 j4 }using namespace Teamcenter;' X! |: i. s$ e  v9 `
using Teamcenter::Main::logger;. H" s9 ~! p( ]! W+ x2 m/ Y( q
( B8 t6 G8 l- d
int ITK_user_main(int argc, char* argv[])3 p  \" j# M& G
{
% V: Q' a% F$ s% \' ?7 {) P    int ifail = ITK_ok;9 f1 Q! g- m# |& O- o+ z* t! C
    ResultStatus stat;
! ?9 W" A8 V, R# y8 v: F5 A4 ]    try2 T) V6 D* |* K8 t7 I
    {: b+ Z& k$ ^# D4 R
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         / }3 C. U3 a* N' Y2 h! s
        stat = ITK_auto_login();                                          
- g2 k, D( F( C7 V        stat = ITK_set_journalling(TRUE);
9 M6 ?( ^  T& s        " [; [+ v' ^* u- a5 t
        char item_id[ITEM_id_size_c +1] = "0000000";
/ b5 N% A) Q% ?: j9 S: B        char *i = ITK_ask_cli_argument("-i=");
6 V' a) K5 h: _5 @8 s5 N        
7 h% ]; B3 S/ S" h5 }        if (i != NULL) strcpy(item_id, i);
$ r$ y* N- p: _        cout << endl << "    ID: " << item_id << endl << endl;
5 W4 _0 P* m# S$ `3 D        
8 d8 U5 e2 e1 O1 u9 I+ F- b: _        tag_t tItem = NULLTAG;
4 L. q* {+ z+ I9 q1 n. u! ]        stat = ITEM_find_item(item_id, &tItem);
* Q1 _! l/ ?0 A& p( O
9 f, D& \1 B, c- }, ~- x7 i        tag_t tLatestRev = NULLTAG;
+ _4 y2 R% P$ j! c- m        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); . C# W  b8 {7 U
9 a8 S# @  p2 ~* ?- f7 s
        char *pszType = NULL;
  f- j) \/ S4 o4 ^  q        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
9 K( _- d6 `, S5 _+ [+ o
0 E0 o$ h! V  r9 V. d        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
" U3 V4 x6 o' K: [& c( g& B        5 F8 ?4 {, Q* W4 i. g
        string revOp = "Revise";( ]! P8 j" k$ j' e
        ReviseInput* pReviseInput =
! }3 E$ W( l( ^) l6 i2 G9 i            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));- {& L$ s& Q- Q' q9 o! g' D
% n* j. P- W9 D$ p2 c* d! U
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);& ^% n, f  J! O3 [" F  z+ S! b  V
        
. p3 R0 X* b6 Y/ m! Y9 e) R        vector<Teamcenter:eepCopyData* > deepCopyData;" P* e! {2 s8 G2 Q8 f
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
1 ]* D$ t2 g$ z+ Q        $ c6 q! x) o5 e' ]: l+ l
        pReviseInput->setLogical("performDeepCopy", true, false );
9 O8 `7 u, t( o/ M* O9 ^; Z        
. m. N) D$ u. I5 m) y  k        tag_t tRev = NULLTAG;5 S2 W# }' p* ], s& W& k$ y
        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);" J, L* G: i8 c# a3 P

. q: H6 T# ~0 Z8 q        stat = AOM_save_with_extensions(tRev);
5 m6 R; p8 K1 s$ {        # h$ b' H1 P# d1 ~! }6 J+ g
        char *pszId = NULL;
" _) x  T8 J2 e        stat = WSOM_ask_object_id_string(tRev, &pszId);
* U& f- L+ C9 Z7 K: J6 c! ^1 {        cout << endl << "    Object String: " << pszId << endl << endl;" k' }3 s4 F, G: F
        ! |, H6 G! J% }- |$ M, E
        if (pszType) MEM_free(pszType);+ ]8 g' r8 G2 ~9 H; G7 o3 ?
        if (pszId) MEM_free(pszId);
! O+ M# K3 w3 d; X, p    }: y4 O; g. X3 u. P0 q+ n- B
    catch( const IFail &ex )/ g) E7 O* ~: J& `
    {" {; l1 f9 `, O  C- C# E! X
        logger()->error( ex.ifail(), ex.getMessage());
% C: s1 a  \4 j) H        cout << ex.getMessage()  << endl;
. G6 J' ^9 \  K3 C/ {6 v' c8 i        cout << "error " << ex.ifail() << endl;        2 [4 u9 e: W  u9 z* X
    }
! r6 f) A( }9 G4 z. K    const char* syslog_path;, S+ N/ \4 ?( s: t1 k7 u3 L5 z+ t
    syslog_path = EMH_ask_system_log();
6 Z  G1 [3 K2 a: ?    cout << endl << endl;" y4 ?) ^' A7 I; ?
    cout << syslog_path << endl;+ e/ _! b; E6 Y2 A9 L8 D

: c5 m/ _1 M" V  ^- G    stat = ITK_exit_module(FALSE);                                       
0 `% @( y# h( G4 D' R    return ITK_ok;
6 C3 e/ U! v3 f$ y8 l* C) `: D}[/mw_shl_code]  m' n2 V* [( `) V% x2 b* 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二次开发专题模块培训报名开始啦

    我知道了