|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
( [) w' {1 `+ {: r5 U* q! S0 l
[mw_shl_code=c,true]
6 O0 ~, y, R* x4 y4 b8 m \#include <stdio.h>5 x E8 W" G* F/ K7 F( p, R
#include <stdlib.h>2 x z% T+ g+ M
#include <string.h>
2 |# s' e+ F% A* U+ j" q! F o/ f#include <uf.h>
" Q5 W3 b' z" F% Y) w#include <uf_ugmgr.h>3 t( u/ }- E i0 Z2 {
#include <uf_part.h>! _8 s2 ^9 c0 x& u2 T2 ~& B
#include <uf_assem.h>
9 P* e% ^2 D* p/ j. K, W4 S) f#define CHECK( func_ ) \
/ k) e& B( p8 H/ I{ int ifail_ = 0; \9 T! f! p- G# S& C
char message[133]; \% y8 g) A0 p/ u* y1 A
ifail_ = (func_); ; V/ @2 U. k U y8 p+ x5 a \' t
if ( ifail_ != 0 ) { \" W5 H) x0 a4 V4 h; E3 h
UF_get_fail_message( ifail_, message ); \
- N% C$ S% J# a0 Q printf("ERROR: %s returned from %s\n", message, # func_); \2 f _- x! H! Q* N
return ifail_; } }
% L! q# t* \4 [static int create_part( void );
/ U( Y2 n% t% y# G, qstatic int print_work_part_info( void );
3 m2 R& Z! I& m& S/*---------------------------------------------------------------*/
, \) [& k# y+ ^/ hint main(int argc, char *argv[])
1 j: z5 N) i W; C* k{& F: U8 C2 R. D2 t" D5 B
int ifail = 0;" T; k6 P& e) I* I+ Q( D. X X
ifail = UF_UGMGR_initialize(argc,(const char**)argv);
, }* r: e% Y+ c5 Z if (ifail != 0)6 o( U( f1 D% @9 i8 M1 r/ y
{
8 u+ `* x+ f' ?; ~9 g3 w. a printf("ERROR: Failed to initialize with error code %d", ifail);
- e3 l6 m" R0 h) ~3 h. q exit(1);
- D$ x. U! J, T( t7 C8 I# J% @ }
# A! q7 c4 w- P& M+ i( Z create_part();
) P% k3 G5 U2 I print_work_part_info();
" J1 ^: z1 E; x6 _ UF_PART_close_all();
. H8 Z1 w% t) T5 X. Z UF_UGMGR_terminate();
0 Q- w D" D0 D* f return 0;
* S1 u T6 {8 S6 L# v: D}
8 M# y9 j N# V9 Z5 W4 b/*---------------------------------------------------------------*/
) M6 c" `. y1 A1 s3 b! Q) |static int create_part( void )# n* h: \: ~( k: g. ]# p
{
& G% o+ w& r+ Z/ }$ w3 E char* part_number = "600-A-wej-mk1-eng";
0 t) L- P! g, Z6 f* s# U5 S% k4 r char* part_revision = "A";3 q6 Q5 U! W" j) n" S; O8 O
char* part_file_type = "master";3 [4 S8 Y- b* n2 I4 s
char* part_file_name = ""; P0 m# i; P( a5 }+ l C
char encoded_name[MAX_FSPEC_SIZE + 1];# L8 |* O4 ^) ~5 [
tag_t part_tag;" Y! Q) E) B$ @1 S3 p
UF_UGMGR_tag_t db_part_tag;
: H: V+ B( h- e; t3 O& A: M UF_UGMGR_tag_t root_folder;( U- }$ Z# o* f& w: L( `) }
char root_folder_name[UF_UGMGR_NAME_SIZE];, U; G0 H) z6 o; D$ [8 g# d
int i, count;
& G( b8 \9 i8 ~% E UF_UGMGR_tag_t *folder_contents;. @) E0 ~8 ?# P. j: |
UF_UGMGR_object_type_t object_type;
7 D" E B$ ^" C/ F char folder_name[UF_UGMGR_NAME_SIZE];# [* v* T w9 c% ~
logical folder_exists = false;
! m8 Y8 j' c2 i2 T( ~ CHECK(UF_UGMGR_ask_root_folder(&root_folder));5 W' C0 S v9 m
CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));0 k& h0 e, M; z4 ~& R
printf("Root folder is %s\n", root_folder_name);
" L, F `; g& E0 r+ j /* Scan through the root folder, looking for a folder called2 X, T4 ?; _) _" U; E; p5 r
"Test Set Default Folder". If this folder exists, set it to be
# t9 u. T: Q- T$ v/ }. M- _ the default folder into which newly created parts are
# ~; |* y3 g7 e* G placed.7 l+ N8 _0 B, V2 l. F8 g. e
*/
& \% c2 v$ t- x CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));& I& \' i' E" M/ b+ B
for ( i=0; i<count; i++ )
) ~4 Z- N" e% N6 ?3 o K {
& X D- n0 O5 t& l- e; w9 b CHECK(UF_UGMGR_ask_object_type(folder_contents,
. L& r9 O- T2 k1 B! d &object_type));# t9 ]5 L6 ]) s& X2 E! t, {2 }
if (object_type == UF_UGMGR_type_folder)
! j6 @- P6 J0 j/ a2 | {! B/ F0 q$ f; s$ s E! u: H, Y- }
CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));2 j2 g' s3 A/ N( x1 Y1 U
if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )2 o9 Z9 N( J) Z% p
{
7 L6 u: A1 q) z printf("Test Set Default Folder exists\n");
" x7 h. X- v4 o3 n7 C% q( Y5 v+ d5 H CHECK(UF_UGMGR_set_default_folder(folder_contents));
. J7 p' `! _# w) O$ ?* Q4 V+ I folder_exists = true;" w1 L, G: ~& g7 [; c6 m. T$ e P
printf("Set default folder to %s\n", folder_name);
7 o; | `0 U. U+ p0 E }" Q% a8 U3 d5 Q+ T
}/ q' g. e8 S8 \# E( e
}
3 ]+ p. N/ B+ x /* If the folder "Test Set Default Folder" doesn't exist, set the" D9 S% @0 x) G& x5 o, D2 }
default folder to be the root folder.
# T7 j# f! C* `% V. d- s */
) @: O3 L& b: b8 v/ k4 |* g( R if (!folder_exists)
( s, f% R" k3 P) W3 L/ [ {% P$ f0 i& z5 F; m. _8 F6 Z
printf("Test Set Default Folder does not exist\n");
+ x; v0 X3 @) ], ]3 Q1 r CHECK(UF_UGMGR_set_default_folder(root_folder));
& o+ o$ O+ p( N( y' F printf("Set default folder to %s\n", root_folder_name);/ X n# j. D" m# ]+ U
}7 Z- e% T0 q" J; I8 P+ ^
printf("Encoding UG/Manager part filename...\n");
& a" z0 c) {: z& M; A% V CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,0 B0 N# r4 y; |, `
part_file_type,
! k B/ [/ E# d9 r z part_file_name,2 }. b, d( M9 f$ j) w6 A# D+ f: d
encoded_name ));
2 b) t/ ^7 S( ^, \( \3 }4 m3 d CHECK(UF_PART_new( encoded_name, 1, &part_tag ));: ^/ } k. I( G& l" b& A
printf("Created part...\n");
/ Q' m4 h0 ^$ M; U CHECK(UF_PART_save());4 n2 c- [' i7 H! l
printf("Saved part...\n");
: i2 g$ v: y3 F+ M6 y CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
W4 ~ Z6 Q5 { T- s4 k0 | CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",1 i! [3 P' o" @: `
"Mk3 Engine" ));; W R8 b. h" V
printf("Set part name and description...\n");& p7 t0 f) s! }3 L& @, e
return 0;" y l( x+ n6 o C& |* F8 E
}$ y: }) r# Y4 I. x& r: n6 }0 i( D2 U
/*---------------------------------------------------------------*/
2 R. P. ?$ v K/ u6 ^# lstatic int print_work_part_info( void )
$ Z4 V. x) L7 Z& l# T! b{. ]" U6 W0 X1 P( }
char work_part_name[MAX_FSPEC_SIZE+1];
6 h: Z/ a) `; l tag_t work_part_tag;$ a! G9 o# F7 A4 d) ~! y
char part_number[UF_UGMGR_PARTNO_SIZE+1];3 n% B" u. s. a0 u8 t7 T% d
char part_revision[UF_UGMGR_PARTREV_SIZE+1];7 ]3 k6 F0 l* E9 {- V
char part_file_type[UF_UGMGR_FTYPE_SIZE+1];4 P+ r6 v, D, {* U- E( k/ E
char part_file_name[UF_UGMGR_FNAME_SIZE+1];
) K" u9 Y3 u8 Y( \1 I UF_UGMGR_tag_t db_tag;
6 ^' f ?" b/ k4 \$ `8 l char part_name[UF_UGMGR_NAME_SIZE+1];' Q# a' ~: ?# w d$ M
char part_desc[UF_UGMGR_DESC_SIZE+1];
1 ^* {$ d4 d0 D9 V2 V I; }* q work_part_tag = UF_ASSEM_ask_work_part();% \! v$ b4 N; n2 p- x; {& I9 z
UF_PART_ask_part_name( work_part_tag, work_part_name );" J" M& j5 H/ a1 [+ x, s) v2 g
CHECK(UF_UGMGR_decode_part_filename( work_part_name,% c* ^; t3 B+ q7 `
part_number,
5 Q3 {6 c. S ~' [% h; C7 u part_revision,
* u/ W& O0 D- }# K, _' ?0 u part_file_type,: o! p b( f- }/ U. {
part_file_name ));
& R1 e, P6 }. `" u' u printf( "For the current Work Part\n\n" );( R: G& A* h: q+ R1 [8 ~% W
printf( " Part Number : %s\n", part_number );
* e+ i1 g7 z0 C- g( c6 r ~ printf( " Part Revision : %s\n", part_revision );
: {2 F/ W" \( O! \* z- q& { printf( " Part File Type : %s\n", part_file_type );
- V: i3 _/ C7 a/ Z: H printf( " Part File Name : %s\n", part_file_name );
! c5 H: M5 L4 e, u' m CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
. F: F2 H( K7 u1 ? CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
4 q! t: w: p+ B% I printf( " Part Name : %s\n", part_name );
( c3 C* }8 u8 {# [% X( g! q printf( " Part Description : %s\n", part_desc );
; Z" [! M- U |$ n. t0 o return 0;) z' S. O! Z3 j6 a
}[/mw_shl_code]# J) L/ g: t0 z
|
|