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

[二次开发源码] UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数

[复制链接]

2017-12-7 11:22:15 2924 0

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 2017-12-7 11:22:15 | 显示全部楼层 |阅读模式

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

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

x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
6 C$ q% i, K0 g  a$ {4 q8 r9 s# M3 Z
[mw_shl_code=c,true]& p2 \! f9 u& H4 K# |0 T
#include <stdio.h>
" V6 j# k& s! q0 y% E; C#include <stdlib.h>7 ^% X& ?% w- G1 U& y+ A" H
#include <string.h>
5 [+ s3 T5 ?3 h3 e4 E#include <uf.h>/ F) L: M! p0 K  M0 m( R
#include <uf_ugmgr.h>  A7 c; N2 |7 P
#include <uf_part.h>
9 H' i, e; R& E; z. Z#include <uf_assem.h>) d/ [1 A7 M! b; g' g$ }
#define CHECK( func_ ) \2 |$ {) ~+ b  M( _
{ int  ifail_ = 0; \# Z8 M) B  R6 N% C
  char message[133]; \5 `* N" p+ K# \2 E+ d
  ifail_ = (func_); ' X( {3 J3 @0 c9 }& S* ~* P5 {4 H
  if ( ifail_ != 0 ) { \6 k' Z! T% g3 H% z7 c2 C9 k" N5 j
    UF_get_fail_message( ifail_, message ); \
# x: q2 g% r2 n# E3 {  z6 U6 b, c% a    printf("ERROR: %s returned from %s\n", message, # func_); \6 m' b8 a, t* F) T5 p, m; H1 z* F) m
    return ifail_; } }
2 l. {* }- q5 c" H. M0 z0 u" u. Bstatic int create_part( void );
. i" s* L7 Y  u0 m( o. G9 s7 S2 lstatic int print_work_part_info( void );9 A. G# q  L+ w+ I3 a+ F
/*---------------------------------------------------------------*/( V. H5 [& r# |9 F7 `# [) P9 I
int main(int argc, char *argv[])
8 J+ g% E( P. c, i" v; i+ U{
) `, F  A2 i" b0 q+ v. F  int  ifail = 0;% O4 J: T2 q, h  o7 d. X* K) m9 S
  ifail = UF_UGMGR_initialize(argc,(const char**)argv);
5 H6 D$ a% S8 _# J1 B: N1 F. s  if (ifail != 0)
1 E) \, V- Y2 L! W+ ~3 }" @  {
; F- g9 L  F2 k' @/ {    printf("ERROR: Failed to initialize with error code %d", ifail);
2 E# E! C; H4 Q: r2 `    exit(1);
/ i/ A/ g" {" j+ q& r, E, A# I     }3 Z; B1 a( w+ M  n" e+ L
create_part();
/ J9 K# u$ e. F5 m" u  print_work_part_info();
/ \4 w7 g! x9 i  B+ D  UF_PART_close_all();
% {, Q5 o8 _, ^  UF_UGMGR_terminate();
  j. r& Q0 R( \+ m) S" b  return 0;8 ^4 r' |. G, r  h+ x
}
2 N3 I+ S! V+ K& z% x* u/*---------------------------------------------------------------*/
# z$ Z+ V! S. b3 Sstatic int create_part( void )
" `- }: @& S9 m) g2 x{
1 c5 r7 k; C; y) I: c" e* f+ l. ]  char*                   part_number = "600-A-wej-mk1-eng";
5 x# j  i: N+ q: m2 z& W8 J  char*                   part_revision = "A";
% J' g' y1 q) z1 A0 B  J, |' ]  char*                   part_file_type = "master";% W2 n& ^: i1 M( k
  char*                   part_file_name = "";7 ?$ h3 ~! U6 z5 N% H. R5 O
  char                    encoded_name[MAX_FSPEC_SIZE + 1];
( O4 V, L' u$ R; q  tag_t                   part_tag;
3 O3 B  m7 P- z; L8 g  UF_UGMGR_tag_t          db_part_tag;0 y( a9 s4 v# g, F7 J7 z% N/ y
  UF_UGMGR_tag_t          root_folder;
& [$ L7 y. Q2 l$ ~( X  char                    root_folder_name[UF_UGMGR_NAME_SIZE];( Z+ h6 t: N. K! o
  int                     i, count;
" n0 D3 u/ l' q  UF_UGMGR_tag_t          *folder_contents;
5 s8 Z6 }1 z, e( s$ b  UF_UGMGR_object_type_t  object_type;- Q1 H7 }0 X+ q2 a6 p8 Y
  char                    folder_name[UF_UGMGR_NAME_SIZE];
: n6 a; m# k* a- q, k  logical                 folder_exists = false;
) n6 H. s2 f& U  CHECK(UF_UGMGR_ask_root_folder(&root_folder));
6 `5 f5 Q( ~1 y, F# ?9 i2 b1 s  CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));" C' X! X1 ~2 b+ \
  printf("Root folder is %s\n", root_folder_name);9 c8 w/ v$ W+ ?% V. t. v1 K- S0 U
  /* Scan through the root folder, looking for a folder called
8 i2 _/ d2 O3 K3 c4 @6 |) w& r     "Test Set Default Folder". If this folder exists, set it to be6 [! ?/ \2 \) V$ B4 ]* T$ b
     the default folder into which newly created parts are
# F) ?: E6 ]3 g1 z2 [) P     placed.8 I% x' A* N" B6 r5 w5 l! a
  */
) ?4 M7 o# }: Y) @1 I  CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));* u. q# b4 R, T, \, a- j
  for ( i=0; i<count; i++ )0 S) A" d4 P# t- P, {& ?7 ]
  {
! Y( o- Z( R" e# g( d    CHECK(UF_UGMGR_ask_object_type(folder_contents,
& Z1 _7 `' ~; C/ P* j* B3 U3 s. I   &object_type));% m. p5 F! k% n' O0 y2 q- |3 \+ k
    if (object_type == UF_UGMGR_type_folder)
4 v6 a( c! K! w2 r  K  n    {
4 x1 P' x+ Y2 H- V4 e      CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));, C* \8 K0 a6 I  F: P) j  C
      if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
3 w& @9 i( ], [      {+ N1 f3 O  c7 a, T7 ~' N% U
        printf("Test Set Default Folder exists\n");
" `9 S# ]8 `- p! ~        CHECK(UF_UGMGR_set_default_folder(folder_contents));
3 o7 F* w5 c* E+ U8 e6 u1 T: `: ]! S7 K        folder_exists = true;* s6 O; A2 |0 n8 F7 n
        printf("Set default folder to %s\n", folder_name);
/ C" x8 T+ x7 q+ c2 b& ~1 ^      }
& J( y& ?! |+ X0 g" s* G    }1 c4 B% @5 |4 j" y% M1 ?
  }; y0 U% \: k" B
  /* If the folder "Test Set Default Folder" doesn't exist, set the
6 a7 z0 d, v8 t0 F     default folder to be the root folder.
( ~7 r6 M( K* x$ s0 p% x% {  F. s  */3 U% e! m% ], n% `) O
  if (!folder_exists)1 N: i8 \9 K& _: U
  {; ^: `' h- q: a/ k) ~: _
    printf("Test Set Default Folder does not exist\n");
2 C- u: l: [8 t    CHECK(UF_UGMGR_set_default_folder(root_folder));
7 K1 ~; \$ ]& z1 j# U- J& @6 V    printf("Set default folder to %s\n", root_folder_name);: O7 O- Z$ y3 [5 z. ?
  }
& S% j; |2 z! D- m1 w) Y: _3 Z5 i  printf("Encoding UG/Manager part filename...\n");5 D- e8 E" B' l% L
  CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,3 a5 p" u# `7 s0 n
part_file_type,- t/ h; Y+ n  c" W  ~
part_file_name,& a+ K" K2 x( l5 C0 R
encoded_name ));; d3 y7 V( c& Y- S9 Z3 z+ Y/ H5 O
  CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
" O* l* E8 ^  g! X  printf("Created part...\n");0 `1 t% g& P6 N! f$ d4 }
  CHECK(UF_PART_save());+ s  G! v( y% z1 ], Z* U1 a- E! D8 x
  printf("Saved part...\n");
; k/ \5 k: Y' U- S$ Y8 ]- Q  CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));+ \6 `/ `) k. p: f) H- R( J& U
  CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
. {* M+ e) r! ^) x5 |"Mk3 Engine" ));; {# J+ J. x0 ]. U
  printf("Set part name and description...\n");" O" z6 A. [$ [3 q* g
  return 0;. s- x( @) N! L' Z* C0 ^( H
}
6 q4 [  h6 w* X1 u' O/*---------------------------------------------------------------*/
, V( V" J2 a* T, z% m) G3 C% `4 bstatic int print_work_part_info( void )
9 o* J6 J4 c  c# Y1 f( g1 u5 l{# N9 [- c. o2 s8 G9 u" |4 [  J
  char             work_part_name[MAX_FSPEC_SIZE+1];6 \! H' A' O/ B1 R. A
  tag_t            work_part_tag;2 y' U" H- K3 u6 x
  char             part_number[UF_UGMGR_PARTNO_SIZE+1];
! k+ M* z$ e) ~  char             part_revision[UF_UGMGR_PARTREV_SIZE+1];. Q# P/ g, ?2 Z# o
  char             part_file_type[UF_UGMGR_FTYPE_SIZE+1];$ {, M" X1 M9 c# l* C  E  ]* k
  char             part_file_name[UF_UGMGR_FNAME_SIZE+1];
5 R) k% g( m8 [* {  UF_UGMGR_tag_t   db_tag;
% J* b) g# ?6 K- c- I8 R3 e  char             part_name[UF_UGMGR_NAME_SIZE+1];
8 J6 d" E+ W* q" g3 @! f  C  char             part_desc[UF_UGMGR_DESC_SIZE+1];% W9 R- d: {7 V+ R3 H& N
  work_part_tag = UF_ASSEM_ask_work_part();
" I" X: J4 S/ m3 W  UF_PART_ask_part_name( work_part_tag, work_part_name );
8 F# @5 v/ i8 H0 }5 j' K  CHECK(UF_UGMGR_decode_part_filename( work_part_name,
5 r& W, L: m# v, z3 ]0 W, R" X  part_number,
' `) {7 C% j8 Q+ o2 k& N  part_revision,* O7 S  O1 w+ h! M$ N8 F2 J
  part_file_type,9 j' G8 e3 C- L" j3 ?
  part_file_name ));
. E1 ?9 `  G0 V( ?0 e  printf( "For the current Work Part\n\n" );3 [  f" N" K0 p3 l( P# [$ N* X- ]
  printf( "  Part Number      : %s\n", part_number );& ]4 Y8 J5 A$ Y, Y
  printf( "  Part Revision    : %s\n", part_revision );* L9 S  R1 e5 c& _, b
  printf( "  Part File Type   : %s\n", part_file_type );
) J  ^3 i/ Z1 y0 b& @  printf( "  Part File Name   : %s\n", part_file_name );
; p- R; V# ^0 H CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
" W& R: z+ @* n# I  CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));# e4 j8 b2 J% ^+ n1 m& b( |$ h
  printf( "  Part Name        : %s\n", part_name );
# Q( p( G" G1 H# Y; g% F+ a  printf( "  Part Description : %s\n", part_desc );! {2 l( {$ t; b- |7 O9 }, E8 c
  return 0;
! ?/ T* J4 A& F. ?; \  Q5 V, R}[/mw_shl_code]
0 n& b% d" G% Q9 k  O
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了