|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
9 C7 Q; Y5 U" P$ ^/ |! Q) p, `, V
( T3 B. Z) E7 |* Y[mw_shl_code=c,true]
, P3 q7 o# D' _& h: X#include <stdio.h>
- x9 \: \2 y" [* J8 C+ r#include <stdlib.h>3 X3 ~0 g' a7 ^9 D8 {; c( T3 K
#include <string.h>( Y- z$ t: j, d' _* l: @9 }# t" z
#include <uf.h>% w0 C) q+ {4 |) f: K
#include <uf_ugmgr.h>; p9 g) l& k2 m( ]+ \9 @& w
#include <uf_part.h>
# ^4 p( @/ Y: z; m5 J#include <uf_assem.h>
( g/ G- _+ f+ ^4 D+ ~" s+ J% b1 j, q#define CHECK( func_ ) \6 x0 e1 C3 d5 R, S# R
{ int ifail_ = 0; \0 V9 J7 j3 V* h e! A
char message[133]; \
0 _ _" V" y* ? ifail_ = (func_); , ~" K$ b1 l) f8 E
if ( ifail_ != 0 ) { \. W2 ?* [+ i9 ?4 f. p1 C
UF_get_fail_message( ifail_, message ); \7 Y: C& O0 h8 J, u( `9 r" B" `
printf("ERROR: %s returned from %s\n", message, # func_); \
" N: S# @2 y4 W6 a7 r6 ~1 [ return ifail_; } }
) [, e9 g7 C0 j2 ~: Wstatic int create_part( void );
r# m4 z2 A% Hstatic int print_work_part_info( void );
( c; y6 s7 k. w) S/*---------------------------------------------------------------*/
% N9 A' d B) w" ^, D. @3 Xint main(int argc, char *argv[])
( k6 K# G9 o# W9 @* a{5 H0 O0 M6 r w6 S6 h
int ifail = 0;9 x# f# o% o9 c8 u
ifail = UF_UGMGR_initialize(argc,(const char**)argv);9 a+ P' w: N5 l
if (ifail != 0)
* n7 ~- T% ~) i& h7 | {5 A3 v2 q* g- b4 a; ]
printf("ERROR: Failed to initialize with error code %d", ifail);- I( J! T2 e. |! A
exit(1);3 F: c5 p& ^! h; r
}* V2 N- y* a. N' c: Z3 k1 Z0 \1 _% p
create_part();
# G( J" H3 z8 S" C' k8 C print_work_part_info();5 h! s3 a) ^7 U5 u7 e. K8 x& V0 W+ n
UF_PART_close_all();1 y2 Z; ~) i. G: v% F
UF_UGMGR_terminate();
$ Y# Q+ R5 X8 s, V6 c return 0;+ P' E& N: s5 B a
}
b) g$ j& Y8 g6 C; ^$ u/ d8 c3 H% k$ o: t/*---------------------------------------------------------------*/
9 C& y# y; L4 c! e. X9 d* rstatic int create_part( void )7 E( a' z9 |3 U" W5 u- U, {
{5 Q9 O& i/ z4 n0 o+ E9 E7 M
char* part_number = "600-A-wej-mk1-eng";
( R* F; t# Z4 p" d char* part_revision = "A";
0 C8 }) h2 d" _ char* part_file_type = "master";
6 V0 J- U& q! | E# P6 _) P char* part_file_name = "";+ @. E- }# _2 J/ h6 G; g4 d
char encoded_name[MAX_FSPEC_SIZE + 1];& f" H _* S6 [; H- ]* j' m4 f
tag_t part_tag;
0 H* t. R/ w; Z+ _4 e7 s9 i UF_UGMGR_tag_t db_part_tag;- S# a- Q; v8 W( w
UF_UGMGR_tag_t root_folder;) B$ C( C6 J* ] b4 U" C' C, f) q' N: u
char root_folder_name[UF_UGMGR_NAME_SIZE];
! R/ I `, R" t8 v int i, count;: s- W5 K9 c7 Y6 O% @5 A7 s: c& I$ n
UF_UGMGR_tag_t *folder_contents;. G" |) B5 a! F0 G5 G8 Q9 V
UF_UGMGR_object_type_t object_type;$ X" Q# j* X: e6 M
char folder_name[UF_UGMGR_NAME_SIZE];1 r! h2 A/ k) W' {5 L, `0 r
logical folder_exists = false;5 L1 |5 K! h+ U' X+ p
CHECK(UF_UGMGR_ask_root_folder(&root_folder));2 ^6 Z; ^: H) D9 j* H: [
CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
% o' s: \# h6 L8 `# N$ s# m3 b2 h printf("Root folder is %s\n", root_folder_name);
: b% y; y( y9 h! ^* T /* Scan through the root folder, looking for a folder called
3 c6 s% a: s0 p3 T* I, A "Test Set Default Folder". If this folder exists, set it to be
8 X) H* w4 N% l7 H7 `: Q the default folder into which newly created parts are: c+ C- T7 f5 o0 _
placed.5 N% r) O* Q/ g6 x) ?; t1 G" [
*/
& Y6 A7 j7 c- ^5 V* M) k, [0 l CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));0 ]+ \- Q8 `' s7 J
for ( i=0; i<count; i++ )
% R* L( O. o2 T3 B {# Y7 Z9 a: V8 t$ [
CHECK(UF_UGMGR_ask_object_type(folder_contents,6 H) K# o8 G* X7 w0 K( {0 P0 z
&object_type));
. D4 [6 G6 @1 E0 o4 W$ i if (object_type == UF_UGMGR_type_folder)+ S$ d& G) R0 f$ f' w
{
' `7 y; a3 D( s% ^( e. ?$ x CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));+ P3 U# z: r& \3 t
if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )5 F/ i8 t+ s: {: c- Z3 U9 w
{
& a6 u: N6 d( J7 y5 _0 t7 k printf("Test Set Default Folder exists\n");
2 P1 W/ R \4 s# m( v2 Q CHECK(UF_UGMGR_set_default_folder(folder_contents));( l9 w0 ~; @# o* M, l2 U: [3 g
folder_exists = true;
6 j* g; P* q& h4 g$ i printf("Set default folder to %s\n", folder_name);) I0 O/ ^, M& F
}. T$ Z" S2 F( Q( J) r) [# n
}" l" d8 j ]% o/ }
}5 z, E7 j# T" w; U- f
/* If the folder "Test Set Default Folder" doesn't exist, set the. B7 q! {% Q6 K6 }4 \0 a; ?
default folder to be the root folder. F2 a4 g8 r2 f+ M" I6 o
*/
5 q8 L! ^7 A! b& f) k" J if (!folder_exists)3 }9 w6 s0 b! ? E6 ^
{
: x" h0 c" I5 C2 Q; T# i printf("Test Set Default Folder does not exist\n");
j, c, ^* ^# G- \ CHECK(UF_UGMGR_set_default_folder(root_folder));
3 X; o: X6 M0 _1 v printf("Set default folder to %s\n", root_folder_name);
3 ^+ \* m3 g0 c! x3 p }
3 d% `2 {. ~# m7 A* C# A' m* c printf("Encoding UG/Manager part filename...\n");
! D0 g p' K j: A- _% m2 p( G+ q& X CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
, y: x; C3 b* S9 H6 Z( j' o% f+ L part_file_type,
+ j. }5 V, o S" e part_file_name,
' Q5 _& W% Z# }# U encoded_name ));4 v( f/ L$ z" [2 J$ V
CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
0 i+ T8 u3 l- c printf("Created part...\n");1 U2 a p+ k4 j4 l8 Z
CHECK(UF_PART_save());
; Y/ u% s2 ~" A7 K) @8 ~. }# u printf("Saved part...\n");
4 z5 ]7 f( |/ N+ H* @ CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));% C7 Y" s% W7 u# S& z) `
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",1 \3 b2 ?8 M- f
"Mk3 Engine" ));2 Q' C. E, K) U$ y2 q" J
printf("Set part name and description...\n");
; c5 I `! j+ i' t/ N L: Q return 0;
# a$ [: h4 S# X9 c3 T) ~}( \8 D) X( G# v
/*---------------------------------------------------------------*/
/ j3 Z8 o6 U# w% c& n+ {) W8 Rstatic int print_work_part_info( void )
8 P4 V* m1 x: c4 f{
3 h# i# q: `) ~ char work_part_name[MAX_FSPEC_SIZE+1];' H( y; g; S) T0 ?$ k5 O
tag_t work_part_tag;
4 d6 ^; A' J6 W2 L' F5 R char part_number[UF_UGMGR_PARTNO_SIZE+1];. s5 }0 l! j- M1 \- {: C. @4 }- v
char part_revision[UF_UGMGR_PARTREV_SIZE+1];$ I1 w; I' M9 q
char part_file_type[UF_UGMGR_FTYPE_SIZE+1];4 Z5 |% K; v% g0 {' O! @, h M C3 D
char part_file_name[UF_UGMGR_FNAME_SIZE+1];
) D0 w+ C/ K8 L e" x, g UF_UGMGR_tag_t db_tag;
+ \9 `! C# L+ y6 z# y7 P char part_name[UF_UGMGR_NAME_SIZE+1];
2 ^2 y. G7 r# r/ n; e char part_desc[UF_UGMGR_DESC_SIZE+1];
/ p3 J3 [/ P( @4 @3 y2 P" U work_part_tag = UF_ASSEM_ask_work_part();
' n6 ?1 g6 r" o( l8 F UF_PART_ask_part_name( work_part_tag, work_part_name );- N# J& |4 Z1 c1 q. b3 | ^7 v
CHECK(UF_UGMGR_decode_part_filename( work_part_name,
, i: |# j1 v. m* Q part_number,1 l4 v0 n/ P* p$ [2 V0 z
part_revision,# n; h& C; j/ v- I
part_file_type,
9 r8 C \" a9 o$ ?( W8 _; v part_file_name ));
6 x6 V+ Y+ C* Y9 F; d printf( "For the current Work Part\n\n" );' \: j/ k1 g8 j8 `% t
printf( " Part Number : %s\n", part_number );
, g; m8 v7 A2 j* K, N printf( " Part Revision : %s\n", part_revision );
: V2 s' I% z" A* N. x* Z" _ [ printf( " Part File Type : %s\n", part_file_type );* P B6 }6 Z! `$ q
printf( " Part File Name : %s\n", part_file_name );; M. @3 ?4 B2 }. W7 _
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));* S& ]/ Q4 h1 x1 E
CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
$ q: N: L# T& o8 @! ^) u& c printf( " Part Name : %s\n", part_name );
7 b n0 F% b( `! i) i: F7 j printf( " Part Description : %s\n", part_desc );' O$ n( J6 l# S5 g# t
return 0;9 d% \5 ?9 p% J3 L
}[/mw_shl_code]
1 F. f) Y) j8 O# o |
|