|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。9 E: m6 X3 H" x' n: Q" H; d) Q7 c
+ Y1 l9 _8 ^ u1 C[mw_shl_code=c,true], U+ h% M4 B+ P' e/ v9 T3 p
#include <stdio.h>1 J. Q5 G( p* Y$ C. o1 w9 t
#include <stdlib.h>
+ X' D6 o! c1 Y8 ~/ [. `/ u) F#include <string.h>/ S) Z, P, ~5 i" _0 Q, Y# L
#include <uf.h>: L4 n! H' G5 W& ~! t6 F" B2 t+ d; R6 u% g
#include <uf_ugmgr.h>
3 c6 J$ @# y! o: G6 p7 {( v#include <uf_part.h>7 [% r' R9 D y6 C$ ~; i4 q
#include <uf_assem.h>
. b. T( q7 D3 `6 G4 O, W#define CHECK( func_ ) \
& j4 [$ i! b) B H{ int ifail_ = 0; \
- e7 @# i: }9 I char message[133]; \
; }. Y( D, m1 _" r5 h1 ?- u ifail_ = (func_); 3 \. Q* l7 f# H, e: h3 ~
if ( ifail_ != 0 ) { \5 d6 g! H8 k% a0 l4 D4 ~. R
UF_get_fail_message( ifail_, message ); \
' N, d5 U- X! i0 L printf("ERROR: %s returned from %s\n", message, # func_); \1 ^. \0 [1 Z/ y
return ifail_; } }
* o6 P6 U1 J3 @" ^ Gstatic int create_part( void );: i; A7 b4 @8 X0 _
static int print_work_part_info( void );# {, t9 J5 o3 r* _0 h, {
/*---------------------------------------------------------------*/" Q; i' P1 o5 v5 D& ]' L+ `
int main(int argc, char *argv[])0 H$ @& y- ]4 N2 T4 r& \
{
9 u4 N3 [ @$ T# a int ifail = 0;
# z- P' w5 G) G; \! ]( J. w% ^- S ifail = UF_UGMGR_initialize(argc,(const char**)argv);
% `5 n/ o+ j8 p9 e if (ifail != 0)
% F6 Z6 a2 E0 `- e1 F$ i {# V% P1 H. o; V& w8 z$ C5 N2 c
printf("ERROR: Failed to initialize with error code %d", ifail);6 {# G. i9 K* ^$ w3 A7 A
exit(1);
+ T! U! j2 H$ }2 \2 Q }5 h8 H6 G7 h/ ?1 F7 U5 Q: Z
create_part();
; C4 |1 e# O1 Z3 ^ print_work_part_info();
& L& f# T5 H/ l- x! Z UF_PART_close_all();' c0 e8 X2 r- x) ~6 L4 V, j9 `
UF_UGMGR_terminate();
1 @7 L2 L" F6 j! q$ y! m return 0;( a% k& {$ r; J1 W; N/ C# I( j
}
( w$ w5 r& _' d! C' R+ l/*---------------------------------------------------------------*/, `/ ~+ e9 f a% C
static int create_part( void )& V* e* Y9 h! b; }& D4 X2 S, B
{" |# r. ?4 F; j; `: [. y9 c3 |
char* part_number = "600-A-wej-mk1-eng";
; e V L! `4 O1 ~% x) h& @ char* part_revision = "A";" J7 b9 j, a# @) ^4 C
char* part_file_type = "master";
& [$ N0 O# [% K' r9 z8 r A8 q. K! J char* part_file_name = "";
, O) ~) M8 P/ ]8 P char encoded_name[MAX_FSPEC_SIZE + 1];* X) c, l: a- T/ g" F8 Z
tag_t part_tag;
6 }9 v$ N |6 u1 i UF_UGMGR_tag_t db_part_tag;
" e9 h3 E) L& R1 ?! x! y UF_UGMGR_tag_t root_folder; d7 q" j5 d% L* S- i& o
char root_folder_name[UF_UGMGR_NAME_SIZE];
7 ?* }) z& x) Q+ q# c int i, count;" T+ L: P+ G6 G* v8 ?8 ?9 M8 M
UF_UGMGR_tag_t *folder_contents;
& ?: _2 r- q; k+ |; B [% a UF_UGMGR_object_type_t object_type;/ B: V4 ` q2 r% W
char folder_name[UF_UGMGR_NAME_SIZE];# p- S( n) @ i# h1 ~; h8 U* {
logical folder_exists = false;
7 V }0 w0 C0 Q, D CHECK(UF_UGMGR_ask_root_folder(&root_folder));
6 U+ y5 f- i8 u: @1 G CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));2 a* o2 h; ?0 _, @4 |( K4 J
printf("Root folder is %s\n", root_folder_name);* l S* B9 H0 O- b
/* Scan through the root folder, looking for a folder called- m. e5 g: X# n( H; w# p4 t
"Test Set Default Folder". If this folder exists, set it to be- a. M; b4 R5 H; \' M+ F
the default folder into which newly created parts are( t3 {' L7 v5 f" w1 l
placed., v, A5 _$ q( ]: z. l( b
*/! T- h; Y; q; a2 g; l
CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));% o4 i- v2 C% `8 }+ Q
for ( i=0; i<count; i++ ) }7 a# R; [" Y# [" z: v- D, X
{2 Y5 @8 f( s1 [5 ?8 ?% Q, g
CHECK(UF_UGMGR_ask_object_type(folder_contents,
- R+ K3 o7 T1 s4 ^ ^) a8 O+ C &object_type));) J9 f8 }! R6 f
if (object_type == UF_UGMGR_type_folder)3 [/ d8 j( ^1 B4 r# G& m& {
{! J5 j) E+ v8 X7 B. s2 I! c
CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
- W# Z x5 l$ T$ z if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )6 F+ y. |& l! X; V* L
{
3 Y6 S( u1 @: ?; o printf("Test Set Default Folder exists\n");
1 [5 ^. s, E. N; r, k- T CHECK(UF_UGMGR_set_default_folder(folder_contents));
' ~# ~- ]: P( [5 t; b folder_exists = true;& A! y/ m7 a, @1 b
printf("Set default folder to %s\n", folder_name);( f5 g/ g6 c% W$ X- K, d7 N
}
9 Y" w1 z0 y6 u( H: V+ t, j6 q }; g" ^. e8 ^8 ~1 r
}: g5 n& T% y, q0 _7 h' Z: u
/* If the folder "Test Set Default Folder" doesn't exist, set the
2 A! A n& ^( f4 |, S default folder to be the root folder.
" ]9 w( ~' V$ {; k- Q */
( r7 l, c. |. h8 `, O2 N6 _' E1 V* j if (!folder_exists)' |& w, b9 m9 d6 c) r
{
K6 \& C5 V6 R) W printf("Test Set Default Folder does not exist\n");* d4 E4 y; E% P R
CHECK(UF_UGMGR_set_default_folder(root_folder));
3 }* ^% V* e% s% x0 x( e printf("Set default folder to %s\n", root_folder_name);- g. I! K5 R" r- _+ R" l! {+ ]% s
}
$ H2 \$ n* b" y0 w" ] printf("Encoding UG/Manager part filename...\n");; D% D- z5 h; s! t4 |
CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,3 I f$ M2 b) z1 }' Y
part_file_type,, t) s. W; o9 Q/ Y: r
part_file_name,
) v6 s3 R6 U0 t8 ^( [ encoded_name ));
% a, k7 `5 X3 d0 _ CHECK(UF_PART_new( encoded_name, 1, &part_tag ));* v4 T6 v: _: H9 \
printf("Created part...\n");* [: C& t, v, V
CHECK(UF_PART_save());
" _* L# J4 f/ |% w printf("Saved part...\n");* Y& J( I% }5 _! T2 h8 i
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
( H3 ]$ y$ ^; I, h# ]9 q CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",' o* b2 Y- Q% x5 G5 Y! u) O% s6 E
"Mk3 Engine" ));
1 N: Q% Y# E+ y7 }' I printf("Set part name and description...\n");1 |4 E+ N: p8 f' z! l8 \& i; g# A, y
return 0;
; P) g4 W5 o: W8 ~2 D' B$ i}
! u; j/ s2 S7 O$ Z7 q/*---------------------------------------------------------------*/% i B6 s5 y; I R$ D& q0 J. z
static int print_work_part_info( void )
9 d+ u! }# A2 B+ n2 V{
7 n: G/ l. D, K C4 j char work_part_name[MAX_FSPEC_SIZE+1];
0 X+ A1 j& T9 V# L tag_t work_part_tag;
* o% l8 Z! W: d4 D5 l. Q, N char part_number[UF_UGMGR_PARTNO_SIZE+1];# ~, L/ E7 P4 S9 \
char part_revision[UF_UGMGR_PARTREV_SIZE+1];
7 }5 x% {4 f, {+ s" p char part_file_type[UF_UGMGR_FTYPE_SIZE+1];: [! o) v' K7 ~% y1 @$ v) z- o2 u
char part_file_name[UF_UGMGR_FNAME_SIZE+1];
' \' Z: Q- Q- V* h( N2 d, H1 m" Z: p) t UF_UGMGR_tag_t db_tag;" r/ B! h+ i) X7 e
char part_name[UF_UGMGR_NAME_SIZE+1];
) Z; b+ r. a! y) X5 p char part_desc[UF_UGMGR_DESC_SIZE+1];/ i! l- ?: W7 F7 D- {; g
work_part_tag = UF_ASSEM_ask_work_part();7 N! ]. k9 D. y3 y: }5 j) w% G( d
UF_PART_ask_part_name( work_part_tag, work_part_name );
5 ]+ U; H( x* i! c' G: U CHECK(UF_UGMGR_decode_part_filename( work_part_name,
* c P: c& m# ?7 I- \% G! I part_number,$ h* s- {# O# R% P
part_revision," q1 [ [8 |7 B9 K5 X# h! s
part_file_type,5 M: z i8 ?6 @: T6 f
part_file_name ));/ K \4 [+ K& G4 t* G
printf( "For the current Work Part\n\n" );
# N7 W/ T d: f; q {8 b printf( " Part Number : %s\n", part_number );1 x- g. g1 R! {
printf( " Part Revision : %s\n", part_revision );
$ r2 i+ v% m) H. v8 b" y. q printf( " Part File Type : %s\n", part_file_type );* L( `* h$ ?8 E" Z
printf( " Part File Name : %s\n", part_file_name );
8 U% `7 W. X! M& M7 ^; A CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));4 }; n4 J( c3 ^* {0 j! i& c
CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));1 E' a( R6 ^+ g& |8 D/ h! _
printf( " Part Name : %s\n", part_name );
- T0 x7 Q& w' t printf( " Part Description : %s\n", part_desc );: o+ @; S5 ]: H
return 0;
" @6 O1 l( |5 x8 s6 X# r}[/mw_shl_code]) G- c8 E! q3 u5 q# ?: C" j
|
|