PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x
2 a* |- n8 a& L6 o# L4 m
Teamcenter二次开发源码分享: Revise 版本 升级版本方法8 ?+ h9 Z$ t4 E! \9 b& {$ ?% e3 }

1 x  H% x4 P0 f. L$ ~: i: ]- P, d& [0 Y6 v6 n/ W# z
[mw_shl_code=cpp,true]#include <TC/emh.h>/ H! ?8 P4 P& s$ }
#include <tc/tc.h>
2 f$ o( x  x  v3 l#include <tc/tc_startup.h>- t/ V' w* ~6 h# z5 z! V
#include <tccore/aom.h>8 n  B- k/ }6 c8 X  e4 f
#include <tccore/item.h>
9 v" C6 a2 R4 d! C% ?% `/ a, u5 |" `/ Y; p3 L" E
#include <iostream>
$ ^, s# f6 Y5 n3 j#include <vector>' X" j% K8 a, i* W4 @
#include <base_utils/IFail.hxx>
, S7 B. }. i. Y9 k, m2 Z#include <base_utils/ScopedSmPtr.hxx>
& U6 T( `' y# h7 T$ @7 [+ I6 W# J' c#include <base_utils/TcResultStatus.hxx>
) y  r* F2 `# C#include <metaframework/BusinessObjectRegistry.hxx>
/ Y1 n# T  G) A4 H" C: c#include <metaframework/ReviseInput.hxx>% Z% N& c6 t! ?1 R3 i  V3 X
#include <mld/logging/TcMainLogger.hxx>
/ [$ q% Q: K& C3 }/ P8 F- t$ j. a4 g#include <tccore/ItemRevision.hxx>$ [9 Q# F+ m; ?; q+ v
#include <metaframework/BusinessObjectRef.hxx>0 G4 E; N% p! q9 Z# j5 \5 b
#include <metaframework/BusinessObjectRegistry.hxx>  v4 V, O, q7 X; p9 y# x5 n" G: i: h8 Q) a
#include <metaframework/ReviseInput.hxx>
, S3 r4 G3 A5 F/ ^* k5 P5 G7 Y: n/ Y" @
using namespace std;1 G! r) z/ Q; f) ^9 ^% Y+ F  O( U0 \
using namespace Teamcenter;; [* z; R6 ^# K5 D, l; r
using Teamcenter::Main::logger;* T. M1 b0 }3 a/ u! [$ T

/ Q3 @$ B) _# O0 ^int ITK_user_main(int argc, char* argv[])1 V! J6 Z5 c9 [1 f0 {
{7 p- L2 ~) D5 ^9 Z* U' C
    int ifail = ITK_ok;. W' v/ x( \! d
    ResultStatus stat;: D  L- c) K6 s0 u+ u% g
    try
1 F" \' m$ a* j+ }    {
2 S$ O0 }% g; M        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         
; r% F  {, F8 J4 a        stat = ITK_auto_login();                                          6 B' ^4 Z! [. @; P5 h
        stat = ITK_set_journalling(TRUE);
, b3 @9 Z  v6 g7 \( T        
% Y2 C% z4 {+ r        char item_id[ITEM_id_size_c +1] = "0000000";
& Y: j3 V! e6 X0 U; {        char *i = ITK_ask_cli_argument("-i=");" ^5 X  {, ^7 _/ q+ A
        
6 ^+ Y# z: k- G5 `7 ~        if (i != NULL) strcpy(item_id, i);
% E& ^0 N8 \% q$ ^0 W        cout << endl << "    ID: " << item_id << endl << endl;: d8 s/ j' w3 r' t% a0 r
        , J, \( o, b, }' t7 x: p, Z
        tag_t tItem = NULLTAG;
- D; S+ l5 |0 p9 s        stat = ITEM_find_item(item_id, &tItem);9 V0 I" u6 _  x  f7 W2 c) z) E
  q1 @% \- ^$ @
        tag_t tLatestRev = NULLTAG;
1 }2 G: k2 e6 ^  F2 v# W/ \8 D9 X        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); . O; k# A' z8 m) C! v

  w. D6 j7 @$ X+ i# @        char *pszType = NULL;
; K3 k1 G2 k/ ~3 f8 G! f$ S        stat = WSOM_ask_object_type2(tLatestRev, &pszType);9 V$ F/ _- c7 x
2 w4 m; [1 C- b
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
0 q  @! h1 a3 f7 O) V7 e8 c5 c        
3 W# }, ?) q* D6 B, y        string revOp = "Revise";6 R' f* c' E' o9 _1 G! h4 B
        ReviseInput* pReviseInput =
6 O7 b2 B( A2 }, D* D0 _# ~            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));6 B) E& ]& ~0 V# ^4 m5 w* X7 n
' T% \; g2 f7 Q7 y" ^: g
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
% j' \5 p3 p5 X+ B1 m0 s/ `+ A0 G        % D" d3 |. ^1 t5 H
        vector<Teamcenter:eepCopyData* > deepCopyData;2 Z6 o9 Q9 A1 p5 y) ?: v
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
: b: o, N2 R. r3 \; q! c        ' f0 O. J. r! T
        pReviseInput->setLogical("performDeepCopy", true, false );: R* e$ N# o# e! G( p) b7 d! M
        
- y/ t4 p% c) c2 B  A) _        tag_t tRev = NULLTAG;
. P2 q( m* d' B0 s' c& z        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);) [& |; |  Y1 S7 ^; S: k9 ?) ?! r

9 s1 g$ Y6 F3 k. n7 n        stat = AOM_save_with_extensions(tRev);
. ~$ Q5 `# G. Q        # M0 f4 |6 y( D  U( q/ ^
        char *pszId = NULL;
. W' s. a# {+ Z$ S2 @" r        stat = WSOM_ask_object_id_string(tRev, &pszId);
7 d: w' x, a: X0 H: O4 q( p0 ~        cout << endl << "    Object String: " << pszId << endl << endl;
; @+ w5 l, _& i/ _: b6 I1 u        & N1 A8 j4 [% F3 p( v& Q3 y
        if (pszType) MEM_free(pszType);
  q' C2 w, `6 x8 Z, c8 H        if (pszId) MEM_free(pszId); 8 [6 ?  |* k* I2 P" D, X: N* z
    }
+ j3 j  q( u! \+ z; R" o    catch( const IFail &ex ); A; d8 ~2 E* Q4 o& I
    {( u9 h/ U8 K' U5 e
        logger()->error( ex.ifail(), ex.getMessage());# x+ q* e4 w2 W3 k# ?
        cout << ex.getMessage()  << endl;
3 {3 o- c$ M- y; P, G7 Y' [. U8 e        cout << "error " << ex.ifail() << endl;        
9 N* w- Z% o+ X& F$ V; F    }$ P& m; ~6 ~( G& S& f
    const char* syslog_path;
5 ]  ]: j0 _+ X7 z    syslog_path = EMH_ask_system_log();
9 ~# Q, ], f; x    cout << endl << endl;5 V- X/ ?. H4 y5 r+ M4 k2 Z9 t$ d
    cout << syslog_path << endl;+ O$ N1 q6 I$ c- n
' s1 }1 s- R; g9 F" B' D9 ^
    stat = ITK_exit_module(FALSE);                                        ! n' x+ q4 T8 v
    return ITK_ok;$ L; L% }& J9 [) M* o, b. ]! r
}[/mw_shl_code], h! }. F. A" V. 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二次开发专题模块培训报名开始啦

    我知道了