|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
; x s z) h8 j8 `( M
% K- r% H4 S( v6 t, x[mw_shl_code=c,true]5 v* G' l' m4 I! r( V0 f
#include <stdio.h> O$ r# _' S" ^) g6 y. a' t
#include <stdlib.h>
5 i( l) M: ?# n0 N; ~; q# ~#include <string.h>! [* `$ ?5 F `$ S z! P" n
#include <uf.h>
% {4 z) N% u1 l9 F( U9 `7 @#include <uf_ugmgr.h> O8 h# P/ o8 h; i
#include <uf_part.h>
/ o B- y* B t#include <uf_assem.h>0 [1 ~$ N- g/ P( V% a, h5 Y
#define CHECK( func_ ) \- _5 g1 X, m. I9 _
{ int ifail_ = 0; \6 _' z2 d6 Q, q( l
char message[133]; \0 w6 F+ G+ B/ W8 Q
ifail_ = (func_); ! [& i5 V- M/ f7 {( s" ]% e" a
if ( ifail_ != 0 ) { \/ l, A- S+ U) \' u7 K( w, U- W$ V
UF_get_fail_message( ifail_, message ); \, h7 {: }) ~( k. K$ B' V6 k
printf("ERROR: %s returned from %s\n", message, # func_); \
* u7 H7 w/ o3 H! O* t( A6 P return ifail_; } }1 x4 G* @; l. {" g- ?
static int create_part( void );
1 O+ g8 B! `9 Ystatic int print_work_part_info( void );
$ N; X- p# N: f/*---------------------------------------------------------------*/8 \5 d" T4 u0 n5 A
int main(int argc, char *argv[])
( P$ R- T$ X, N, I# @, U' N* Y; Z/ Q{# P3 V8 J8 `: @6 G3 P6 i; \
int ifail = 0;
9 R- l9 q7 g' m, `9 M" b- a! Z ifail = UF_UGMGR_initialize(argc,(const char**)argv);# U1 v; O! N- E! [3 f* p# D
if (ifail != 0): o# P8 @: _! J: f2 C; _
{8 Q, L; _& C4 m" q6 r
printf("ERROR: Failed to initialize with error code %d", ifail);" ]9 u) L: G+ u- a
exit(1);0 U5 Z( H" ]+ @# [ ~2 f* G
}
; H8 e! ~# R9 J0 P" L create_part();
3 H! |# z9 V% @% D3 d print_work_part_info();$ O7 {6 N" w9 f( _7 V
UF_PART_close_all();
/ e/ Y- l) X1 @" u+ u! p( f- W UF_UGMGR_terminate();* G- n2 B- R% Z! a7 J9 `
return 0;
/ W: d0 N% U9 \/ R}/ j" q) F0 B/ S9 C4 E$ K! f, Z
/*---------------------------------------------------------------*/' h2 x" w% _- v6 v
static int create_part( void )
# C% _1 g+ O1 n: p& M- M/ N{
8 T! f# j8 L% a: C; J2 i6 h2 z char* part_number = "600-A-wej-mk1-eng";" l; K+ ^: L: t4 ^' L. R) M
char* part_revision = "A";6 A6 l2 `; \. s3 @1 @
char* part_file_type = "master";
8 d& d! U6 @5 t1 i0 `3 R char* part_file_name = "";5 [3 m" P* q* K1 e" o; d2 {
char encoded_name[MAX_FSPEC_SIZE + 1];
8 s+ }4 d2 W" n9 g, Q* U tag_t part_tag;
) C: c! a2 Y* k UF_UGMGR_tag_t db_part_tag;
5 r7 u W% A7 I: s$ g- v+ ^% J UF_UGMGR_tag_t root_folder;
7 `: Y5 M" y$ [$ u& n char root_folder_name[UF_UGMGR_NAME_SIZE];
, w: ^5 ?, T& K7 j# J int i, count;
! Q, i* t J3 B5 | UF_UGMGR_tag_t *folder_contents;* G2 Z) _% E( r' O8 Q6 \4 v
UF_UGMGR_object_type_t object_type;. D' @0 Y0 d. m0 U* a9 u
char folder_name[UF_UGMGR_NAME_SIZE];* {1 D; Y6 s* u5 Z: I2 q5 D
logical folder_exists = false;
/ E4 w5 b7 Z& B; ? CHECK(UF_UGMGR_ask_root_folder(&root_folder));5 O$ h- I5 f* m& y/ b- L( w4 I
CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
% `/ O/ E; {1 K3 B$ ]2 ~0 {/ \ printf("Root folder is %s\n", root_folder_name);
" l( Z3 Q" H6 |' N' [ /* Scan through the root folder, looking for a folder called y0 W6 H2 ~) t% O( q# I7 H
"Test Set Default Folder". If this folder exists, set it to be
& q% P6 _: C8 ]8 `* f the default folder into which newly created parts are
9 B- l- n- p { placed.8 A3 M# \7 `+ B% k7 ?6 w& m
*/% H K1 n; [) ]1 Y. O; N! { u+ D
CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
# w1 N* I7 a$ a% V! ^- C* }( Z for ( i=0; i<count; i++ ); ~, Z! t# h9 G" x' o
{+ L- W2 m0 U3 a' t6 W6 b3 S: W( _
CHECK(UF_UGMGR_ask_object_type(folder_contents,
3 M* @0 I t0 P &object_type));
3 P+ N; |7 ~, }: K" C if (object_type == UF_UGMGR_type_folder)( d' ]) q' {7 K/ ~, P5 E9 i
{
- f+ Y, z+ P$ d2 ^% U' I: w' | CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
% X1 @$ q! |" n' J% x/ J$ J if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )# \& G9 S" V: g/ \
{" G l+ u* L( }* n
printf("Test Set Default Folder exists\n");
. Y& F2 b# r1 Z/ F CHECK(UF_UGMGR_set_default_folder(folder_contents));
/ J. {" ]5 Q# O6 u0 B folder_exists = true;& g) Z* o1 k) o* G& g
printf("Set default folder to %s\n", folder_name);
# _% \; N3 u& k! k5 f; V }- v3 z: i/ Q6 c; d4 U* F' S
}" J; W) P7 a2 u6 ?
}
1 N2 Y" F8 x. \+ \4 R /* If the folder "Test Set Default Folder" doesn't exist, set the
# t6 U# o. d/ H; c5 p! F9 @6 f default folder to be the root folder.9 V2 P. Z; |- D! D8 D: v
*/
9 B" f" |8 i5 d. k" R: [4 I: { if (!folder_exists)7 c) S. D0 A% P! `. g
{
- A! A7 Y9 U7 J& [: K6 u! h. f printf("Test Set Default Folder does not exist\n");! u% B2 Q( u4 l: q7 s
CHECK(UF_UGMGR_set_default_folder(root_folder));
" z* ]1 \ k( y9 }" ]; J printf("Set default folder to %s\n", root_folder_name);
1 r L3 L! Q$ o& ^9 x% w' O: J }% D9 l/ M- J2 `7 S
printf("Encoding UG/Manager part filename...\n");
( |% j8 ^6 h6 A$ t( K3 o CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
7 {$ |: ?, f9 R. j part_file_type,# [6 |* d, d: b" W3 `1 @" \7 |" M
part_file_name,
% m% X. p% t! W7 d& V encoded_name ));+ t0 h5 g$ z7 r) H- V7 P
CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
, Y/ e7 z1 q3 }% [, ] printf("Created part...\n");
7 I* R1 O* v+ w CHECK(UF_PART_save());
1 S, ^8 {6 ]% C; I printf("Saved part...\n");4 X. V& L- C, |; b; U
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));0 m6 k- M+ X" ^ s2 q# E
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
& w# I( b8 Z3 G5 v/ t( a# U"Mk3 Engine" ));
3 `* `$ p# H+ A+ T$ D% D# F printf("Set part name and description...\n");$ G1 ~" e( O/ v/ p5 s: }
return 0;4 c1 u9 Z6 D" B/ U
}- R9 V' s! z! i* y I/ {5 C2 D% { L2 ^
/*---------------------------------------------------------------*/
5 x7 }' Y @/ z7 [. e/ x( bstatic int print_work_part_info( void )
1 U7 \: q9 L3 r0 r `, h3 u{" q0 I$ i" x: D, R
char work_part_name[MAX_FSPEC_SIZE+1];
" K) B4 A2 o0 f1 q% J tag_t work_part_tag;
5 p5 j! S/ c; s. l2 J char part_number[UF_UGMGR_PARTNO_SIZE+1];
- @% j" B0 T" W char part_revision[UF_UGMGR_PARTREV_SIZE+1];8 ]. e4 q+ ?; l: b$ B' |
char part_file_type[UF_UGMGR_FTYPE_SIZE+1];
2 {4 s" K7 m4 y6 a! _2 ^( ^ char part_file_name[UF_UGMGR_FNAME_SIZE+1];
- B" h c, I8 U6 m* z5 R: L; t. h UF_UGMGR_tag_t db_tag; @9 Y: X5 e' \% `6 M& t
char part_name[UF_UGMGR_NAME_SIZE+1];$ U" ^, j, z$ a2 Q, E A
char part_desc[UF_UGMGR_DESC_SIZE+1];
0 C# N3 c. c: z/ m" z work_part_tag = UF_ASSEM_ask_work_part();6 q% z4 J# \& d9 @- P
UF_PART_ask_part_name( work_part_tag, work_part_name );- r6 l) \. s! J# |$ M$ l
CHECK(UF_UGMGR_decode_part_filename( work_part_name,+ U5 W6 M" C) x( K& K( G Y/ @
part_number,
N. m) \% J) ?7 v4 X part_revision,
1 }1 O" j0 X8 s* v% M part_file_type,
$ h( |. R& E2 ^6 ^2 L part_file_name ));1 A& J3 A" [+ Y( r- f1 U2 U( `5 K
printf( "For the current Work Part\n\n" );* }( P8 u7 ?) r8 n, P, p. K1 N
printf( " Part Number : %s\n", part_number );. G, \, F2 w4 f' B% B
printf( " Part Revision : %s\n", part_revision );
. ^& u$ |4 i, l; d/ f printf( " Part File Type : %s\n", part_file_type );$ U, |' @! n5 ~ ]' [: f
printf( " Part File Name : %s\n", part_file_name );; B/ U3 N! k# w/ h: {2 r9 K0 N) H! S4 I
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
; ]4 U% N" H* S* d2 ^+ H7 s CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
2 U: Q0 ?! p4 L9 U) s! U printf( " Part Name : %s\n", part_name );1 z: s% @" E1 C% }
printf( " Part Description : %s\n", part_desc );" Q8 J) b# G1 ~% B: }
return 0;
/ B$ y, _; Z+ b: u) P% ]}[/mw_shl_code]
( a& k$ W0 k* e9 T0 B' e( M* n# S |
|