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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x

: h: B; T$ @5 U- j! u( a+ N, DTeamcenter二次开发源码分享: Revise 版本 升级版本方法
+ n& t0 [5 \8 g. M. U
, g" n3 M3 z$ v. V
( B3 @7 n; f7 r- o: J( H  G+ ?: ^[mw_shl_code=cpp,true]#include <TC/emh.h>
8 I! D/ I* y, p( c' P8 u2 p- R#include <tc/tc.h>
- P( B% g' |6 ^" G! x- q#include <tc/tc_startup.h>4 X: l+ t5 l- ^1 q1 `' ]3 B- O
#include <tccore/aom.h>
3 D: l5 A% i; b1 B6 u* D) T#include <tccore/item.h>% ^, j% w4 l9 f3 z2 f4 z/ ^9 [
) G6 V+ J2 _" x' A0 b  A2 ^
#include <iostream>
, N8 i9 i3 s5 P; G6 k; `; @#include <vector>
' d: q* H, y7 Y4 s+ \# N#include <base_utils/IFail.hxx>: ~: ?1 H0 u/ b4 n: ~
#include <base_utils/ScopedSmPtr.hxx>
8 f- W# k9 k/ K# r8 @( l#include <base_utils/TcResultStatus.hxx>* @5 e9 W6 R4 u% S' T3 H& r" R
#include <metaframework/BusinessObjectRegistry.hxx>
0 Y9 S* u; I4 {/ u* a#include <metaframework/ReviseInput.hxx>
+ R# M" v, n$ N, y$ l2 S% u: n; X#include <mld/logging/TcMainLogger.hxx>
* C% w0 [3 g- B5 C3 c/ R( x4 c#include <tccore/ItemRevision.hxx># B- ~7 N6 Q+ W) h) R  l' o6 J9 e
#include <metaframework/BusinessObjectRef.hxx>
+ J% L) E/ X; Y" W- E#include <metaframework/BusinessObjectRegistry.hxx>7 ?3 |. Q. u. J/ `' D8 V
#include <metaframework/ReviseInput.hxx>4 Q$ @5 v$ I' s3 G* I; [/ \

4 \7 @7 J0 }  X1 M& ~- ~  Ousing namespace std;
" D6 X( h$ G$ P7 ~5 a' Cusing namespace Teamcenter;2 s# _1 U9 x- b
using Teamcenter::Main::logger;
# ^! `% M% f, [8 n# Z& }- |5 C# R! o! |/ S  n$ J
int ITK_user_main(int argc, char* argv[])4 B! q8 Q/ Q: |7 B! n1 r
{
$ T* a- ^1 O" D$ ?& ^: G$ v: j    int ifail = ITK_ok;# X, I+ b9 _3 E4 t1 y, g- E: X
    ResultStatus stat;
5 u) c) ~" z- A* e, E& x    try0 }7 o2 ~9 f2 p9 s# z- q4 q; @" P
    {1 n9 V+ t: ^3 m
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         % T! [% @9 J9 a' D
        stat = ITK_auto_login();                                          
: d; ^) U- J2 R9 b5 k        stat = ITK_set_journalling(TRUE);- Z4 _! U8 m3 _  b# e! N
        ! V$ p5 H: n- s. b# p
        char item_id[ITEM_id_size_c +1] = "0000000";
" r; \/ h, \) b        char *i = ITK_ask_cli_argument("-i=");& a0 H0 N* e! ]2 ]1 b
        4 k, F; e& J9 l
        if (i != NULL) strcpy(item_id, i);
( S9 w, ]: b, g( X/ {; T4 j        cout << endl << "    ID: " << item_id << endl << endl;
# o0 a  ]! v% K: b9 ]        
$ K9 _8 Y6 m& a6 f8 n        tag_t tItem = NULLTAG;. {/ w" U( T+ q1 S( o$ r
        stat = ITEM_find_item(item_id, &tItem);
  f1 f8 y  h( i
* [/ h2 m" F, Y# a        tag_t tLatestRev = NULLTAG;( |8 i+ n. w  M( t5 b3 S4 _
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); ) i( Z' z9 z' g9 [9 B! ~4 U

0 x+ C4 ?/ a: x5 \        char *pszType = NULL;  t/ Q% b. k/ i& L- i
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);5 j0 ]( p- r' w3 L7 \. G) ?
0 }1 \6 K6 z/ \) G
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();/ B6 p5 o- t1 ?
        + \/ i  X1 p! ^: Y
        string revOp = "Revise";
8 z8 B$ @- T4 l! N4 k        ReviseInput* pReviseInput =
% z* R+ Z" l9 D) o: H0 G            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
' G* M3 G) \2 {7 r  L2 W9 u  B( ~) \9 z* w+ h' D$ R, F
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
5 a: d, Y4 s" `( C        ' b& d- ?0 h/ Z' ?; U. L
        vector<Teamcenter:eepCopyData* > deepCopyData;. n6 U& Q/ w6 t1 Q7 z0 d
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);( ]9 X! v4 }; ?- O1 r0 g" |, ?
        ) m$ s" `* i( c" E
        pReviseInput->setLogical("performDeepCopy", true, false );
, x3 ?/ V( G- G2 g9 q- G* P        9 \4 X' U1 I4 L+ e
        tag_t tRev = NULLTAG;( A' m% [! p, |3 k- Q8 _8 y
        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);7 f# B" }/ j+ W, g: b

: E6 s# z$ r/ w5 ^/ J! q/ u8 G2 f& ^" `        stat = AOM_save_with_extensions(tRev);
7 ~+ J" w4 l. ~. A        + N! c3 e; i5 i- a7 O
        char *pszId = NULL;
- H2 E6 P9 R5 z        stat = WSOM_ask_object_id_string(tRev, &pszId);3 C6 J8 d7 m$ i
        cout << endl << "    Object String: " << pszId << endl << endl;
. U% [- R% {4 Y        
, h' D7 H, f: ~/ v# j, t) M; ~        if (pszType) MEM_free(pszType);" I- I% z5 _; C6 ?
        if (pszId) MEM_free(pszId);
( c7 g6 I; X) v0 u4 m; f$ g6 r    }
4 J9 Z4 ^$ E; O    catch( const IFail &ex )# X+ }6 N3 [  i9 J  C- @8 G
    {
% w! m; A/ p, ?" _% V        logger()->error( ex.ifail(), ex.getMessage());
9 h  [; q% F0 o1 L        cout << ex.getMessage()  << endl;: H+ S+ E# _- r6 G* o
        cout << "error " << ex.ifail() << endl;        
$ W) Q3 T4 o; c* b$ d. U    }
3 S' i; B8 D9 k/ s+ {    const char* syslog_path;
* R4 m" N/ u" L9 N    syslog_path = EMH_ask_system_log();
% A1 o5 O# |2 C1 D$ l0 s    cout << endl << endl;9 e3 w4 `. R. D7 h3 s! V
    cout << syslog_path << endl;
9 }' R" Z) @0 Q0 v  r
  r% X9 _$ R0 D$ N! M# \$ F" s    stat = ITK_exit_module(FALSE);                                       
1 g* W5 `; ?2 [) N. z    return ITK_ok;6 Q6 E: S2 b3 p( t, g
}[/mw_shl_code]
& S. V( q# R- g3 J7 e% n# S) {
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了