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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x
# w  n- E4 R2 w/ ~
Teamcenter二次开发源码分享: Revise 版本 升级版本方法
# i; ]7 ]4 c: R; }
0 M) e: M( ^9 }1 Q9 `$ ^
  [# Y; W; c; _& I! o. E7 c& K* V* }[mw_shl_code=cpp,true]#include <TC/emh.h>
( w0 C! G( x- x- R$ u#include <tc/tc.h>
+ s8 A2 l. C3 P' U#include <tc/tc_startup.h>  L, X/ y" i( G0 \! ]. J- R0 F) B
#include <tccore/aom.h>! M; m1 H5 x5 H7 Q8 {8 i4 r
#include <tccore/item.h>, }" x' B; I. k0 s

% J9 w; B$ n! W8 @4 Z& O#include <iostream>
/ z& O0 |6 R4 \#include <vector># h0 f1 ^4 y6 [3 J
#include <base_utils/IFail.hxx>
: `/ O2 e8 }) x#include <base_utils/ScopedSmPtr.hxx>
6 T; |/ b3 ~, j* `& X5 P0 ^3 i#include <base_utils/TcResultStatus.hxx>; Y% @/ ?$ ^2 J
#include <metaframework/BusinessObjectRegistry.hxx>- R1 H& Q) K; S
#include <metaframework/ReviseInput.hxx>! D3 [; J$ ?& ~3 p9 n
#include <mld/logging/TcMainLogger.hxx>& p) u4 U; v/ p2 T
#include <tccore/ItemRevision.hxx>
$ J2 M3 k8 m1 T( [1 l#include <metaframework/BusinessObjectRef.hxx>
5 O2 a8 S- V: C#include <metaframework/BusinessObjectRegistry.hxx>9 w9 p' P5 K& j$ T7 z$ l
#include <metaframework/ReviseInput.hxx>
3 Z5 l- c  K2 k4 Q+ E
+ Q* F* f- w, D* I. B8 y4 ~* Zusing namespace std;
- H! S; m  ?% }# a# {using namespace Teamcenter;
  z) x0 w# ?  r, K  m7 X5 gusing Teamcenter::Main::logger;
, }& |2 H2 o2 L) @5 [7 U
" {, H: H3 ~- L+ {int ITK_user_main(int argc, char* argv[])
3 i# D1 K1 a+ d' Y9 D{2 a! T2 u! A" F; H7 X% r* p8 ~) o
    int ifail = ITK_ok;$ d5 |0 n& T! y. z) v$ i7 D
    ResultStatus stat;" Q$ T; m" `: R
    try
& p0 L8 ?: V  j0 f0 x    {( s! O  v$ n4 r) g' @( M
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         5 z0 k+ @: ?. P) O- y; B1 \0 V
        stat = ITK_auto_login();                                          
8 C) ?, ~# {4 f2 R, y5 S        stat = ITK_set_journalling(TRUE);
1 `$ [9 a0 k3 O2 d7 H        
2 j( p( y8 H" i$ D1 q3 m0 t% b        char item_id[ITEM_id_size_c +1] = "0000000";
* s4 n3 C  ~& m7 x2 B' u) a8 t; i) |        char *i = ITK_ask_cli_argument("-i=");" L. F6 _* z! S0 p
        - X3 Z* s3 X2 a6 E' f" R
        if (i != NULL) strcpy(item_id, i);
( ]4 `0 g: A+ [1 f0 J        cout << endl << "    ID: " << item_id << endl << endl;5 p6 p& C7 q8 u, Z+ V( \6 a: d
        ; J: `! |, a( g% b4 f
        tag_t tItem = NULLTAG;2 y: o* f; y1 r- k$ m/ s
        stat = ITEM_find_item(item_id, &tItem);# l* U5 y: u# h, N: Y9 G7 e- {( U
) {0 k9 C# Q: _
        tag_t tLatestRev = NULLTAG;2 G6 z, i# o8 ]/ @' [4 H
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
' M- f) c# z$ d6 k4 t" S
) f3 j- u' p$ E3 l1 V        char *pszType = NULL;& I% D. B6 m" R
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
3 l: {) t& Q5 ?2 ]
% |3 H( p: V$ p, e, l9 ^* Q, s        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();+ ~) W+ K- z' l2 x5 y. D: `
        
, |* R/ y8 b! C! M2 t0 h% I2 k        string revOp = "Revise";# E5 _6 d9 ?$ t4 k8 r7 @& g- V: C' S
        ReviseInput* pReviseInput =
0 X: h: l$ |3 G4 V& b8 h% t1 C            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));, a: I8 M. X+ R" L5 A: X

$ o/ |/ e$ c) t        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);% R5 j$ }0 }6 W9 l& J
        , c7 \, m4 g9 a; m) A
        vector<Teamcenter:eepCopyData* > deepCopyData;1 E  f9 o, O: R% u' C
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);: ~* l8 w$ i4 Q, d
        7 Z' o9 o" E( K7 }- w
        pReviseInput->setLogical("performDeepCopy", true, false );# B% G6 ?. z" C$ i" i: h& D2 \
        0 x+ i, }+ P2 {- [7 O6 @* w
        tag_t tRev = NULLTAG;
& A; M6 W: _7 F1 N9 ]        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);) t( @. |  l, {# ]; B

, Z$ m/ o2 z" H6 b/ }        stat = AOM_save_with_extensions(tRev);
# B" k- }4 \- v8 V, M9 q  D        
0 ~2 K5 y! [* k( H; L        char *pszId = NULL;
0 b( ^* s0 A1 k; w        stat = WSOM_ask_object_id_string(tRev, &pszId);7 I/ M& c  K' k1 ~7 j- m
        cout << endl << "    Object String: " << pszId << endl << endl;" ~8 K7 i7 R8 C
        $ ]3 t8 [% r: `1 q
        if (pszType) MEM_free(pszType);8 V; c+ f2 f8 w/ Z) w- e% N, a6 m
        if (pszId) MEM_free(pszId);
' V2 w) T1 h( O# i% U    }
* _( q' _1 A3 `* z+ t7 y    catch( const IFail &ex )
( r" X' y( i+ u  _+ k    {
; A6 o4 z% U0 Z1 E( s  _        logger()->error( ex.ifail(), ex.getMessage());
9 L% T% [6 ^( P2 S  i4 }$ ]        cout << ex.getMessage()  << endl;: A6 ]! f' ~1 }6 K8 K: M6 O! R
        cout << "error " << ex.ifail() << endl;        
8 o) _8 q  a% m5 A    }5 |4 a& a, Y" p8 R0 L3 \1 n
    const char* syslog_path;
$ X, i: u3 U$ N6 d    syslog_path = EMH_ask_system_log();
5 `6 j$ [8 {  G! k' g+ A  u    cout << endl << endl;
: R. u: g0 K* G: z6 o    cout << syslog_path << endl;
7 }! W, Q# R% o- C% `! C8 T5 m/ b( g4 {+ ^
    stat = ITK_exit_module(FALSE);                                        " B& O7 v# h+ P& e. n$ ?0 @
    return ITK_ok;9 C* T5 S7 \. g/ N
}[/mw_shl_code]  P1 p/ L# `& v* @+ T
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了