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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x
' d* C- \5 |' P/ o9 ?& q0 w. g* n& J
Teamcenter二次开发源码分享: Revise 版本 升级版本方法
7 X3 s+ x; q( I7 p6 \# u) C3 G" M3 b" H' C$ M" v
0 W1 M7 X$ }9 n9 y6 w( J
[mw_shl_code=cpp,true]#include <TC/emh.h>" w. C. y  b9 W8 W
#include <tc/tc.h>
+ A6 Q' f) X- f+ I! J7 O. u7 v3 D1 u1 l#include <tc/tc_startup.h>
; Q, r# }. x* {) Q. }#include <tccore/aom.h>
6 H3 E% o* f+ `5 A0 q% e. t#include <tccore/item.h>
& W$ E  C) h0 c# t3 `$ p
# ]4 T1 X% E, y, r/ H+ B#include <iostream>( v  I$ [+ L9 R0 b. K
#include <vector>
6 h- l. T! ]$ [3 L#include <base_utils/IFail.hxx>; K" |' o6 m: t. \" s5 A$ o
#include <base_utils/ScopedSmPtr.hxx>
- l' \7 z! P/ u0 l#include <base_utils/TcResultStatus.hxx>
1 V# o  Q- E: }" o4 q  j$ \#include <metaframework/BusinessObjectRegistry.hxx>& U/ U# p7 p( T: ~! T
#include <metaframework/ReviseInput.hxx>
% y  y9 _/ r! p: ?#include <mld/logging/TcMainLogger.hxx>5 {! j: H# G" b, m5 @0 v
#include <tccore/ItemRevision.hxx>3 l, e! o) U5 [# d3 c5 b
#include <metaframework/BusinessObjectRef.hxx>
: Z6 Q) S6 l8 x- H4 Z3 V: @- d$ [#include <metaframework/BusinessObjectRegistry.hxx>* h, K$ y  J, O% k# a
#include <metaframework/ReviseInput.hxx>
5 w1 R. |* A* S6 P
9 x$ l. x! o+ m. q9 q' T( J# m0 Dusing namespace std;- U, z6 ^% s9 v) Z  m5 j0 x# Y( X
using namespace Teamcenter;9 Z8 U* B3 i+ H0 O7 U
using Teamcenter::Main::logger;$ O$ P9 w0 ?) i$ w$ U" W

; N; w/ d+ c8 g: Mint ITK_user_main(int argc, char* argv[])
* k5 J8 q! g, A* c( y1 `{' k! s+ @1 E* L5 R
    int ifail = ITK_ok;
) p+ ^2 N2 w/ R    ResultStatus stat;
, N! h3 R5 f9 W  z+ l    try, V. b, g; J- w/ d1 P. W0 o
    {
% ?7 v% p% X: v        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         * C5 o9 f# _- ^8 V3 y' {: _
        stat = ITK_auto_login();                                          6 A* ]. G$ n. y- S" d. R
        stat = ITK_set_journalling(TRUE);0 Q- z9 T- r$ w, B3 \
        # H% a9 x' E# K4 U" Q" b
        char item_id[ITEM_id_size_c +1] = "0000000";
  Q: f$ V9 u0 `        char *i = ITK_ask_cli_argument("-i=");. \  ?( J! @7 l8 Y6 ?% a
        8 G+ o2 H6 ^* H! G: w9 T* s7 ~% L3 g! z. }
        if (i != NULL) strcpy(item_id, i);
" i7 F4 Y) C1 V' l        cout << endl << "    ID: " << item_id << endl << endl;6 u/ ?" `7 g" J4 T$ @+ [, n
        
8 |2 Y- _$ C& J1 i3 q8 V        tag_t tItem = NULLTAG;) F, k9 J; Q5 P. j2 H
        stat = ITEM_find_item(item_id, &tItem);
2 H" Z- i  A9 ?4 `/ D, Q7 z; T& s) X' U. T; p7 q, [! O; z5 ]
        tag_t tLatestRev = NULLTAG;
% P# z; d9 ?6 N2 s' h  T        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); ' a/ Z' M3 c: u; w3 z
% A3 J( E2 ^. i) Y! B" d! {
        char *pszType = NULL;, g; l# P& p  Y, l6 L( B
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
* G* T$ g5 B: V* l. [3 ]; ~9 h% M! V1 r% x0 X& w9 w
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
& h& u5 O& X+ W* N) V% a        
& N" F. t0 Z% t        string revOp = "Revise";+ f, O6 o0 _# E6 l
        ReviseInput* pReviseInput =
: G. R' T5 P# w* P            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));" W. @4 a* C' x& w
* Y* O" ^0 D! B7 q
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);$ s! N5 S* Y* M5 T& X. e
        . l& J, @0 G2 r7 d
        vector<Teamcenter:eepCopyData* > deepCopyData;
( e; H2 u$ g# i  Q: u* ?- |        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);
  V3 L+ n* l) f  G- x6 l        ( x- O9 S; j7 O$ d5 f
        pReviseInput->setLogical("performDeepCopy", true, false );+ P& M6 ?. E) x$ Q- J" m. `! [
        
: `9 d9 k2 t  W$ h) n+ G        tag_t tRev = NULLTAG;
5 m9 X4 Y& ]7 b; y4 v        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);
% y' T" ^  x( m& i9 p) {+ _3 d7 }" o) X8 ~  z2 y# d; h
        stat = AOM_save_with_extensions(tRev);' y+ K( Z5 R# @* ~8 U4 u
        ( E  \! E3 `/ H5 E/ ^
        char *pszId = NULL;" v, I1 ]6 V" M3 `+ h
        stat = WSOM_ask_object_id_string(tRev, &pszId);
0 f; Z4 ^  V) k" s6 k, V        cout << endl << "    Object String: " << pszId << endl << endl;7 W& p: I2 k& W/ o# f( X) x) L& n
        
# Q' ?' \) E; a- {" F' O; J4 u  c        if (pszType) MEM_free(pszType);0 R9 e, C  h0 F/ L
        if (pszId) MEM_free(pszId);
# ~) L* w' Z! `5 O8 a% G    }
7 ~7 f! u; \0 A! j) a    catch( const IFail &ex )/ l6 I& @5 o9 N5 h( U6 G' S" N
    {  B  W; _" o) D- b
        logger()->error( ex.ifail(), ex.getMessage());" G$ Q. q& O7 J; I
        cout << ex.getMessage()  << endl;
9 n) V- i# k9 H* ?$ K        cout << "error " << ex.ifail() << endl;        / f+ P' q. H, l" Y/ P& M
    }
1 X# [" D& V) a2 {( G. }    const char* syslog_path;
$ r. N3 |8 ~9 d9 Q* h    syslog_path = EMH_ask_system_log();+ L& M) g0 J' n- {# s$ T
    cout << endl << endl;
& t4 u, o2 G, M2 S& T    cout << syslog_path << endl;& t2 C8 X) Q; i8 j  f: A

+ o2 J( E, W* o: P  p. k    stat = ITK_exit_module(FALSE);                                       
8 G0 B7 g2 M/ S; M; E& l+ Q" U    return ITK_ok;) k9 k0 K+ L- L- B& Z2 R
}[/mw_shl_code]* D9 D% F6 w) q& _' L" l' e! X. h
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了