PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x

3 |0 K- m4 N8 _; r4 RTeamcenter二次开发源码分享: Revise 版本 升级版本方法4 M. y/ ^2 \; C7 w& F

, A( U  P2 `. t, }
. j2 g4 E, X1 _' J8 i2 F[mw_shl_code=cpp,true]#include <TC/emh.h>
/ ]4 l. t: ~8 a- a9 d, L0 \, Z#include <tc/tc.h>
6 Q$ z' J1 ^3 ?9 D0 ~% q' n  ?#include <tc/tc_startup.h>
$ C5 h, x4 l: B& J1 [5 W4 e. g: B# G#include <tccore/aom.h>
2 g5 z" s, b: |1 `* ]#include <tccore/item.h>$ u/ T) T3 M5 H7 A1 _3 D2 N. z$ k
7 `- H* M' G0 ?/ U. M7 N
#include <iostream>
/ T: A+ e; z/ N! q. q9 q* m#include <vector>
( K( f" g# E4 L1 o#include <base_utils/IFail.hxx>7 p( G& K& D1 `% F4 c' e& x
#include <base_utils/ScopedSmPtr.hxx>0 `% F6 O" r9 U; r# f  t! N3 ~& S0 S/ N
#include <base_utils/TcResultStatus.hxx>
/ j# l* \: p6 e& P, o+ o  ~#include <metaframework/BusinessObjectRegistry.hxx>7 U3 S5 Q0 Y2 O3 o% S1 p
#include <metaframework/ReviseInput.hxx>: O0 ?, M! M/ y# s0 o
#include <mld/logging/TcMainLogger.hxx>: w0 ?8 f2 Z7 m4 i+ K
#include <tccore/ItemRevision.hxx>& Q/ b% d3 a% m6 `3 @' I
#include <metaframework/BusinessObjectRef.hxx>) ~* C4 c0 r' @- j
#include <metaframework/BusinessObjectRegistry.hxx>
5 V6 z6 J; N5 c- n/ O: {4 _#include <metaframework/ReviseInput.hxx>; D/ x8 V2 D6 t7 w2 M
3 F; y7 Z2 n9 u& ?1 Q3 F  b  A
using namespace std;
2 ~: Q1 u% d/ Y6 L4 ^% |& J% b" z2 Yusing namespace Teamcenter;
/ `# z9 R% ?% x# C& s" x4 husing Teamcenter::Main::logger;
+ @& c$ x- |$ [8 X' }' ?, _, E; S
8 P0 U3 @7 Y; D/ Xint ITK_user_main(int argc, char* argv[])
) P; z% n. m. ?* B{1 e. C+ d) X% W5 J+ U
    int ifail = ITK_ok;
' h, }* F$ R4 a: {8 M) r    ResultStatus stat;" p" V1 N% k, l8 w3 T
    try
: u4 Y+ x  y: D    {0 V0 t1 D3 O( Z# s( t: H+ Y6 ~7 X
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         ' |, N6 Y! k- K- o( g. Y
        stat = ITK_auto_login();                                          
, a8 F5 }$ w5 \* q        stat = ITK_set_journalling(TRUE);: \" `- T1 [" e1 d) f0 t
        
; S' T  n* g+ L7 w, B        char item_id[ITEM_id_size_c +1] = "0000000";. ]$ V- n8 v$ \9 H
        char *i = ITK_ask_cli_argument("-i=");
4 o$ B" `9 U4 B        
4 ~/ v& M: n5 J; I        if (i != NULL) strcpy(item_id, i);4 y% M6 m3 [! z. o
        cout << endl << "    ID: " << item_id << endl << endl;
' d: B, }6 f1 w/ r        
% Z" O6 \% A; x: f+ C+ K* h        tag_t tItem = NULLTAG;/ m- w( P$ G+ o. ^/ `
        stat = ITEM_find_item(item_id, &tItem);  p# @* ?2 ?) h& I( ?

! W: N% ]; v/ n2 p        tag_t tLatestRev = NULLTAG;) n3 B$ G4 U" Z; o/ Y4 k! O# e
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
4 U# @0 D6 p2 j$ E8 m9 \
4 A  i" p) J$ f" U- F9 b! d8 e        char *pszType = NULL;6 _- X4 F8 E7 l6 K2 J; v  T' j
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
* r3 _3 ]% @- g- x4 I4 l' k: w8 n" |# j1 j
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();) B/ b" @0 m2 C& j& ^, `
        - w5 W' q  v4 a8 U% E- C
        string revOp = "Revise";7 G, |7 Q  d* K2 J9 ?* g' h
        ReviseInput* pReviseInput = 3 A  w$ }8 I6 E/ x
            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
4 z' V9 ^* L) h
1 K7 D. D+ K# s& q2 r) [, h; B6 y        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
3 Q8 a( C3 r8 f1 L5 K% O        5 N6 Y6 e# Z4 v: u" {" i* O1 r; H- N4 ?- x
        vector<Teamcenter:eepCopyData* > deepCopyData;
' A) t* L/ S* ~' X        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);8 b: R; o# V' M. V, I2 |8 p0 Y
        
% U% T3 e+ S, i9 ~. L        pReviseInput->setLogical("performDeepCopy", true, false );
) V3 l5 [* K* P# U: L/ a9 X        
8 d; K& @2 z, |! f        tag_t tRev = NULLTAG;
* g) K) Y/ w" s7 T# E5 C0 f        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);
% p: I! w$ [: [; j) E
  o$ Y9 i" G. k' Y% S& ?        stat = AOM_save_with_extensions(tRev);
; W  p  ~" j7 y- j        6 Z. H6 ^8 f0 i5 F& E
        char *pszId = NULL;
3 d0 f5 e: ?8 G8 L1 K        stat = WSOM_ask_object_id_string(tRev, &pszId);: r7 V* d0 S% h; N: o
        cout << endl << "    Object String: " << pszId << endl << endl;
. d. w* w/ f( N7 D- ~) n* ]        
0 R8 N: ?( p; Q% g: }% N8 M6 q' [: l        if (pszType) MEM_free(pszType);9 w% O+ E! o7 M& n
        if (pszId) MEM_free(pszId); 1 Z% e! o  g2 J$ U& `( [
    }' U( N& k5 U2 w7 s
    catch( const IFail &ex )3 I2 z  O' f" X' l6 y3 T' \
    {: |0 M0 U: Q; X' C
        logger()->error( ex.ifail(), ex.getMessage());8 _6 d: i* m( l! f$ m" }. ~4 v
        cout << ex.getMessage()  << endl;* v9 ]* E6 @- d6 }0 n; D0 C1 w! N
        cout << "error " << ex.ifail() << endl;        
! @* |/ V; O+ _7 p" a% g  q    }
& l( d& q* c& H& t9 o    const char* syslog_path;
; }$ X# n" z  l. R    syslog_path = EMH_ask_system_log();7 q) N* |; l5 g: _1 `
    cout << endl << endl;
! ?5 ?. G7 T( z" |    cout << syslog_path << endl;
; _; E& Y8 p* ?1 M! X4 a5 i
) e% p# a( I6 D+ x) P    stat = ITK_exit_module(FALSE);                                        ' }; |, S7 V" K4 R: S" y. N. J
    return ITK_ok;& [  C) ?- }8 `+ V$ e- E% W: r
}[/mw_shl_code]+ e/ d4 ~6 s6 V% m* Z" q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了