|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。5 X' l$ E. `# x4 C& B* |. r7 L
1 i0 r9 g; r+ @9 p7 `) a
[mw_shl_code=c,true]
% m l [' J5 W#include <stdio.h>
5 Y9 W9 N9 s% ~$ B% H/ d5 S#include <stdlib.h>% |0 e4 L+ e8 W% h
#include <string.h>
- N; m5 v; C" t& |+ V4 R7 g/ \8 e#include <uf.h>
1 x% `3 C. @+ f' k3 ~: Q#include <uf_ugmgr.h>- h3 F9 g9 l9 e" X$ o( L
#include <uf_part.h>
, v6 z1 i7 `9 X% x#include <uf_assem.h>
# k; d& ], @9 Z' i6 ~, S#define CHECK( func_ ) \
6 i% d/ S; c; ~ x9 W{ int ifail_ = 0; \
: }) _+ y( j" y, g$ a F, v6 ~ char message[133]; \
/ D. J) p. X3 d% L4 [ ifail_ = (func_); * e% n& t# [8 o2 C6 }0 |
if ( ifail_ != 0 ) { \: \! H! g7 ?3 }
UF_get_fail_message( ifail_, message ); \
, F1 H9 ]) D: R' c printf("ERROR: %s returned from %s\n", message, # func_); \& |7 l c, `+ ^) q8 n) C) }2 f0 ^
return ifail_; } }
! O' w: M' a m& W% o1 Wstatic int create_part( void );6 ?: a% _3 k4 i' T" r9 S5 n" o
static int print_work_part_info( void );
) ?6 p* V2 d; A* v6 K/*---------------------------------------------------------------*/8 g7 W6 `2 ?& P7 D
int main(int argc, char *argv[]), @- R! u Z# h0 B# N9 K& ?( k/ y* a
{
6 o" R2 [5 b9 k7 z4 J5 D int ifail = 0;
) n+ O) O; J9 x r ifail = UF_UGMGR_initialize(argc,(const char**)argv);
$ e- x. f/ {8 L) N& O if (ifail != 0)+ D6 \5 |1 \& B1 K
{% T7 j: K2 L/ V: k
printf("ERROR: Failed to initialize with error code %d", ifail);% Z& O0 l, X: D. s5 E
exit(1);9 d! S. B+ d i% b% e# i
}
1 g; D3 Q/ v$ M: D create_part();
3 q9 m: a J$ y. s, T( _* j0 H print_work_part_info();
1 t( w/ S8 e& R' d UF_PART_close_all();
5 ~6 N c: B! c; c, y UF_UGMGR_terminate();$ X* a/ V" l; r$ l. _" h' z+ P
return 0;, ?1 E @; y8 e: d
}3 `" `! E7 r: A& h2 s: ^5 G ^- [, Y' `
/*---------------------------------------------------------------*/
) D/ p- v; I+ y( Dstatic int create_part( void )3 m4 e) o/ \0 H* X
{" E+ m! }$ [ x! R& d2 H
char* part_number = "600-A-wej-mk1-eng";
" L+ M9 I. ~6 s0 p6 a char* part_revision = "A";, f* d) Z: z7 w
char* part_file_type = "master";
! e6 l5 ^9 L6 y, l: K b char* part_file_name = "";
/ x. c- W M! g9 N; D# V char encoded_name[MAX_FSPEC_SIZE + 1];8 R3 j0 n. k5 H
tag_t part_tag;0 u; ^. t* ~7 k0 \( C/ C" u
UF_UGMGR_tag_t db_part_tag;
/ Y) f# v# f) {! B4 E0 ^9 r4 k UF_UGMGR_tag_t root_folder;
1 {2 P% S7 b, L' I- O+ J# N char root_folder_name[UF_UGMGR_NAME_SIZE]; T. V- Y* [- p9 @+ ^- @
int i, count;0 Z7 m" h# {( y9 @/ n8 J1 f1 q0 T6 Y
UF_UGMGR_tag_t *folder_contents;% d; D" B3 F; J8 B
UF_UGMGR_object_type_t object_type;
# i* E6 [7 I2 F5 Y' E r6 I+ f char folder_name[UF_UGMGR_NAME_SIZE];& b# @! v- e, o% s5 {& G
logical folder_exists = false;
- w8 y/ a/ N' T+ C. S! a" w CHECK(UF_UGMGR_ask_root_folder(&root_folder));2 R* Y7 ?# ^) a
CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));& @6 m0 d2 G3 |
printf("Root folder is %s\n", root_folder_name);
. o( y8 S7 X) }5 B /* Scan through the root folder, looking for a folder called7 s, a' Q/ h. u$ ^! c
"Test Set Default Folder". If this folder exists, set it to be
! K" c* O( H$ u; `0 _! |7 ]" q the default folder into which newly created parts are
6 p. G- z5 I: t/ Z, a3 @ placed.( c/ X# G! S; V( @% A
*/; l1 X2 |! g( S1 ]* W f9 }
CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
( C0 ~8 w8 t% m9 f for ( i=0; i<count; i++ ), f. `$ Q f' J" G0 P( g; |' E3 f) C
{
& J2 r u- _1 w$ n6 r CHECK(UF_UGMGR_ask_object_type(folder_contents,) u6 r0 U( Z( H0 x% T# S
&object_type));1 I- Q, o! B* k% Q5 P7 l3 {4 w
if (object_type == UF_UGMGR_type_folder)
- ]) x ]) x% F6 ~) A& z {; j$ a, z' d' P) z
CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));8 _( t) J2 S& e! D- f
if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
7 E' P3 y, Q0 ~* f, G9 k n {7 [5 a4 p8 e J) Z( V9 `" v0 U
printf("Test Set Default Folder exists\n");
/ e/ D! ?3 [& V( m7 [1 H6 K: H1 N5 x CHECK(UF_UGMGR_set_default_folder(folder_contents));
8 d* I; s! e6 u- [) h/ N folder_exists = true;7 l& o% F) w+ I/ l/ k
printf("Set default folder to %s\n", folder_name);+ w5 f% U1 H x' k1 _; x0 @! r$ \
}
, g# D1 x7 M1 F% z$ N }
3 Z! N: n$ s% L }
- t! G; ]; A: b- \! Z# x" q. |) Z /* If the folder "Test Set Default Folder" doesn't exist, set the
: R* u* E- F$ H% m6 Q default folder to be the root folder.
8 r0 J7 Z/ Q4 _5 \, e4 P* y' H4 N */2 c' J7 S; X2 K4 f
if (!folder_exists)3 @3 M! H2 e, D+ x& u
{, E7 f. r) e6 }2 N: H4 U+ q8 f( H& }4 `
printf("Test Set Default Folder does not exist\n");
9 H" ?+ j* @) s. E6 U4 b CHECK(UF_UGMGR_set_default_folder(root_folder));) s; G, j {4 m" I: z' `
printf("Set default folder to %s\n", root_folder_name);1 @1 Q* `) |4 t; g$ L
}# d* O" g7 q( D$ I! K
printf("Encoding UG/Manager part filename...\n");7 `% F7 z2 f D
CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,2 r3 n) G7 y0 m. @8 R
part_file_type,3 t& O/ Q3 P) M& G
part_file_name,
: c+ F% Z( d" G% |- k encoded_name ));
! z* Q5 h1 X. z* I CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
$ Z' G- [ D7 }8 `7 c9 `6 X printf("Created part...\n");( M7 `+ D3 h" Q+ ~1 O# {4 j" N; e' T
CHECK(UF_PART_save());
% k0 ?2 Z. ] v8 B5 Z printf("Saved part...\n");
0 m+ \5 ]2 I7 J3 I2 _ CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));+ ^3 Y1 o0 ]0 V- W: s
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
T# ^- Y% G4 W z"Mk3 Engine" ));+ v4 m0 x: Y" D1 {/ c$ ~; a2 q2 W
printf("Set part name and description...\n");1 x% Z5 H8 ^3 I3 T, _, C
return 0;
/ t0 U# e% a3 J5 I- d: s6 E}! ^5 z. ]6 [+ ] z
/*---------------------------------------------------------------*/: U0 I+ P, ]" m+ t5 O; k
static int print_work_part_info( void )4 z6 f' O8 b( ?; v& z1 y9 i+ Q
{9 L$ z2 S9 J; z
char work_part_name[MAX_FSPEC_SIZE+1];
( G: c m5 D, P$ b, L tag_t work_part_tag;
" T3 t: h6 f' V+ Y' w1 r+ D char part_number[UF_UGMGR_PARTNO_SIZE+1];8 R% M; M) l0 F
char part_revision[UF_UGMGR_PARTREV_SIZE+1];, _' S) |# m% _& M! D
char part_file_type[UF_UGMGR_FTYPE_SIZE+1];+ t% G7 b; V4 M* G4 S1 m& _& M
char part_file_name[UF_UGMGR_FNAME_SIZE+1];
) Q; j3 S( a; P% ?8 t UF_UGMGR_tag_t db_tag;4 E, ^3 a: V- K! a% w4 W
char part_name[UF_UGMGR_NAME_SIZE+1];4 b/ J4 ^+ L$ j9 b- {& ^9 _2 l u
char part_desc[UF_UGMGR_DESC_SIZE+1];- H. W, n& j3 Z' ^, S
work_part_tag = UF_ASSEM_ask_work_part();
( r9 v$ S2 X* R2 S; F" _7 e UF_PART_ask_part_name( work_part_tag, work_part_name );7 B) Q2 k9 y: l2 b2 I
CHECK(UF_UGMGR_decode_part_filename( work_part_name,- ?9 N$ p5 I5 N1 g: A- A* S- u
part_number,0 r3 t3 y4 n( K o; m
part_revision,
% |. x' s8 N9 j( T part_file_type,9 R5 Z% r, Q; T" X) p
part_file_name ));3 e0 ~9 a* f0 x. p) E
printf( "For the current Work Part\n\n" );
$ H7 a2 ^6 F1 } printf( " Part Number : %s\n", part_number );
* }7 f% W; j0 }, j; `2 y; } printf( " Part Revision : %s\n", part_revision );
8 R3 ?4 X, z& e n3 f printf( " Part File Type : %s\n", part_file_type );
- ?" E2 m* j: c0 V' o+ U$ S. J printf( " Part File Name : %s\n", part_file_name );
6 A3 O4 \! b8 N; s: O, I- l CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));7 K5 H7 M, Z$ R6 E" I0 h
CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));! g, K0 s; M: ?* b
printf( " Part Name : %s\n", part_name );; c0 _/ @. ^8 H* x9 h7 \, ?$ }
printf( " Part Description : %s\n", part_desc );! J, e6 `. j! S$ Y3 f! l2 }
return 0;
# v; m( V+ e ^% B}[/mw_shl_code]( k; q& Q7 ^$ q h
|
|