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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x
' F, |/ K5 x+ V4 {
Teamcenter二次开发源码分享: Revise 版本 升级版本方法
7 b* W  E7 F- k. e0 B8 [6 i9 S; I! a# T# q7 v0 _  m
9 Z+ d6 Y5 |' l$ m, A  w, P9 ?1 r! ^
[mw_shl_code=cpp,true]#include <TC/emh.h>' e- P2 ?; i& x' ]: |
#include <tc/tc.h>
+ b- c/ x; V. N#include <tc/tc_startup.h>
6 a* _4 b. y; I( s#include <tccore/aom.h>% `8 T" P7 d5 I
#include <tccore/item.h>) g! W: z+ M8 X) P
, R: r1 j4 H; V- o% l% a
#include <iostream>* v3 S" O% D; m  ?
#include <vector>
, c, k3 u- U; t  O$ m. ^#include <base_utils/IFail.hxx>3 A3 i, M3 o" C2 }' n' t' N6 j
#include <base_utils/ScopedSmPtr.hxx>. v0 x9 l' y7 x( T- z; e
#include <base_utils/TcResultStatus.hxx>! p+ j  I7 {8 m# I- n5 e( a% V; m
#include <metaframework/BusinessObjectRegistry.hxx>5 P; [( O8 T. L0 E7 u* s
#include <metaframework/ReviseInput.hxx>' W* D" q( |7 c, n
#include <mld/logging/TcMainLogger.hxx>- [6 H2 @1 C. s- v9 s
#include <tccore/ItemRevision.hxx>
* j' Y; P" W/ X' @0 j#include <metaframework/BusinessObjectRef.hxx>& Q/ U5 C8 v& O: g+ D3 I
#include <metaframework/BusinessObjectRegistry.hxx>
0 M/ q! G0 N7 K8 }: y/ ?7 [/ K#include <metaframework/ReviseInput.hxx>5 E" d; L: M# k: J. K" }! o- |
  V' i9 Y1 C8 X9 k! D
using namespace std;
' _  M2 V' I9 qusing namespace Teamcenter;* q/ b# K1 t" L; x3 a5 o9 U! K
using Teamcenter::Main::logger;
, O3 l1 @, J7 P) q5 ~# y  m) f; f( a  Z8 V/ K+ F7 b( x
int ITK_user_main(int argc, char* argv[])8 u: G' J6 {$ r" R. I- w) I# G% [
{
: f8 W& T" K6 {6 J/ r$ {4 p    int ifail = ITK_ok;
+ j# {* y# s) l' [0 @) m/ H) e2 v    ResultStatus stat;
# ?! c0 E; z2 R. U$ b) O% n    try9 C9 a5 ?( p6 y# M1 F5 R3 k$ j% y4 ~
    {5 c+ K$ ^7 Y8 E0 f, ?
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         
5 Y0 ^* S  Z4 i4 X        stat = ITK_auto_login();                                          $ p: }/ h# U# o5 x4 [5 z: I  T
        stat = ITK_set_journalling(TRUE);2 K5 A# Z6 q( e+ [# g
        
0 B' V! S. B% T3 m% r( U) s        char item_id[ITEM_id_size_c +1] = "0000000";
0 v9 x- d2 C9 w2 @" [        char *i = ITK_ask_cli_argument("-i=");' I$ H! ~* D. p
        
1 c6 f. H8 F+ y4 T1 j* N        if (i != NULL) strcpy(item_id, i);  b: {# ~  S$ y6 w& i$ d
        cout << endl << "    ID: " << item_id << endl << endl;4 w, o. x, R' t
        
+ ?# H: r7 j$ x% a2 z+ Y7 M        tag_t tItem = NULLTAG;
* ~7 s. A  g1 k4 J& ^5 g        stat = ITEM_find_item(item_id, &tItem);
$ o( j) y1 r- D! ]; j" [. t) M, N$ W4 g( G& g
        tag_t tLatestRev = NULLTAG;7 L$ t/ U1 G! Y& O; ^6 C
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
5 @" A6 p" R6 O  q
: g# t4 ?* Y; `  Z( F! v8 |        char *pszType = NULL;+ A& A* A9 P+ a5 b2 c0 f; z
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);4 l/ d' t0 x# c3 Z' z$ [- C

. O. G9 x: w+ c) E3 O        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();8 `+ \6 Q0 J0 p! l
        : t8 I' H" j0 T- y
        string revOp = "Revise";
; S; X; {0 E( h* p; O# a        ReviseInput* pReviseInput =
$ \6 ~% c$ l9 R4 T# z6 G  {* T) D# @            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));6 L# o; P* T4 D$ w6 f3 d
" {, C/ \+ K% g0 G6 T( _
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
. I- j; b& B2 ^6 z5 W+ _- Z, x        5 L8 i9 o- J8 U; `! W9 X) |
        vector<Teamcenter:eepCopyData* > deepCopyData;8 Y9 w; |5 j/ V* s  V" e6 @+ h
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);7 n% ^9 ?  ~+ Z4 m7 W
        
& e7 ]. A/ z5 A5 Q5 {. h        pReviseInput->setLogical("performDeepCopy", true, false );$ e) @  Q. i% M3 u$ D* \7 Y
        
+ a; R  k, v  B! j        tag_t tRev = NULLTAG;5 Y) g. v1 _( k/ D
        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);. Q$ G6 B  M3 |' s
  y( v* J! p: b- A8 ]
        stat = AOM_save_with_extensions(tRev);
2 h* H  ]+ {: x+ r) \; ~5 B) Z        
# ~. A9 b# D9 T" o) O; F        char *pszId = NULL;. z4 W% t, K. W  ~; q& O& B
        stat = WSOM_ask_object_id_string(tRev, &pszId);# D/ c" o6 _: m
        cout << endl << "    Object String: " << pszId << endl << endl;
3 G! @# B& V5 S$ E2 l        
: S( q" p9 T  B1 M7 d; Y, l: t        if (pszType) MEM_free(pszType);9 P+ A' j, O  p6 k/ k; A+ {% _: u
        if (pszId) MEM_free(pszId);
& x7 W. l  a5 l4 K/ f$ _8 Z, x    }
& \& X! Z: j# Y% n' Q3 @1 x    catch( const IFail &ex )% s1 q+ N" x# E+ d* N3 C* |! F
    {
2 h+ {0 T; h9 C; b$ x4 j, c        logger()->error( ex.ifail(), ex.getMessage());7 x9 t% z7 H: U
        cout << ex.getMessage()  << endl;, ?/ N) `" ]( j/ }% i& C
        cout << "error " << ex.ifail() << endl;        
# l3 _8 b* M0 {    }
; e4 b. A$ H7 T6 E; t4 f    const char* syslog_path;) f1 C3 F) S* d) I$ p9 h% |( g
    syslog_path = EMH_ask_system_log();* v% c5 c9 Q: |" ^8 P
    cout << endl << endl;# \  P+ _7 O: P1 ?4 {
    cout << syslog_path << endl;) S  c0 t3 \: r2 Y
( C% ~- L! x; ]" s; [4 q
    stat = ITK_exit_module(FALSE);                                        ( h, y2 V' h8 {) V% S
    return ITK_ok;
9 p2 M( g' y6 V1 U/ p}[/mw_shl_code]) S/ P9 t0 X3 O5 O# [, 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二次开发专题模块培训报名开始啦

    我知道了