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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x
  V# ^. o8 I# Z0 R. g
Teamcenter二次开发源码分享: Revise 版本 升级版本方法
" o- V2 I. Q4 C2 O
' F& p& \4 |3 |) X5 j* i: J
* @9 J3 Z; ]) N3 X; W: j3 n' x[mw_shl_code=cpp,true]#include <TC/emh.h>
+ r* v& y' N  h7 p4 g; m#include <tc/tc.h>/ i2 X, J% v6 G2 Z
#include <tc/tc_startup.h>! ~, W3 z" z/ b: Q3 f% A
#include <tccore/aom.h>
3 F$ r& m3 y' `  B#include <tccore/item.h>
) [! X) N: u) |9 x0 J
% ]# T  h8 q6 }0 ?: H! z9 t#include <iostream>
' H0 C- {0 }6 x" E& @7 o#include <vector>0 x' q- E2 Y) L, V
#include <base_utils/IFail.hxx>7 y4 T2 ~+ k/ K  E; y% C- a0 T" s
#include <base_utils/ScopedSmPtr.hxx>
( e6 m& k& U0 X8 o9 Z#include <base_utils/TcResultStatus.hxx>
# O- V3 C) c" W/ N#include <metaframework/BusinessObjectRegistry.hxx>7 V/ d* ]8 E+ K' h7 ?& \2 Q2 x
#include <metaframework/ReviseInput.hxx>1 n3 B% g/ B8 Q# V
#include <mld/logging/TcMainLogger.hxx>) ^) E! s1 r  o
#include <tccore/ItemRevision.hxx>
' \7 _& r9 n1 @#include <metaframework/BusinessObjectRef.hxx>
9 s2 ^1 t5 z; B# _7 [#include <metaframework/BusinessObjectRegistry.hxx>
; A+ s( j0 e: }/ O6 `' F- Q#include <metaframework/ReviseInput.hxx>: A: G( A8 W/ ?4 V" }( M# F
8 J: X- Z6 @, |9 W5 ~6 f& \8 r
using namespace std;1 c( [& e: H. e3 z6 c
using namespace Teamcenter;* F$ `4 h$ c0 ^7 k5 F; A
using Teamcenter::Main::logger;
2 ]3 u4 J: r# ]! e# A) p& q+ d8 f# M5 L. f: B: A' o) e3 V" Y
int ITK_user_main(int argc, char* argv[])
$ D6 U, H: u9 Q/ |9 i{/ v; S5 R0 Z# k- k! r
    int ifail = ITK_ok;/ A% s5 ]* q& y. E( `8 p- V
    ResultStatus stat;$ ^; i4 n2 h* t! j( ]( ?
    try/ j8 F+ F7 S' W8 g6 Q1 o; T, d5 U7 W
    {2 j6 w9 A/ ]/ z/ c0 E, U0 S
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         
' I2 y3 b6 e, O% @, `& j: O        stat = ITK_auto_login();                                          5 Y; t* c1 h7 S, |  r% v1 F4 p
        stat = ITK_set_journalling(TRUE);; j2 k- d( K  v2 j
        0 b+ h+ n2 E& H4 S
        char item_id[ITEM_id_size_c +1] = "0000000";
2 N  ~( t' r4 H2 B) S: y9 p        char *i = ITK_ask_cli_argument("-i=");- [) O6 r7 x# y6 w3 G, ~
        1 H1 m% b# ?' ^( j7 B! d
        if (i != NULL) strcpy(item_id, i);
. O9 n; q& g  |7 N7 J% H        cout << endl << "    ID: " << item_id << endl << endl;
) h; p; e; C7 p' M        
. Q' y; j1 S9 S* R        tag_t tItem = NULLTAG;
3 d7 [! K3 h) Z& n/ R        stat = ITEM_find_item(item_id, &tItem);5 O3 i9 i& J0 W

& _" a6 L5 r, b3 M( W        tag_t tLatestRev = NULLTAG;) t% j8 Z+ {0 b
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); : {, ]5 a4 {8 C. M8 V
1 D% x) [& r0 J% ]+ Y; h+ E
        char *pszType = NULL;9 }; A: y9 j/ B* _9 o, q, i9 v
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);9 P8 g  H, ], l4 r
  b% T, o0 T! O! y, t9 k& x6 M$ X
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();
! n1 {% F* ~  a, r        & A# V) W$ }/ ^  {! e+ P% R
        string revOp = "Revise";
3 a' u, o9 _1 M4 V        ReviseInput* pReviseInput =
' ?$ a' _' g1 V( x4 C0 v$ U            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
" Z$ M- N# ^" U! D
; I" E6 M6 B% y( f+ C        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);2 \1 {+ d( y* W; `$ L  S" ~
        
8 ?$ g- q: n0 A0 H( k; K        vector<Teamcenter:eepCopyData* > deepCopyData;4 a1 k  z( ~/ v3 t  e% e
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);* q! V5 [1 ]  N& `! L) z6 l, m* h' o  H
        3 j& O; S6 o3 P  L
        pReviseInput->setLogical("performDeepCopy", true, false );
1 Y9 k# W: L. N/ u) O  o$ v3 Q        
. o1 u/ n4 |" p4 D! a3 Y( q        tag_t tRev = NULLTAG;
& Z- n- \0 z4 K0 M2 {4 O        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);
! H& g9 `1 F+ _6 M' W; E# S6 L. R
$ J1 v5 T4 s  o; }' F( V0 K! o, c        stat = AOM_save_with_extensions(tRev);
" i' q, O' U0 I5 P        ' u) }( f* Z  K5 t* A  K- z
        char *pszId = NULL;' Q) K6 j+ I% o$ v
        stat = WSOM_ask_object_id_string(tRev, &pszId);
6 A( s! V, o, p2 Y- j        cout << endl << "    Object String: " << pszId << endl << endl;3 o3 q& R) z# H. j
        3 k9 s) L3 f; v. G/ B4 @
        if (pszType) MEM_free(pszType);
( i0 c. i( ]+ l% @2 x  z        if (pszId) MEM_free(pszId);
7 F% N% {0 k3 J- v5 F    }& n, g. |; e4 D& V( n; k
    catch( const IFail &ex )
& h/ u0 Z" m& B5 ?. M1 ]    {6 T0 ]+ t6 r  R
        logger()->error( ex.ifail(), ex.getMessage());! C' ^0 [' B/ z3 g. f, w$ o% \
        cout << ex.getMessage()  << endl;' r& N# |, y4 x" r$ {* z, b1 I
        cout << "error " << ex.ifail() << endl;        
7 i2 e2 X6 c! e4 A; b    }0 o: Z; u- [0 m
    const char* syslog_path;
% L2 q8 l3 J( w* \) Z; R5 `    syslog_path = EMH_ask_system_log();
  y) L. _! m' |' U4 a7 m    cout << endl << endl;( k7 g6 A0 i, T0 G, S6 U. l' [
    cout << syslog_path << endl;
) \$ B3 I3 R- x) a* j1 V
2 h. L0 i: s2 i: J$ S; F    stat = ITK_exit_module(FALSE);                                       
' K7 ^" b: N+ X) ^, ^  i# q    return ITK_ok;3 Y0 c5 v# H3 y% K2 `0 G
}[/mw_shl_code]. m. M; G9 ~7 d3 s3 y( a6 z& 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二次开发专题模块培训报名开始啦

    我知道了