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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x
9 s$ b8 O' }/ v  `! X
Teamcenter二次开发源码分享: Revise 版本 升级版本方法% V6 Z$ x4 `- j& V. b

; _0 {9 S5 ]2 t6 T
6 `+ v# k1 S# L7 {1 f4 I[mw_shl_code=cpp,true]#include <TC/emh.h>
: |# E$ W2 l6 @3 `#include <tc/tc.h>. m0 ~5 O; Q7 |
#include <tc/tc_startup.h>% s0 \" h; S' n" ], R/ x2 a
#include <tccore/aom.h>, r3 `# U; O- z- A* N4 {4 ~$ G
#include <tccore/item.h>
7 O+ D6 G4 r$ R2 g+ b
& [4 K  j: t8 k3 ~* E! \#include <iostream>5 C0 r1 d' {2 I
#include <vector>' m, Q  x* Y7 {  j* u
#include <base_utils/IFail.hxx>8 X# `$ D5 k' t
#include <base_utils/ScopedSmPtr.hxx>
9 Z1 N  L0 `% D, L* D6 ~! |#include <base_utils/TcResultStatus.hxx>
- }7 ~1 M/ x# G#include <metaframework/BusinessObjectRegistry.hxx>
; D4 \4 H7 {2 m6 F0 G#include <metaframework/ReviseInput.hxx>2 U6 M9 y$ @! o9 Q; J9 v# T7 q
#include <mld/logging/TcMainLogger.hxx>  |$ B( ~! W1 K7 r, \
#include <tccore/ItemRevision.hxx>
: s5 d2 U" e) ^7 O. N/ b#include <metaframework/BusinessObjectRef.hxx># ]2 Z# K" w8 \" _
#include <metaframework/BusinessObjectRegistry.hxx>
, `. X& I  a0 ?8 u% D1 b) h#include <metaframework/ReviseInput.hxx>
. Z& X5 f# P: H5 s- U# c. A0 p" k. i
using namespace std;
' E6 n% a. o/ }7 a5 ]; Xusing namespace Teamcenter;: Y1 Z+ c$ G( Y" S/ i7 ~
using Teamcenter::Main::logger;7 J+ n5 \! _2 q* h

: r' k0 F- S& a& e: e- tint ITK_user_main(int argc, char* argv[])5 E1 ~5 [; p! `2 V/ T, k3 D
{
8 ~- r# S! J0 J    int ifail = ITK_ok;
6 c1 z% @) [- X    ResultStatus stat;, T0 G8 R' w2 S$ Q
    try4 |* d7 ]! B; W# F+ K5 c
    {
+ d& ^' D4 m* X" o        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         
7 s2 `2 _# l3 m# o* r1 T        stat = ITK_auto_login();                                          
' }0 ^, H3 j" U- z( C        stat = ITK_set_journalling(TRUE);
; w  l2 S% i  R2 w4 _$ j: D1 i        / F( m5 _8 {0 q! n! t
        char item_id[ITEM_id_size_c +1] = "0000000";
; E6 r$ g3 `- V7 V) }7 O        char *i = ITK_ask_cli_argument("-i=");
1 v, J4 o% z( g! w7 n% j          B# j' V( P( ]
        if (i != NULL) strcpy(item_id, i);6 \6 Y0 p$ P9 A( P0 Y! X  a2 M+ w* h
        cout << endl << "    ID: " << item_id << endl << endl;
3 h$ [/ ^9 i# m; b! e4 a        ) c! q) f) j- E# S
        tag_t tItem = NULLTAG;
+ f# {6 m& s6 Z        stat = ITEM_find_item(item_id, &tItem);% a5 @1 o; H- m: D( \6 i
7 E( s" x$ l0 R6 i
        tag_t tLatestRev = NULLTAG;0 k3 e8 }% [2 u
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
0 a( a( U; q6 ^& N1 o
5 r' P& e. z1 B+ a& F6 O        char *pszType = NULL;
- b! U1 ]; R1 Z. [  |        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
# T8 ?! |* N& A( {. p' l5 B0 A) [0 u5 r. w7 ~- g% R/ t
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
! R' U( o1 ^! h/ T/ O7 u1 V! {        
1 t, K" z" M' ~( N$ L. l" O        string revOp = "Revise";& [. v( d- A, o: G
        ReviseInput* pReviseInput =
! K' v8 c' Z- w$ J" ^+ X3 m            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));8 K' `* S2 Q% `" I7 U

# v/ A: {6 g* w& o        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);+ ?1 S; e' G5 Z, g
        : y( ~4 ~' i# C( M1 H* [9 b0 e
        vector<Teamcenter:eepCopyData* > deepCopyData;  q: C, k9 z( w" T1 C, R
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);/ F* }+ Q. z% ]* i9 `4 C
        
! M% c0 k: d' R        pReviseInput->setLogical("performDeepCopy", true, false );7 |. k$ S2 b8 ]( F& A! p; V: J1 ?
        ( ]: b0 M1 e, D+ t) J3 ]  }. {" K
        tag_t tRev = NULLTAG;
" S* S3 Z- t' y% q3 D+ A) F4 f( Z        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);" i, Z- d+ l- z) M8 F! L7 B
3 E( s) u2 B& i6 U
        stat = AOM_save_with_extensions(tRev);
! N9 L6 B3 v5 c8 I+ }$ d        8 i- [0 A* e9 ^& ^
        char *pszId = NULL;
9 n9 ?7 D5 t3 Q& H0 b        stat = WSOM_ask_object_id_string(tRev, &pszId);
& Q  ~# B% ?" ~3 W$ @7 L  e; P3 a6 u        cout << endl << "    Object String: " << pszId << endl << endl;
$ a, F+ X" k& r, B$ y        + ?( U9 j6 K# n& o2 L7 I
        if (pszType) MEM_free(pszType);
4 b7 ~( l  d+ H4 c        if (pszId) MEM_free(pszId); $ d; n1 I  m1 r% Q+ Y
    }
; N, c2 _3 x/ |% s" Q7 C    catch( const IFail &ex )
* ?% |) P8 @2 Z7 N& K" K    {4 M; _( ~, n; B9 ?& d
        logger()->error( ex.ifail(), ex.getMessage());  n* x& x, w, q; N
        cout << ex.getMessage()  << endl;
2 s5 z$ k/ c6 E  D9 Y        cout << "error " << ex.ifail() << endl;        
: `9 T; _. ~7 [0 c( _) D    }
$ ^$ J+ ^5 l* Z  t- W: f% ^# {, T    const char* syslog_path;
$ Q! b+ i7 d4 O" ]: r5 `+ q. F% g' c7 `- s    syslog_path = EMH_ask_system_log();
* \: {+ b1 `. M) L4 a    cout << endl << endl;: J! _" U1 [/ i# P
    cout << syslog_path << endl;2 M# T3 t. y2 N1 u$ `' y* X) F
3 q0 \% Y4 D, g& K. F
    stat = ITK_exit_module(FALSE);                                       
5 @1 l4 \! L5 E/ [1 J! P" t    return ITK_ok;  q# {$ r) _* L8 |& P! H/ k8 m
}[/mw_shl_code]
9 N8 w, Q' u3 y- F
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了