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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x

0 \6 X+ K- V9 V8 H, BTeamcenter二次开发源码分享: Revise 版本 升级版本方法  m1 v7 n4 `) q8 a& L
: w- V" D' r3 j+ L9 B2 v7 ^7 O

) b9 `6 o, h' j/ b[mw_shl_code=cpp,true]#include <TC/emh.h>% m" ~3 o9 l, l: d
#include <tc/tc.h>
8 e& x8 P7 R" ~' \: i9 ^9 d#include <tc/tc_startup.h>
  {( `: E: ?1 f: J2 X#include <tccore/aom.h>
2 c1 E+ \4 \2 N1 g8 ^; w& K#include <tccore/item.h># j* }9 I" @- S9 K; k; k

# X1 S0 }# o6 p4 V$ N- D! h9 m#include <iostream>0 `3 u" R' o* Q: J7 I
#include <vector>
  {: E6 q5 B4 F9 f& a  \#include <base_utils/IFail.hxx>* M  p3 h  n9 \' e2 T: X- a
#include <base_utils/ScopedSmPtr.hxx>
0 F5 R& N0 L- J3 w#include <base_utils/TcResultStatus.hxx>8 k5 t. l" i7 H" @4 N: e$ o' c
#include <metaframework/BusinessObjectRegistry.hxx>" y  `& O" G+ C! C" y4 m
#include <metaframework/ReviseInput.hxx># `7 _* a9 X9 a- `, I$ ]
#include <mld/logging/TcMainLogger.hxx>
0 m. M5 H& U3 ^" h#include <tccore/ItemRevision.hxx>
( a' B* e7 o$ L5 h2 I! r#include <metaframework/BusinessObjectRef.hxx>; c5 K( a. x7 l, ?: J
#include <metaframework/BusinessObjectRegistry.hxx>, n" f% z" I" [  s& z
#include <metaframework/ReviseInput.hxx>
. Y) u9 {( j) w" P3 ^/ Z
0 C5 j; V3 k4 o5 jusing namespace std;( ?3 ^1 q: f9 i/ Y6 d1 T5 I8 I0 m
using namespace Teamcenter;, }$ d8 Y+ D% M6 |
using Teamcenter::Main::logger;
) S4 p5 f, i! T, ~% Z5 q) I( ~- V5 {. H+ Y& E! w) [
int ITK_user_main(int argc, char* argv[])
& g; z- E8 n0 ~. u0 ~{
% a# f( V" ?- r# E3 c9 F  v    int ifail = ITK_ok;0 @( ^! c+ a) R
    ResultStatus stat;
1 @: ^7 m  |' v9 a% W    try
( W5 w  m; C/ ]" X! K0 Y# X( `0 m    {8 M* I' h% Y! E( ^+ h8 g6 \
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         0 o! L, Z  U( d* K8 ^9 r# l
        stat = ITK_auto_login();                                          ( T1 {% h* @2 L$ u8 S: F/ P
        stat = ITK_set_journalling(TRUE);$ t6 R3 V) H( E8 ?# F# u/ h
        ; i* k4 u# g2 ^" b1 w. h2 Y7 F
        char item_id[ITEM_id_size_c +1] = "0000000";+ i, v# ~% ]; L. l" y8 Z* c
        char *i = ITK_ask_cli_argument("-i=");) C4 A! |+ t$ a6 T7 ?8 f
        
0 y5 d4 f6 K2 \9 V5 {  ~0 A+ e        if (i != NULL) strcpy(item_id, i);+ ~& A6 e! s2 Z* o; l5 M/ f3 \5 ~$ V
        cout << endl << "    ID: " << item_id << endl << endl;- M7 _# \7 W) y: _5 y+ y) M6 J" {( `& t: |
        0 H* _# ]! N/ ^
        tag_t tItem = NULLTAG;
! \8 f8 H  T6 l        stat = ITEM_find_item(item_id, &tItem);2 S) A5 r1 _1 ~# Q/ |( S

2 ?; z1 E2 c- }6 G& f) W2 I# n        tag_t tLatestRev = NULLTAG;
5 ]1 M. Y- q; e9 a. U7 M2 M        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); 0 H7 a: E3 y. f' H! s. C( B

- p, Q6 R( S+ g! a5 ~        char *pszType = NULL;) q4 L, O2 ?2 p3 G2 p2 r3 A
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
: I; j* D% a& n: u% V* k  X& s5 V5 N  S6 k; W+ G' u+ u
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
7 T5 o) z: U7 Z& g& l$ c( A        + X3 O& q$ c/ M4 D# o2 p
        string revOp = "Revise";
) E! f+ ^1 X# D0 X& s, ^        ReviseInput* pReviseInput =
; c+ ^+ x1 L$ u9 M) H            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
+ t. w" g0 Z( D- \  L0 [6 t+ T- V$ t  M8 p0 o) R
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
- Z) w, ]/ D3 P7 p5 ^2 c        
2 o8 n1 h2 Q% W* G        vector<Teamcenter:eepCopyData* > deepCopyData;; ]( z; H# _( i1 }* P1 O
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);3 F9 r6 L. z% L3 `: }1 X6 D$ T
        . H' n5 ?; X* V& ~
        pReviseInput->setLogical("performDeepCopy", true, false );/ _  C8 }# C% f6 A) o
        
$ T2 E, ?, S7 Y4 P) E% k        tag_t tRev = NULLTAG;
' d- j4 U  Q# Q$ L/ ]* S        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);
0 A* M5 q; J' o6 @4 g" U& _5 g* g, f$ L) B
        stat = AOM_save_with_extensions(tRev);' T+ o. L2 i  w+ J8 v, C. M
        0 w( w: u2 E% _5 S3 i
        char *pszId = NULL;
* I" E* I$ Z0 R* Q        stat = WSOM_ask_object_id_string(tRev, &pszId);+ Y  ?9 a+ Y7 @* Y% J2 S9 o
        cout << endl << "    Object String: " << pszId << endl << endl;
0 r5 l9 b9 P4 l& S- l+ k        
+ \+ {( t% `% X) v% z2 s        if (pszType) MEM_free(pszType);% M( J9 ^" g8 z5 D' v/ ^6 {& z
        if (pszId) MEM_free(pszId); & p7 c. l$ _7 x  b
    }
7 h# A5 a* o3 ^  k( e8 T    catch( const IFail &ex )
9 B+ d! p5 U5 b  b: v    {
2 M4 o, s2 R5 X        logger()->error( ex.ifail(), ex.getMessage());- n5 ~2 Y( A4 \8 d3 H6 e% B$ |
        cout << ex.getMessage()  << endl;
+ q2 l$ e% ^/ h  D* Y! s        cout << "error " << ex.ifail() << endl;        7 _$ D& }0 a9 C) {+ y
    }) A8 g" E$ t& l0 B! D
    const char* syslog_path;
/ _/ ?# [# Z) B4 W    syslog_path = EMH_ask_system_log();& c/ \5 @2 ~2 H& z: {+ }
    cout << endl << endl;
4 x9 Q& p0 o! P# {' u: T# f    cout << syslog_path << endl;
. H4 r# Y/ k/ o" S& \7 f* a1 m
+ |6 f3 t5 \7 Q  k9 w4 R    stat = ITK_exit_module(FALSE);                                        0 o8 H0 {- z3 z4 \! ]
    return ITK_ok;
1 a6 t9 k! D9 e0 p1 t}[/mw_shl_code]/ v# u* J' c- w
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了