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 2638 0

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

admin 楼主

2020-2-8 09:27:38

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

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

x

4 W+ ]: p4 O/ uTeamcenter二次开发源码分享: Revise 版本 升级版本方法
0 V% M+ `: z$ R7 {$ u, w
3 J8 Y: v5 ?  {- [/ L. z+ p) s  r" k" a  H, v
[mw_shl_code=cpp,true]#include <TC/emh.h>6 [, B: Q8 i* o& O5 k! m
#include <tc/tc.h>
5 e& D, D, f0 x* j. q9 ]$ z#include <tc/tc_startup.h>
( Q6 _) @5 M9 M, Z/ u( g& U: z#include <tccore/aom.h>2 t* h, L7 A: H5 h
#include <tccore/item.h>
9 K' L  t, `4 I2 s+ C/ Y" P$ B7 |/ g  x1 t4 N' }* o; {
#include <iostream>1 x& e( r$ y3 G8 `+ V4 {
#include <vector>
* A; f2 {) r6 |1 Y! s#include <base_utils/IFail.hxx>
, F* X  J' ^! Q* ?; z" ~5 f#include <base_utils/ScopedSmPtr.hxx>
, P% f0 b+ g3 N( o#include <base_utils/TcResultStatus.hxx>
! [; R- Z( t) d$ }2 |; P#include <metaframework/BusinessObjectRegistry.hxx>1 m, m% X/ N2 E8 D2 ^6 }
#include <metaframework/ReviseInput.hxx>
! |9 Q! [. I. ~" x#include <mld/logging/TcMainLogger.hxx>
, \$ B. H' U9 e* L( `8 s8 w% u3 \5 C#include <tccore/ItemRevision.hxx>
6 t4 Q1 Z* R. g#include <metaframework/BusinessObjectRef.hxx>; M, x$ ^& @3 G8 b
#include <metaframework/BusinessObjectRegistry.hxx>5 S2 h* p* ~+ k% @9 D: h/ \/ x
#include <metaframework/ReviseInput.hxx>
3 X6 k9 O; }- M+ P& ~. ?* n8 Z! u" t. K% M8 F; b+ @6 W
using namespace std;' \" t0 J) g' H
using namespace Teamcenter;
+ q8 L! E3 c' z+ V. {' }using Teamcenter::Main::logger;, A  P, k6 I; H  B- d6 \, K
% y$ T" B; F2 z1 J) g
int ITK_user_main(int argc, char* argv[])
1 ^& }$ x) h1 b, O{
7 L% _2 J3 t( c# F" ?( O* u; I6 M    int ifail = ITK_ok;# {; K/ z' Z) h
    ResultStatus stat;
' G; e" u% S  i3 d, u( x    try/ m  e7 d0 `9 l! i* N5 J1 g
    {: w3 o# J- Z& P! h$ s: @9 k1 U3 }
        stat = ITK_initialize_text_services(ITK_BATCH_TEXT_MODE);         3 B& q8 |+ U; w' E
        stat = ITK_auto_login();                                          ; S5 E( N5 J+ T; v
        stat = ITK_set_journalling(TRUE);- Y# |7 V8 h! o+ T- G
        + }, l. ~+ H$ W/ M& X. k0 y4 X
        char item_id[ITEM_id_size_c +1] = "0000000";
) @* c) s! j! o% M- ^* f* I        char *i = ITK_ask_cli_argument("-i=");0 D. ?' m7 m  _; h
        ( \+ q3 m9 f- p3 Y; K
        if (i != NULL) strcpy(item_id, i);
6 L% @" ~( a, @        cout << endl << "    ID: " << item_id << endl << endl;" ~7 X5 H4 h/ p- U6 ~3 y' c. e
        . d% `& ?! B. `2 J9 U+ s, i
        tag_t tItem = NULLTAG;
6 I2 `2 i0 E8 F- j3 {5 }        stat = ITEM_find_item(item_id, &tItem);6 w. i  v* Y5 g# W7 n
2 Z; T( \% k* E0 j
        tag_t tLatestRev = NULLTAG;
9 ]% G' h2 U( Z! ^5 z        stat = ITEM_ask_latest_rev(tItem, &tLatestRev); 8 \1 Y# M% U9 A0 J8 y$ F

& Y) Y( y1 b" a+ l: X  r        char *pszType = NULL;& S% ]# \* P+ B! I# d( ~6 @
        stat = WSOM_ask_object_type2(tLatestRev, &pszType);
' F( y5 m, g% B& g3 f
# ]: I  V. k  z+ ~6 O        BusinessObjectRegistry& boReg = BusinessObjectRegistry::instance();2 F& c+ C. k+ M; \0 w- ]8 _
        
# Q9 l' G8 v$ `0 H% a! E        string revOp = "Revise";; S9 M- z0 I3 O
        ReviseInput* pReviseInput = . u5 W% r1 G+ ^; G# v8 L3 J% X" r
            dynamic_cast<ReviseInput*>(boReg.createInputObject(pszType, revOp));
9 L' p5 p2 g2 d' e) Y* _, d$ \$ R. }# r1 {4 l8 l5 x) _
        BusinessObjectRef<ItemRevision > boLatestRev(tLatestRev);
% P) t& e! c4 [. z9 X# b* \        
, G; h" F3 E7 b        vector<Teamcenter:eepCopyData* > deepCopyData;/ O3 y; o* @1 f. C8 F' D
        boLatestRev->getDeepCopyData(&revOp, &deepCopyData);1 p3 r( L: W2 ~6 E2 r/ m, g
        
. T7 ]. e0 G8 z8 z0 l        pReviseInput->setLogical("performDeepCopy", true, false );% ?$ ?5 H7 m+ ^0 j( _
        $ i4 }; N" C! O% u6 `! D! Q
        tag_t tRev = NULLTAG;
* v% q8 t$ m! `        boLatestRev->revise(pReviseInput, &deepCopyData, &tRev);/ g7 j! h( p8 V- _
, |9 i  k& B: P# ^
        stat = AOM_save_with_extensions(tRev);2 p2 \: }7 K) L6 g: ~
        - `( L9 ?4 Z5 G6 ?+ L
        char *pszId = NULL;/ n% w; N  ?" q& C
        stat = WSOM_ask_object_id_string(tRev, &pszId);
" x. O% I) U+ N* D, u        cout << endl << "    Object String: " << pszId << endl << endl;
  A- G* w* A' b        
2 c0 o$ J, G8 W        if (pszType) MEM_free(pszType);
# n5 L3 h7 P6 W, |0 C" B        if (pszId) MEM_free(pszId);
+ ?4 N! {% b# Z+ {: O; G    }
, \8 e/ h, e2 W, w+ y    catch( const IFail &ex )* k& ?/ A% z; e' K
    {
* H7 H! T2 {: b' r5 k7 B        logger()->error( ex.ifail(), ex.getMessage());
1 d( F1 Y& r4 g! E7 Z        cout << ex.getMessage()  << endl;; f; u: a) q9 x
        cout << "error " << ex.ifail() << endl;        , m+ b3 z5 ]% O1 f
    }
: u$ A7 Q! Z* i7 Q: K: M    const char* syslog_path;- K; _8 I+ n& M5 \- E- F; C
    syslog_path = EMH_ask_system_log();+ |# B7 y, v3 M) y' m9 H' t
    cout << endl << endl;; W' q6 l: F4 _# _7 z# q5 |1 M2 o# D
    cout << syslog_path << endl;
$ k, S6 k; t- W& z6 V# x' `5 q: D5 B8 u- t
    stat = ITK_exit_module(FALSE);                                        7 z) ^8 ^, n3 {' E' ^9 w
    return ITK_ok;. E6 h9 _' f, i* V' V, G5 |
}[/mw_shl_code]
# @/ b  D3 a( s
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了