PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

admin 楼主

2020-2-8 09:27:38

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

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

x

: A! e; C, F: F- V% P( ?Teamcenter二次开发源码分享: Revise 版本 升级版本方法
% O4 `  [/ g# F2 n
6 a1 a: e& |+ Y* I; e! h/ V' V& ?  W, L
[mw_shl_code=cpp,true]#include <TC/emh.h>
8 G$ m" [& j6 W: F#include <tc/tc.h>
' s0 `: `4 y2 V# O#include <tc/tc_startup.h>7 C! R0 W, {* E/ E& m
#include <tccore/aom.h>
8 L' {8 [8 D/ A- t$ A+ Z* `#include <tccore/item.h># H+ A2 `9 H4 o/ A5 d* f& _$ V
& d7 O2 p8 ~* E' {+ q
#include <iostream>
$ D& M1 e1 k+ y' c5 @#include <vector>
9 q1 p0 z# m$ C( A9 q- B8 @5 q% y#include <base_utils/IFail.hxx>* _2 O$ ^9 R) f- c& K
#include <base_utils/ScopedSmPtr.hxx>8 _) S' c3 {, V5 K7 j
#include <base_utils/TcResultStatus.hxx>- I- ?1 `- H5 E- j7 l
#include <metaframework/BusinessObjectRegistry.hxx>
5 \) W8 |; i7 {0 `#include <metaframework/ReviseInput.hxx>1 v5 p& q0 a5 ~% y( `( y- N
#include <mld/logging/TcMainLogger.hxx>
: u  \8 ]& C9 u) z7 T#include <tccore/ItemRevision.hxx>$ ]9 ~0 q! a7 I5 ^5 h+ s2 `
#include <metaframework/BusinessObjectRef.hxx>
* c9 {0 H; e6 f& p. h#include <metaframework/BusinessObjectRegistry.hxx>
! p8 Z* G8 }6 o: l0 G4 J#include <metaframework/ReviseInput.hxx>
7 Q/ \+ V4 u! H7 x% V/ |5 w" K2 N
using namespace std;
  P- ]: }& _2 w) t8 N2 i% J4 uusing namespace Teamcenter;
5 b; i9 `7 [# t+ r1 o2 M7 X, [) nusing Teamcenter::Main::logger;
( g  ]+ U% H' U- n
# a6 |; P8 r: Eint ITK_user_main(int argc, char* argv[])( f3 F- ]% I  Y) ^/ `1 X
{
0 ~. U* ?) B% {# V& f6 H/ U* d    int ifail = ITK_ok;
- X, E- s# I9 V% @    ResultStatus stat;6 b7 h5 G  f4 g- d" Q
    try
# i0 @# r, I8 p+ d# G& d( G    {
6 _- ?" a6 G# ~2 H. [        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         
* u7 k& h$ E! }& g0 z; M" N" L6 @6 Y$ v        stat = ITK_auto_login();                                          : N( N1 b4 g( n: ^" K5 Q' }
        stat = ITK_set_journalling(TRUE);
  f: w* b! j7 q( M. \          p1 s* D: @' D$ _3 t% m
        char item_id[ITEM_id_size_c +1] = "0000000";- r" H/ _. ^7 K/ g. a1 e( ]; [
        char *i = ITK_ask_cli_argument("-i=");
- O: g5 l7 b6 W0 c! E9 i        % \3 g. ]+ y8 A
        if (i != NULL) strcpy(item_id, i);
6 r, o8 s# K+ J& E, U" s2 O        cout << endl << "    ID: " << item_id << endl << endl;- t6 j0 ^7 }; `' L
        . Y/ A( u* u, {8 B$ R( F0 S/ {& n5 P0 q
        tag_t tItem = NULLTAG;* H" m) d' r# g1 {$ u, f
        stat = ITEM_find_item(item_id, &tItem);
/ y& o3 n6 z. F9 H: F& {) j8 h6 U2 P8 [% @+ a" ?# c- ?
        tag_t tLatestRev = NULLTAG;6 H0 _" ?2 Q4 s& h' ~
        stat = ITEM_ask_latest_rev(tItem, &tLatestRev);
; X# O) b8 k! w: _8 w: K' X" n5 O6 p3 h- H) U
        char *pszType = NULL;
% |& @: g/ q) m1 Z        stat = WSOM_ask_object_type2(tLatestRev, &pszType);8 g) _$ v6 w, Z( \

7 t, K: p% m* F9 I% R! s, R        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();$ G- g1 T% m( k& h
        
1 Y  M: B) k( [; P( p: C        string revOp = "Revise";* k9 Q6 G) r* k
        ReviseInput* pReviseInput =
! b" l( x2 r4 e! m. S  m            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));, D: o5 r8 ~8 M

, [4 e) \1 ?. j9 S6 g        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);) t8 A" v1 W7 f
        
, y; [- C, f0 w/ B# C        vector<Teamcenter:eepCopyData* > deepCopyData;0 }- V# I- |% Q/ |
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);/ m1 [3 ^- Z' I1 p) C! T; }
        
5 a% y& z7 X% t        pReviseInput->setLogical("performDeepCopy", true, false );4 u  f9 a! n3 Q, E; H
        + u1 F- p( w% Q0 c% O7 L
        tag_t tRev = NULLTAG;
4 s% r  O# R8 @+ S+ M) C4 N4 h        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);
9 V4 t9 S- T! ~( J* Y/ }/ G% h' x9 v' {  W$ R4 v
        stat = AOM_save_with_extensions(tRev);
/ n, P0 q6 z3 R3 }, U        / [& ~9 d* P; [' x" E* j8 F4 _
        char *pszId = NULL;
0 y+ q/ j$ b& e# S2 b% m4 h' E) Y        stat = WSOM_ask_object_id_string(tRev, &pszId);& X7 A& E# H1 x& l9 F, H3 Y
        cout << endl << "    Object String: " << pszId << endl << endl;
% h- m- z2 U# j6 r        
7 a( a% W( y2 Z1 \- _. t        if (pszType) MEM_free(pszType);1 L+ \% e3 v! {+ g4 {# r2 n- g" L
        if (pszId) MEM_free(pszId);
* `" J3 j7 V$ W. k1 o    }
0 D$ [+ L! I6 ^6 h    catch( const IFail &ex )3 b! j4 p* D0 m$ x9 Z. |' z& v
    {" D% @% s2 k: X2 Y4 J4 U- O0 ~# e
        logger()->error( ex.ifail(), ex.getMessage());- Z+ p) h, b  F6 z) R
        cout << ex.getMessage()  << endl;: Q# `0 V/ B1 l" ?  v
        cout << "error " << ex.ifail() << endl;        
8 \- x6 P- W, N% f9 M7 c    }& x0 d6 M! {+ _8 u5 k) k6 D
    const char* syslog_path;! G0 ?9 v. O6 ^# Y
    syslog_path = EMH_ask_system_log();3 {& a: J7 @4 c. b. o9 m  j; ^
    cout << endl << endl;$ s% b) T; o, U6 h
    cout << syslog_path << endl;9 V  k) `0 N- d- A6 q% `

+ Y0 R: K. J) e" P7 x* P& W    stat = ITK_exit_module(FALSE);                                       
+ }" K3 r  [! m- k5 N! S7 O; C    return ITK_ok;! g6 i9 U3 U# U: x
}[/mw_shl_code]
' B  {  n+ h& F0 U3 A+ r& Q9 s% [4 E
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了