|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
; a+ h9 e1 d( s, u; H& d( m8 d, M+ U7 P8 V
[mw_shl_code=c,true]
9 h. C0 y$ `4 k3 J+ y. U#include <stdio.h>
+ d" Z |3 O4 B6 L3 B. c9 J: h#include <stdlib.h>
" F1 v, L* ]7 c2 N#include <string.h>
& @" q+ I; M; U5 e4 E#include <uf.h>
& ]% t* u1 m8 G7 W6 y! m#include <uf_ugmgr.h>
- X+ J7 `, A2 x6 J) @# d#include <uf_part.h>
$ [- A+ b9 d' g$ M8 X, }#include <uf_assem.h>
+ f5 [# Q" [6 i8 g#define CHECK( func_ ) \4 |: z5 s0 E! z1 @5 f8 }, }
{ int ifail_ = 0; \
1 z4 z' |; y4 ?1 [# E3 q char message[133]; \( ` W5 h4 {$ C) x2 T1 n# K6 f
ifail_ = (func_);
; I8 }1 v1 D/ s: l4 g0 W if ( ifail_ != 0 ) { \
1 R p- G+ D+ ?3 f7 F, X UF_get_fail_message( ifail_, message ); \- U& I% V; ^" v0 r% g* N8 H, G& r
printf("ERROR: %s returned from %s\n", message, # func_); \
[. `( P9 R+ h return ifail_; } }# N# U" m N% k) }% |' B
static int create_part( void );( A2 r; u2 J9 M* b5 q
static int print_work_part_info( void );% ^ m% U. R/ t8 m" x
/*---------------------------------------------------------------*/) }3 }% l6 T$ |# t# t# Y4 S
int main(int argc, char *argv[])
; E/ `5 X e/ E$ @{& H* H; I+ u1 P" I4 o
int ifail = 0;9 m: Y( q4 Y' _. I
ifail = UF_UGMGR_initialize(argc,(const char**)argv);' w7 }0 S1 l% r3 \! E% j7 }
if (ifail != 0)" e. U- R' \6 y% s: ]
{) \; \; P8 ~, A9 `) L5 N" v
printf("ERROR: Failed to initialize with error code %d", ifail);) W4 c6 M& Q9 ?. f8 j" X9 H# M, k
exit(1); _8 W9 F+ Y; L/ G# x, E& h
}$ O, @& O2 ]% s4 d2 r
create_part();, r) b$ G1 f L& I2 \' Q* T
print_work_part_info();
, R5 }( q7 [6 {% r, [ C- b UF_PART_close_all();
( x; S( ]6 ~9 L8 U5 p2 n UF_UGMGR_terminate();
/ L% p/ t( H5 B/ Q$ l- M: R return 0;2 f0 p6 e- F# O9 r1 ?. ~8 S
}
1 m, r" @ C7 n3 Q$ [, @/*---------------------------------------------------------------*/
; }7 R! \: i( M/ dstatic int create_part( void )
2 _9 d: d8 p: ?% i( Q{% `; j% F) n8 b% V6 x
char* part_number = "600-A-wej-mk1-eng";
4 k- L! t! x" ~( @- x1 q: } char* part_revision = "A";
2 y4 A- W8 a4 d j char* part_file_type = "master";
; \3 Z: b$ P% O8 `; O: j char* part_file_name = "";: [9 {+ d8 ~$ k! y# |; C/ d2 D
char encoded_name[MAX_FSPEC_SIZE + 1];
4 e* }% Q) T. f* f tag_t part_tag;
' v- c0 A$ J3 u: Q0 C' M4 b3 X UF_UGMGR_tag_t db_part_tag;+ @' n4 V' N9 @- D |3 M& u
UF_UGMGR_tag_t root_folder;
! c8 x7 [; F' R. W8 I char root_folder_name[UF_UGMGR_NAME_SIZE];, o7 y f0 s' ~# A
int i, count;
' R' d) I% {( R& @, A4 T UF_UGMGR_tag_t *folder_contents;
8 o r0 \9 R& L: @* X1 { UF_UGMGR_object_type_t object_type;- g0 u& C. R( q" `) F+ W
char folder_name[UF_UGMGR_NAME_SIZE];
0 L0 ?3 l8 M" `8 o+ x- X: {" r logical folder_exists = false;9 b# O# R; ~- A, Y# A- G
CHECK(UF_UGMGR_ask_root_folder(&root_folder));
1 a6 \% `* G D2 P2 v, { CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));# K1 t! i( [ e1 L
printf("Root folder is %s\n", root_folder_name);
" z4 w2 h2 T" H0 z! M* y3 _ /* Scan through the root folder, looking for a folder called; q/ J, F* j, T( d
"Test Set Default Folder". If this folder exists, set it to be8 N- V; \7 y2 w# v& r2 \% Z" j
the default folder into which newly created parts are: R& M* U3 J$ K" Y$ ?' W5 d- K$ z5 g
placed.
7 Y7 @# i( L: e0 `/ g+ ~0 _/ F# T */ j7 _9 W0 `( \/ i2 N7 X2 W* t
CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
2 Q k& _1 I! I$ z! ] for ( i=0; i<count; i++ )
' v, k) R1 Z) W9 c" n {6 w* Z; B- V J
CHECK(UF_UGMGR_ask_object_type(folder_contents,0 G: F. \' s" j# ]( \9 W
&object_type));$ j' T7 k. k* u, A, Q: i) T" M/ r
if (object_type == UF_UGMGR_type_folder)
0 F$ h7 ^6 N2 c0 q" a, g {1 X- x$ _* [+ s, w; O
CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
8 }, n: _$ r1 g7 n- y. k if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
( R: c% m) C/ }" C. T* ? {
8 W: c* f& h- f/ A& ]; @2 S printf("Test Set Default Folder exists\n");( g! |6 i( Y+ L j1 t: j& Y
CHECK(UF_UGMGR_set_default_folder(folder_contents));1 f8 c( [2 u% G. N4 P8 F w6 v3 V
folder_exists = true;
7 C6 y' l) ?' L6 |0 e3 ]: L/ v6 z printf("Set default folder to %s\n", folder_name);
5 a. h, L6 Y% l { }8 f: g6 o; h- b8 T2 k4 s( J- H+ H
}: U' p- m* q2 Y) v" M
}; g" @* `5 J; O# M
/* If the folder "Test Set Default Folder" doesn't exist, set the, Q/ n; `5 B2 j% a
default folder to be the root folder.1 _9 J l+ ~+ k! I1 `2 G" h4 \! j1 l
*/
, g7 F: K! K: _6 ` if (!folder_exists)
: `1 N$ q1 t8 j+ L: ]" V {% E4 S$ v5 K! ]) _. G# Q
printf("Test Set Default Folder does not exist\n");
, C2 L7 Q# k0 q; c CHECK(UF_UGMGR_set_default_folder(root_folder));
) y" o2 z) C; M# n printf("Set default folder to %s\n", root_folder_name);. D+ T4 E; C# H5 [
}2 a' T% ]$ [4 P4 o s" N! ~
printf("Encoding UG/Manager part filename...\n");
( Q- k( }2 S- u2 f9 D0 a2 s! _; E# R CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
2 p) c& B' e& l+ ]( A part_file_type,
$ L1 Y8 f3 T# r8 P3 T part_file_name,( h# q, h5 P B0 f m
encoded_name ));
& v2 [0 ]8 l) R0 L6 U/ l CHECK(UF_PART_new( encoded_name, 1, &part_tag ));' ]. @& {( W! [/ q7 h
printf("Created part...\n");
7 l* L e. H0 M5 u8 O CHECK(UF_PART_save());
$ L! s1 K: |9 o9 Y' f: t# J! k- F( U printf("Saved part...\n");
) h- r. Q) v! x! c CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));: x1 o' O4 v" [$ N9 {# A2 f
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",! d; q. ?( N" M1 Y1 m
"Mk3 Engine" ));4 a& O" H0 E) z- ^ c D* ~( Z0 m
printf("Set part name and description...\n");
. k& B3 }* ~; a9 Q1 { return 0;, [7 w& {4 W5 q3 u( I: j8 ]! E
}
) q$ _- O$ v E/*---------------------------------------------------------------*/
% j$ j& C5 R/ j9 G% @# istatic int print_work_part_info( void )
' f' D; o; ]* E" T( m. I9 H6 S3 q2 y{3 ~0 N1 Q/ k) s/ g
char work_part_name[MAX_FSPEC_SIZE+1];3 W; J! w: ]8 H6 y/ C
tag_t work_part_tag;( `4 H# o, k/ R7 [
char part_number[UF_UGMGR_PARTNO_SIZE+1];
# N% S1 ^+ i3 |: { char part_revision[UF_UGMGR_PARTREV_SIZE+1];
! t$ b+ U& V) {7 e char part_file_type[UF_UGMGR_FTYPE_SIZE+1];
" Z8 t, M5 a3 H/ g/ m char part_file_name[UF_UGMGR_FNAME_SIZE+1];2 T1 M' U( V/ E; Y* w3 L& A r0 v1 m" T
UF_UGMGR_tag_t db_tag;6 J) N$ P0 N& C' J8 {9 K
char part_name[UF_UGMGR_NAME_SIZE+1];
. ^( B' ~/ }* w' ^ R char part_desc[UF_UGMGR_DESC_SIZE+1];
) d7 m6 P$ e. q4 B. B work_part_tag = UF_ASSEM_ask_work_part();; M' x/ e8 S9 Z
UF_PART_ask_part_name( work_part_tag, work_part_name );# W0 r2 O1 y, z# _
CHECK(UF_UGMGR_decode_part_filename( work_part_name,
* S8 q6 L! G1 F Y# f, H8 y part_number,
- i" L: T, r( g$ M! M0 _9 m part_revision,0 X' [; W2 r+ J2 r+ [( N8 Q
part_file_type,
0 q9 K; q. Q5 G+ ^( t) s part_file_name ));' T1 A. B/ M5 v7 x5 R
printf( "For the current Work Part\n\n" ); R7 C, D: G) N9 [# v
printf( " Part Number : %s\n", part_number );2 o; r. J7 M3 t- ]
printf( " Part Revision : %s\n", part_revision );
/ v( _5 L. n" Q/ Q printf( " Part File Type : %s\n", part_file_type );
2 o. s5 O* t: O: J printf( " Part File Name : %s\n", part_file_name );
- A- d* v$ B$ N |" K$ D CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));' y- k0 B1 {" r( e6 S- H
CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
( I, s1 B% I3 s5 T- v! O! H, ~ printf( " Part Name : %s\n", part_name );
; T. W# B! E7 {6 g printf( " Part Description : %s\n", part_desc );
9 O8 ~2 @( c9 c# y return 0;
- b. _$ Y( u/ d4 d- Q& R}[/mw_shl_code]: f2 \+ i5 @" j, S( T1 @0 k
|
|