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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x

. J! `# q2 S! B' e, tTeamcenter二次开发源码分享: Revise 版本 升级版本方法
% G' L/ S8 m/ P- R7 H' f7 C8 B& B: J* m& ]8 g

. a% x- A; h3 x- L; Z2 `[mw_shl_code=cpp,true]#include <TC/emh.h>
8 K" h# _! N) a  c) f#include <tc/tc.h>3 ?2 H; u/ q2 h. @
#include <tc/tc_startup.h>; Y* R' `8 a" h6 Z1 }* [+ A# g
#include <tccore/aom.h>
/ Y+ z. ~. j% b; K" j#include <tccore/item.h>
# a4 I6 n3 P" k$ w# e' z" t5 f; }; x. Q% x! L, t  ^, n
#include <iostream>
1 u( l; K. [- |. f; O9 Y0 U#include <vector>0 D2 @% s( h) S4 U" f6 x8 i
#include <base_utils/IFail.hxx>- F4 {( k( I2 B/ o! G
#include <base_utils/ScopedSmPtr.hxx>
1 j+ f0 n- U$ ~#include <base_utils/TcResultStatus.hxx>- R7 z5 h. I/ ?4 B
#include <metaframework/BusinessObjectRegistry.hxx>% s, O9 v5 b$ i, y
#include <metaframework/ReviseInput.hxx>; s  }& t4 _9 B- L. n  |/ ]3 c+ I  ~
#include <mld/logging/TcMainLogger.hxx>
1 Y5 a, x/ W' }- o$ ?( L$ Q#include <tccore/ItemRevision.hxx>) c' G7 m2 F$ R6 J& M& O
#include <metaframework/BusinessObjectRef.hxx>
3 e0 O/ U; s+ O* Z6 n#include <metaframework/BusinessObjectRegistry.hxx>
6 a# V, A  d" j; y#include <metaframework/ReviseInput.hxx>7 ~4 Z. X: O) O9 q: w

, r/ w" l6 `6 p6 E6 p( N9 Yusing namespace std;
* H5 }: X& V/ _" G5 T8 d) [using namespace Teamcenter;  }7 e) z$ y, h1 i3 @
using Teamcenter::Main::logger;3 A) ^0 p4 c% q2 p& t

" r. p2 O" b* g. D7 dint ITK_user_main(int argc, char* argv[])4 E* ?/ Q+ D" G$ W4 F
{
  f( @7 v6 F  E7 R3 \4 @5 d: G    int ifail = ITK_ok;3 h% t2 ~- ?' g; W
    ResultStatus stat;
, g9 I' h0 F6 G# w* \    try
. ^$ \. O9 U: d% B( |& P    {0 |( s5 R. u5 F5 r9 t% z
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         " p$ a* K9 D  L8 x
        stat = ITK_auto_login();                                          ) y2 `! T6 D4 j  c0 [. T
        stat = ITK_set_journalling(TRUE);
; t! Z3 `, E  r        
3 B6 c- Y$ Z% i- }" O: |        char item_id[ITEM_id_size_c +1] = "0000000";5 b) P1 q' s. X1 z1 J& C
        char *i = ITK_ask_cli_argument("-i=");
. H7 W3 w" \  |) I% }* ~/ H        
4 H, I/ y% b) U4 }- S        if (i != NULL) strcpy(item_id, i);
2 H* a  L; \4 z1 ]' `        cout << endl << "    ID: " << item_id << endl << endl;
- ^  G8 A( `" N        
  E) M: G) I" \) I        tag_t tItem = NULLTAG;- {0 s; X5 Z0 e2 X( m  q
        stat = ITEM_find_item(item_id, &tItem);
# |, s, G+ {2 T( z( [) g
) N: B8 a/ ?. p4 t        tag_t tLatestRev = NULLTAG;( V( T8 f7 }2 n. y8 Z/ T' P
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
7 [- |- B& {; A4 F6 T% `& Q7 h& s% ~, E0 G& s$ M8 R( r( j( U6 _
        char *pszType = NULL;
1 z2 t+ D- x2 i" Y+ A# ^2 U2 L        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
% f! _6 R3 I. A/ S7 R" O) y, [% C- G: ?
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
' i5 Z5 E2 o5 R1 f$ j, U        0 U! M% ~2 B; O$ W, d  A
        string revOp = "Revise";
' ]5 c# \, g6 F* v' ]        ReviseInput* pReviseInput =
% c8 G" [% ~8 E            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
, v# j/ v9 t" _; I( e) C# g3 e$ c+ c. b9 ]) L% t! f/ y
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
( P, F( c; y* D4 m. W0 A# }        1 ~3 L$ z: |( w, P0 J
        vector<Teamcenter:eepCopyData* > deepCopyData;
* u* X, s9 q+ w$ q* L& [4 c2 Y        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);9 n' ~2 `2 J3 h3 T8 g; n
        
5 V! L& k  n6 S& e6 E! }3 W. i! q/ i        pReviseInput->setLogical("performDeepCopy", true, false );
: d' w8 Q8 r& w          E, R* M: D0 W
        tag_t tRev = NULLTAG;% L* s2 A  v6 A3 d/ X% i& D0 x
        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);8 f8 E) i* R9 [
5 ^0 [" U3 z7 X" g8 y3 M( J( C
        stat = AOM_save_with_extensions(tRev);
4 o1 C' }7 `5 l; d# x1 ~7 R/ U4 ^        2 U( t! ]0 C% P7 d# Q: O
        char *pszId = NULL;' b* u$ `. i  Z7 X8 i& l4 m
        stat = WSOM_ask_object_id_string(tRev, &pszId);/ z- r9 f5 F- z( w# o
        cout << endl << "    Object String: " << pszId << endl << endl;1 f! a# J- \6 O3 G" `4 ^
        ! P: P+ A7 Z& c8 ?5 y* N  D
        if (pszType) MEM_free(pszType);# }- n: O3 |' _- j+ P. |3 @
        if (pszId) MEM_free(pszId);
, u0 `5 t3 a1 H3 [1 @    }# S' F7 S- {# [8 w$ G
    catch( const IFail &ex )
  `. T2 X$ u3 c- S# S+ I$ @$ S    {
/ y0 y, C7 r6 A: B: f. y9 _        logger()->error( ex.ifail(), ex.getMessage());
: \7 D* W& q8 ], k) y- p4 X        cout << ex.getMessage()  << endl;5 t8 L+ r* U' x* I$ q$ A
        cout << "error " << ex.ifail() << endl;        : }4 g1 ~9 I7 g. U+ H7 w  p0 u$ B+ r
    }
" V. u: r, x% n: x    const char* syslog_path;
; _$ L6 {+ M( F    syslog_path = EMH_ask_system_log();5 x2 p; P7 J2 B3 G) J; ?
    cout << endl << endl;4 N, O( s  J0 y9 @
    cout << syslog_path << endl;+ ]2 s% _1 m: n( d% _* K& \$ b

& B$ d6 m5 R! c# V( ^: Y/ a    stat = ITK_exit_module(FALSE);                                        0 ^8 y$ R, {) v7 M7 a  Z
    return ITK_ok;& w9 |4 B# F/ L6 ?6 {9 _9 Y9 j
}[/mw_shl_code]9 O! ?7 n# @9 ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了