|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
* [ C8 [# z6 e6 n* Y+ O& m f8 ~0 O. X
[mw_shl_code=c,true]: r% F- U h, t2 y. m
#include <stdio.h>' M( ?, J6 Q3 `7 g7 x
#include <stdlib.h>
( ^6 N! _+ \" j( Y7 k4 L4 N#include <string.h>7 o5 m* O. [" a1 |
#include <uf.h>
7 y6 N. f$ ?& G: u3 w" u/ x#include <uf_ugmgr.h>
+ m0 k. H `3 ^3 N# t7 V#include <uf_part.h>
8 r1 a) w+ ~; C#include <uf_assem.h>
! F0 I' P2 [2 W( C" V2 K9 M4 Y#define CHECK( func_ ) \- V5 X6 b2 C; W/ b8 B0 Y
{ int ifail_ = 0; \
' {6 k" p5 i$ X char message[133]; \
8 Z7 `2 @; {6 X, v" I1 L! V ifail_ = (func_);
. i9 ]: s1 M- q& b if ( ifail_ != 0 ) { \, g5 |% E: P, Z4 }& U
UF_get_fail_message( ifail_, message ); \ B* |# ^1 w( f
printf("ERROR: %s returned from %s\n", message, # func_); \$ y9 G. X! Q9 d
return ifail_; } }
/ E1 \7 ^4 A$ c9 qstatic int create_part( void );: e+ W2 f5 v/ @- x" J
static int print_work_part_info( void );, c& `4 r) ?6 ]) m
/*---------------------------------------------------------------*/$ D0 [( F% S8 b
int main(int argc, char *argv[])
) m3 S+ j, R! O/ r/ m9 h{
7 G1 [; W9 [( }1 @$ Z8 K; u' S int ifail = 0;, { r! m4 a, `' V6 J
ifail = UF_UGMGR_initialize(argc,(const char**)argv);
1 x: G8 ]+ V. h# e7 Z% k if (ifail != 0)
: H9 \% y9 e4 `3 K {3 Y6 h" r* ]& y* {2 C* K# L! K
printf("ERROR: Failed to initialize with error code %d", ifail);
/ a! ?2 w$ o( n( g5 N exit(1);
8 m+ j: ~+ f( R$ C0 W# u( v }- F h5 B5 }: v% m) t9 w4 Y
create_part();
' w# N6 w: y$ J$ {5 c7 ^ print_work_part_info();- g& v3 N0 l0 E$ [: b3 H
UF_PART_close_all();
: Q9 q- u( s' Y, Y$ m3 Q UF_UGMGR_terminate();+ j4 ]. e4 o3 m, m
return 0;" B$ |8 H( g! k! ~7 |& W/ D
}# ?- B) E: @! s
/*---------------------------------------------------------------*/
; l4 M, p3 C% ?+ |6 sstatic int create_part( void ); O" M% h2 V' m" D0 a/ {/ u
{. I P0 F% O9 e
char* part_number = "600-A-wej-mk1-eng"; _# Y3 B& V6 x! |# Z+ p5 H2 p3 k3 u
char* part_revision = "A";$ f! d: K3 S$ d* b @
char* part_file_type = "master";
2 T- O8 Y, R: T8 W char* part_file_name = "";* W5 T& R8 C) ]9 }/ ?, `; {
char encoded_name[MAX_FSPEC_SIZE + 1];6 Y; l7 l( |8 v6 P, ?
tag_t part_tag;
" e# S6 h$ c: @$ T: @! ^ UF_UGMGR_tag_t db_part_tag;- |, v0 h- ^& M( ^7 X, ^, z4 j% Q4 y
UF_UGMGR_tag_t root_folder;
% g( j4 M* m$ G3 l2 B7 a- u char root_folder_name[UF_UGMGR_NAME_SIZE];) x0 B: i: H# ?. c8 Y2 P
int i, count;* N! k; z# v! }
UF_UGMGR_tag_t *folder_contents;5 E; ]9 M& T# ?
UF_UGMGR_object_type_t object_type;
# ]0 I- J' z7 ?- @0 i7 V. E! Y char folder_name[UF_UGMGR_NAME_SIZE];
. _' {2 ~6 f+ u7 ?8 i) ^ logical folder_exists = false;: w0 n I4 E5 \* e
CHECK(UF_UGMGR_ask_root_folder(&root_folder));
3 d3 m2 V2 p$ u2 M. V CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));6 ]* C0 W2 o! t) ~
printf("Root folder is %s\n", root_folder_name);
. R5 d$ \, i6 \; [1 \! E! V /* Scan through the root folder, looking for a folder called# A1 w( ^% l$ w% U9 d: |: J$ W( q
"Test Set Default Folder". If this folder exists, set it to be/ K3 Q8 j) S, C; I& r& _- e
the default folder into which newly created parts are: U! Q a- L8 {4 t
placed.
$ T# _: Y/ o4 A */
: s4 Y) k8 w! e9 r CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));2 H7 R" m) t, E. U
for ( i=0; i<count; i++ ) H6 k7 B G) R
{
- |0 ?! ]! Q+ ~ CHECK(UF_UGMGR_ask_object_type(folder_contents,: o5 r2 O/ {4 K3 v! e
&object_type));9 c1 t. |! a3 L5 \0 J" M4 n
if (object_type == UF_UGMGR_type_folder)0 r& N7 K/ u2 g
{
( i) V/ @; g- }- H! v CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
- p% b. p+ n: M9 p& r' M if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
7 g8 G( L( g6 B$ y# L {- G' M9 G' ] C. `, a
printf("Test Set Default Folder exists\n");
, Y: f: C0 J+ F- c1 J$ @ CHECK(UF_UGMGR_set_default_folder(folder_contents));
/ i: P5 I3 R+ @. \1 x folder_exists = true;6 `# m. R" T9 c4 T
printf("Set default folder to %s\n", folder_name);
. x2 f8 Y+ f& p" U; _4 G8 ` }$ c5 \ v( n; A# U0 n- f
}
! o# L; n9 W0 }! z }- _- c+ ^" |3 f7 N3 W7 ]
/* If the folder "Test Set Default Folder" doesn't exist, set the1 @7 ]! D# {: c; @+ Y! I: }
default folder to be the root folder.
, q* d' G! w1 N& ]8 p+ J9 R1 d */
* S7 ]# b" p3 e V2 J) G if (!folder_exists) b" ?# h% A1 l B" b" ?
{
* a7 x0 U q( Q* B( n9 | l) \ printf("Test Set Default Folder does not exist\n");( G. W: m; O* I& x
CHECK(UF_UGMGR_set_default_folder(root_folder));' h& a4 r% s+ J. V) i! Y' {, r) m
printf("Set default folder to %s\n", root_folder_name);$ Z* u. O+ ^( s+ Q8 N# x
}* y, o7 `# B* h
printf("Encoding UG/Manager part filename...\n");
! N* `9 `/ h H, n( ?0 Z CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
0 h& }& i0 o. \* @ ?/ o part_file_type,, o8 _; i6 v) F0 C" M% i
part_file_name,
& I3 K- y. S: b% e encoded_name ));
" H: j# d5 k: X CHECK(UF_PART_new( encoded_name, 1, &part_tag ));6 x0 `* W% Y$ S4 s' ]8 @5 S
printf("Created part...\n");. T5 X0 V/ t. }! m2 s ]( b7 R2 m7 _
CHECK(UF_PART_save());
2 K1 r3 @8 v9 _7 F" d0 ^4 k# Y1 p printf("Saved part...\n");
, |; h: Z4 C0 R( a3 w( c) l5 N1 C, d CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
+ I; S3 ~, q9 o/ p: F2 U, v CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",+ f& b1 G0 j7 Y$ t
"Mk3 Engine" ));7 m0 f5 y! \6 g0 Y0 L- f7 R
printf("Set part name and description...\n");
3 g! Z5 f6 e2 t/ F6 J return 0;/ L- z3 f+ \3 G) r+ `
}
4 O0 y v- K0 O# I8 g8 P& _( h6 ~# R/*---------------------------------------------------------------*/# i8 x" [& |2 Y5 ]' X4 S
static int print_work_part_info( void )) ^/ P4 `1 P$ @! ^# D8 _- T
{: y& A, C2 i# }6 i# `$ c; I
char work_part_name[MAX_FSPEC_SIZE+1];
3 k3 l4 e! L# \1 |3 u% h* B tag_t work_part_tag;, d- M3 w1 }/ P7 J" K4 {& e# g
char part_number[UF_UGMGR_PARTNO_SIZE+1];& O% x3 J; X4 W9 y' f
char part_revision[UF_UGMGR_PARTREV_SIZE+1];& Q7 h& W5 w/ G t
char part_file_type[UF_UGMGR_FTYPE_SIZE+1];1 `8 J# ?0 K7 {5 N2 `
char part_file_name[UF_UGMGR_FNAME_SIZE+1];
0 R5 H* X6 A5 h9 N3 H2 W' S UF_UGMGR_tag_t db_tag;
) D% v. k# W; s: K0 x0 q char part_name[UF_UGMGR_NAME_SIZE+1];) w) H& b: \: h) ?* r1 P5 T
char part_desc[UF_UGMGR_DESC_SIZE+1];
, S6 N1 T6 F) q3 O* { work_part_tag = UF_ASSEM_ask_work_part();
+ Y/ U3 \# [* y UF_PART_ask_part_name( work_part_tag, work_part_name );
7 O3 L; Y X- C/ R) N& I CHECK(UF_UGMGR_decode_part_filename( work_part_name,
* {' ]4 J: n' Y+ f part_number,# W7 Q$ M0 d8 C3 {6 E
part_revision,, o" r! g3 Z/ T8 n+ X
part_file_type,! `: D! a4 I/ H* n7 i8 ~: p. p
part_file_name ));* m: ^: P: a4 w- H, j/ G
printf( "For the current Work Part\n\n" );2 _) o- L# s8 ]# u; T
printf( " Part Number : %s\n", part_number );
$ ~: e6 w3 f, \! q printf( " Part Revision : %s\n", part_revision );
! P6 N: _- @- a3 f printf( " Part File Type : %s\n", part_file_type );
- f1 {# b! @: Y* A- G" t- j printf( " Part File Name : %s\n", part_file_name );
) U u9 c9 v* y R @4 M CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));; g! a" ~) c6 T9 i
CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));3 f* j+ ~ u" I# P' i/ u
printf( " Part Name : %s\n", part_name );
0 g- z& i9 A4 l printf( " Part Description : %s\n", part_desc );; w7 E% [( j3 b, n) [' {8 B
return 0;' A* _% N- a" Y
}[/mw_shl_code]6 h- t& U+ c; V' [
|
|