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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x

; f) M; u3 ~  ?( P& B* w5 f, U4 sTeamcenter二次开发源码分享: Revise 版本 升级版本方法8 I4 a% x4 Z, ]) x
! d4 C$ G) s. B8 i" V4 U

% K+ `1 F0 t  Q! ?2 U$ @[mw_shl_code=cpp,true]#include <TC/emh.h>
1 U2 Y, B2 T! ?# u3 @+ i#include <tc/tc.h>, h& M- ~, j" b4 T( x$ n
#include <tc/tc_startup.h>
: x  v4 W7 w2 e! m4 l#include <tccore/aom.h>, a0 i- {. w8 c! U; L$ S
#include <tccore/item.h>
  E/ [, ?5 \& p
1 U( q" Z* ?+ |  E: y- R. D#include <iostream>, O1 @$ V* C/ @- W- b6 F
#include <vector>
5 z$ R5 i2 F. |$ l# v- p#include <base_utils/IFail.hxx>
# G7 e& `$ c4 F/ Y! e' _#include <base_utils/ScopedSmPtr.hxx>
& u' Z  h5 g# T- D5 r5 D& S#include <base_utils/TcResultStatus.hxx>7 s1 H$ c6 O# o: c+ A* G
#include <metaframework/BusinessObjectRegistry.hxx>7 g9 j2 v; z( U: r( D0 p
#include <metaframework/ReviseInput.hxx>/ ?# Q/ v7 @# X9 [' I7 V9 w4 c$ t! A
#include <mld/logging/TcMainLogger.hxx>: m; V! V* M, A3 E* |' p8 r( v9 b
#include <tccore/ItemRevision.hxx>
) f- J1 c. I4 r* o#include <metaframework/BusinessObjectRef.hxx>6 i4 z( Q% `& T# m
#include <metaframework/BusinessObjectRegistry.hxx>, g0 H" \  W" y5 u
#include <metaframework/ReviseInput.hxx>. u; q' ]( g# ^3 b7 \! M
9 W5 g7 ]* O2 E" i4 n
using namespace std;
% E  a: ~4 U% K( S# ~0 E5 cusing namespace Teamcenter;! ]7 Y$ S. L+ \: `& K/ K
using Teamcenter::Main::logger;$ |! K' ^9 b3 c3 P0 d

* }& q$ ]$ @& K' B. z* r! Eint ITK_user_main(int argc, char* argv[])
5 {6 E9 V9 B) {{; ^% g' z2 b, Q' _! c  H
    int ifail = ITK_ok;
) z( J3 G8 L! i" \7 ~5 C5 n    ResultStatus stat;, @" {( H6 ?+ q$ g
    try* p2 Z, C6 L8 U; B* m& ~$ x/ p
    {4 T6 l/ c4 {: |+ {. E: H0 v& O
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         ) J# r, l% h8 c$ ~0 k
        stat = ITK_auto_login();                                          - M& Z/ O  N8 W: P" \) m8 f
        stat = ITK_set_journalling(TRUE);
; A9 I0 x8 F; k! m        
! x8 Y7 o$ c6 J; k, G1 \! y        char item_id[ITEM_id_size_c +1] = "0000000";) s" e( u9 S  a5 V9 e' Z" a! E
        char *i = ITK_ask_cli_argument("-i=");
& ~+ J/ S( A: K: A        0 F! i" \; [4 T, K1 d# P
        if (i != NULL) strcpy(item_id, i);
( r# A: X% s& B* r; I        cout << endl << "    ID: " << item_id << endl << endl;
. z7 t# D+ X% o6 O" Z; s        
. j; p- |# _% T4 L/ v7 a        tag_t tItem = NULLTAG;
: d# Z; E$ h, b. K) r9 ~        stat = ITEM_find_item(item_id, &tItem);* [' R+ \* v  i7 K, E  N# J
. v3 e" Q: T) e2 {, t: j% `
        tag_t tLatestRev = NULLTAG;
+ C9 F# v! l& I2 J) R        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); ' a9 p+ Q! G( X
  y2 w. e6 W) \
        char *pszType = NULL;3 C* l3 o! J  ?
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);# m; V9 S; Y% o! M* W  i
/ ]1 G* R/ t6 h0 N4 m. b
        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();$ n* ^( e% C1 x  i
        
3 C3 @& b! D2 P& I  W        string revOp = "Revise";
3 U6 n( H# U: z. L1 c        ReviseInput* pReviseInput =
) j$ Y: E# I  `8 M) d5 P. j            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));+ }8 G, g; g+ R. T# ^' R+ j

% \! G3 m+ B  P' F5 h6 {3 m3 x! {- ~        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
: f1 B9 }1 w$ Y% J        
7 K( o& i/ _; z2 o2 Q        vector<Teamcenter:eepCopyData* > deepCopyData;: @% [# O/ d' E7 i3 w
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);! E4 e" v. s# d$ ~
        + {# Z1 f  i! y/ E
        pReviseInput->setLogical("performDeepCopy", true, false );0 ^+ l" k- J6 P: m. I# A9 |
        9 {$ P" a) D9 `9 ~0 r
        tag_t tRev = NULLTAG;
( H8 a& a9 W" k% U, O: Z$ E, o3 P1 l        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);
, |9 s# y+ |% q* D: u+ H3 _: g/ V+ {# d
        stat = AOM_save_with_extensions(tRev);0 H7 D* B* z1 s( q' y3 }5 T/ u
        
# ~4 `! D0 ?: m9 Z' O, S: B        char *pszId = NULL;
& l' e; x9 O1 E8 {% |        stat = WSOM_ask_object_id_string(tRev, &pszId);
( m4 z3 u" a* P. A1 u! j        cout << endl << "    Object String: " << pszId << endl << endl;
5 v* j0 o& ?( _  @8 C6 h7 Y        
# g8 Y7 O/ b, I/ G7 v; H. T        if (pszType) MEM_free(pszType);
/ E# X' M/ D3 z0 v& w, t+ v) I        if (pszId) MEM_free(pszId); * B9 F% i2 O. x2 ]
    }5 C0 Z$ L0 G; d2 Z5 F2 ^, l  J
    catch( const IFail &ex )% ?& H" g1 [3 ]2 N1 @* }( s
    {: x: R" X% o; [) U
        logger()->error( ex.ifail(), ex.getMessage());
) Z$ W2 B+ O3 G. l+ z0 V8 v        cout << ex.getMessage()  << endl;& z7 [1 R- b' J' d7 z
        cout << "error " << ex.ifail() << endl;        ) B9 W: E1 C6 F
    }2 l* @& r1 p6 X+ Y0 o7 T
    const char* syslog_path;
  k% n& X' S$ d    syslog_path = EMH_ask_system_log();6 W9 U. T3 g2 b( j
    cout << endl << endl;
* U, U" W6 b% H" g1 k) W; g) T    cout << syslog_path << endl;
+ H% V. y$ V4 J! A3 I1 z
$ F1 a' a9 A$ f$ M3 T* S    stat = ITK_exit_module(FALSE);                                       
8 N6 l, y# X" L$ g/ s. _    return ITK_ok;
. E9 K5 @' \, K1 _2 x: O# n}[/mw_shl_code]
6 A* m1 d: n. B# W! r" d9 u9 R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了