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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82172
QQ
发表于 2020-2-8 09:27:38 | 显示全部楼层 |阅读模式

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

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

x

8 T( B" v7 @' ]- [2 UTeamcenter二次开发源码分享: Revise 版本 升级版本方法5 ?/ H5 {( F  L- P- V* x

7 s9 F6 Y1 ^  A0 |& X) V' A8 _8 z% A% O% D
[mw_shl_code=cpp,true]#include <TC/emh.h>$ O; U  m% b, q& i  O; F
#include <tc/tc.h>
% U# M1 g, O0 R) l  N6 b" T#include <tc/tc_startup.h>
4 l" C6 H* q" R# d+ _0 H#include <tccore/aom.h>6 w. `3 y" M, U
#include <tccore/item.h>
6 p, j* r# w) R5 }6 S
+ S. c: p, L1 U. y9 D( J, ^  G#include <iostream>
: i& e2 S8 X) A" U#include <vector>5 M& m5 Z; B( e# c5 P
#include <base_utils/IFail.hxx>
  `4 Y. u1 u. t; N0 N- c#include <base_utils/ScopedSmPtr.hxx>
% [6 Q. U& N, a7 ?3 D4 n4 L" o#include <base_utils/TcResultStatus.hxx>
. V$ ~) D' f* \) |% J2 J. n  Z#include <metaframework/BusinessObjectRegistry.hxx>  B( N. Y7 S6 m# W; s
#include <metaframework/ReviseInput.hxx>
* W3 H0 P9 H) }! B- l( U#include <mld/logging/TcMainLogger.hxx>, M3 u) z6 a, E7 i+ L( F7 `1 b9 s
#include <tccore/ItemRevision.hxx>
8 j! U) O$ ^- N0 ~" P5 j#include <metaframework/BusinessObjectRef.hxx>- c( c/ l' r+ ^
#include <metaframework/BusinessObjectRegistry.hxx>
. @: e  N5 @4 p4 a3 h#include <metaframework/ReviseInput.hxx>* N7 a+ i2 t; R: x  D0 o1 w- i- S
  a9 O; H: ^( l
using namespace std;
. c! i: n. A8 H5 k9 i) z+ Zusing namespace Teamcenter;5 d& M9 ]2 i, f
using Teamcenter::Main::logger;
- c2 E/ E- j+ G% m# U% j
  g  p- ~) `7 Q/ w* yint ITK_user_main(int argc, char* argv[])8 h( W* W* K( a* o5 C! E/ d
{
- W2 i3 E+ i7 ~; h' |- l; |- Z    int ifail = ITK_ok;
9 x1 r  P3 ^: m4 \7 u. O, b    ResultStatus stat;
; v( g2 t2 Y" d" ^& N    try
6 U# K' Y/ C" k/ F+ F, n" T    {
& u! |# H  a+ ~, a        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         . Z2 _+ S  I- ?; H
        stat = ITK_auto_login();                                          
0 V5 }; s; c( X' P  s" y  d        stat = ITK_set_journalling(TRUE);0 _. t- i# g2 y1 L9 ]6 C5 Y
        
6 x. C' ?5 u1 w        char item_id[ITEM_id_size_c +1] = "0000000";" a+ M; a  L1 z+ g1 G
        char *i = ITK_ask_cli_argument("-i=");1 E3 Q- C$ a# g9 H
        6 M* E) y( ?/ A' @. |' ^
        if (i != NULL) strcpy(item_id, i);
# r+ Q8 O; b2 k        cout << endl << "    ID: " << item_id << endl << endl;
8 M+ v& L+ A8 @; E0 F, h        4 k' N& w2 C; o" V$ e
        tag_t tItem = NULLTAG;6 G5 E+ }" H* G! @7 y/ ]
        stat = ITEM_find_item(item_id, &tItem);
1 I) T5 x! f) {( P- u# w. J, j- [: Z/ ^- c7 v
        tag_t tLatestRev = NULLTAG;) F1 c* F3 _2 ~  A: _9 }
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
$ E- h2 ]5 e0 W$ L- f9 l$ T
. B0 e: A! ?' X8 w/ k! l2 ^; @! ]        char *pszType = NULL;
8 }$ y: k! ?3 v3 m, w4 l; X6 w        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
; a' g! m) s1 f1 ?$ \% R/ ?& S
8 \) K3 }4 t$ N  ~: n" H        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
' r4 v7 T+ g4 }" M( w8 g        2 c+ V, I3 x( S: _: |
        string revOp = "Revise";# K6 c# b9 p1 R( {
        ReviseInput* pReviseInput = * `8 n2 ~0 D0 S+ r/ e2 b' K7 v
            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
, o. C! H2 E/ Z% \/ Y; m% T0 n% Z) ?6 o
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
& `1 v0 h8 m* L7 D& u7 O1 ~        ' f: N; ]7 W4 o7 z7 r$ V
        vector<Teamcenter:eepCopyData* > deepCopyData;
. w$ F) u2 B1 K$ J. }        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);3 T/ U$ f0 q2 J
        
+ h. a8 o7 q- C" T        pReviseInput->setLogical("performDeepCopy", true, false );3 k5 b; V- M- _/ o/ S
        ) X. ^9 t, L5 C7 j" r. k5 N
        tag_t tRev = NULLTAG;. F( C8 m# E  k, t. J7 W, N: O
        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);
, J: l# P. H0 p4 _" [7 K7 b
/ h. r8 c) H! [; l; |$ S8 t& ?        stat = AOM_save_with_extensions(tRev);- e& O/ z& Z4 A- f2 W3 ?9 U, i0 c
        ! Y7 o0 X7 V  y4 n2 [, d% I
        char *pszId = NULL;
- j, T$ y! V+ X3 H( v6 |, u        stat = WSOM_ask_object_id_string(tRev, &pszId);
+ u# P! a/ J  ~, ^        cout << endl << "    Object String: " << pszId << endl << endl;' f5 ]4 q" _- t* l: u# {
        
3 d, T: J5 h: A& N* R7 V        if (pszType) MEM_free(pszType);
3 i3 g. r) R7 A        if (pszId) MEM_free(pszId);
) V& S; y! G  |  e    }
& X; I3 U8 d) P" P* a% ?$ Y    catch( const IFail &ex )
1 r3 j, [- \/ C6 d% h& I. ~, J2 C    {* A; u2 G6 N5 k2 }- z
        logger()->error( ex.ifail(), ex.getMessage());' C" `/ a$ k2 X9 d8 W# C( v
        cout << ex.getMessage()  << endl;0 o0 k" T0 l; B. ~
        cout << "error " << ex.ifail() << endl;        
5 y1 {' X1 W1 \4 T4 R    }9 Q- C# r; d- \! J
    const char* syslog_path;6 @# E% E# P7 C! |  {
    syslog_path = EMH_ask_system_log();9 y! n: @: }4 y8 t4 f, o
    cout << endl << endl;
. h7 K9 w! n1 z    cout << syslog_path << endl;# R' {, `$ t% Q
5 V) p$ a0 Q& M' Z4 z3 N2 }
    stat = ITK_exit_module(FALSE);                                       
1 {1 ?- u1 y4 l" l1 S3 h* r    return ITK_ok;
1 Q1 _. A% V- W2 T5 h, ]1 W% a3 B}[/mw_shl_code]7 j: S9 }& V7 t! D3 A
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了