|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。) x+ o& ~. g$ J1 m! ]! }
' D1 ]0 Y, e H[mw_shl_code=c,true]
% h- c; t* a/ S( N% T3 Q#include <stdio.h>- n& S- f3 I& J* q) L2 d
#include <stdlib.h>
% g" M! \* t. O: j) X7 a#include <string.h>. D: x/ L( i: ]
#include <uf.h>6 l/ @( O' N2 w& H
#include <uf_ugmgr.h>
; ^: j Q7 @8 y7 D3 t#include <uf_part.h>
' E1 X& V9 u5 V8 \" l4 \7 z#include <uf_assem.h>' C6 l5 ]8 k. i* I! M
#define CHECK( func_ ) \( |4 m* L+ D* ]
{ int ifail_ = 0; \% P4 g2 ~& M) g; N- D9 V
char message[133]; \( t/ H3 `# C; f5 }+ a! u: _/ `$ A
ifail_ = (func_);
{! A! d1 d6 e if ( ifail_ != 0 ) { \
+ }( i! F$ |( ?& G% r7 d$ I+ E UF_get_fail_message( ifail_, message ); \+ @0 D M1 h; G2 @& U; \
printf("ERROR: %s returned from %s\n", message, # func_); \5 k+ C" N1 V, d/ W' k
return ifail_; } }
8 X4 o3 I5 i& {$ S3 T* _static int create_part( void );
8 p Z5 h) ^1 Q# Z g8 {, d8 ` c8 x0 Sstatic int print_work_part_info( void );
6 U0 t( J M! j S9 y* t! P5 }/*---------------------------------------------------------------*/* Z! \. |. D# j/ z
int main(int argc, char *argv[])
4 z t9 t- M$ l3 O$ O5 Q{
# G4 J( k* w$ _( P& l int ifail = 0;6 }) _& U; c& k, s3 z
ifail = UF_UGMGR_initialize(argc,(const char**)argv);) |9 j6 z( W$ D9 c& c
if (ifail != 0)5 R: m3 v; e) v& z2 h0 Z
{& ?1 @! X4 A7 {" t/ O
printf("ERROR: Failed to initialize with error code %d", ifail);6 y0 C8 P! Z; R% M. P' \1 e
exit(1);! c, a3 @8 j1 M4 F
}; A+ h' I2 r; m( w# k7 r8 h0 _
create_part();
0 [: ^% L4 O$ S9 d1 \' b print_work_part_info();+ p- f/ m, s& s( j$ s
UF_PART_close_all();
3 K0 W4 X( u9 B$ \ UF_UGMGR_terminate();
9 Y4 z: B5 s z0 P return 0;
, Y6 @9 W. b; D, S* B}
+ \2 b N# d' m/*---------------------------------------------------------------*/
% g% W; e8 U! I/ w0 j0 T' G2 r Wstatic int create_part( void )
% b) S3 |* F) L: w. ?{- Y5 A0 z9 b' [7 M+ |" ]+ a( e+ L
char* part_number = "600-A-wej-mk1-eng";; I8 N3 L9 [3 g7 s
char* part_revision = "A";
1 f; W7 ?: T+ r7 m char* part_file_type = "master";% F5 |" ]2 T+ [& G! R" d0 |* u
char* part_file_name = "";& N5 A0 n% h; X2 O8 C0 c& L; J
char encoded_name[MAX_FSPEC_SIZE + 1];
7 l/ M, G2 Z! k) w+ H G2 f# W tag_t part_tag;8 ?% |4 W- k5 U* C9 @! N
UF_UGMGR_tag_t db_part_tag;6 B( O3 k1 ?* o8 Q+ l
UF_UGMGR_tag_t root_folder;
* Q m& Y' d; L3 ? k s7 l char root_folder_name[UF_UGMGR_NAME_SIZE];+ W! R/ }( }: Z& ]8 U
int i, count;
! @3 Y( c% H% Q/ j$ F. U! H5 R: M UF_UGMGR_tag_t *folder_contents;2 ~# o5 b( M0 h2 d+ G
UF_UGMGR_object_type_t object_type;
2 a0 ]1 V0 t& ?5 f7 @) Q char folder_name[UF_UGMGR_NAME_SIZE];
7 G; D; C2 h9 J3 p! c9 m) j0 Y logical folder_exists = false;) m/ Y& J6 \. S
CHECK(UF_UGMGR_ask_root_folder(&root_folder));
7 }6 F0 a: t C CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));6 }* I$ v2 p( n) @% A
printf("Root folder is %s\n", root_folder_name);3 T" B: w7 O8 H. \2 k1 f0 G
/* Scan through the root folder, looking for a folder called/ A; B+ m3 |. }1 ~
"Test Set Default Folder". If this folder exists, set it to be
; }+ y% K9 s! p5 B* [* r9 S- u2 Y the default folder into which newly created parts are
, ^& T# f! j1 k placed.
; f. P8 z) d5 s% `! ]6 Y */' e* F. P1 q. o' N y7 L& D
CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
7 y6 E7 k9 k9 k% C( {% S for ( i=0; i<count; i++ )( i( D! E' m) {$ s* ]
{' l: p3 r: @0 q4 F0 U! u" E% }
CHECK(UF_UGMGR_ask_object_type(folder_contents,
7 L* I( _5 |0 h. h7 [ &object_type));& ~+ v0 X+ L, p7 a9 D! V( J) e9 I9 j
if (object_type == UF_UGMGR_type_folder)
7 ]& D5 b/ p% B0 c' e! c {
% O& o$ j+ _- l+ r CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));, G6 j s4 U1 G( g1 q, ^
if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
( y, ?; y3 a6 p" E" p {/ A( u0 I% H6 X& H- {
printf("Test Set Default Folder exists\n");5 r, i. _$ Q# ^( q* W
CHECK(UF_UGMGR_set_default_folder(folder_contents));
: v* h6 K5 ]1 W# D2 r O/ u) G8 @! A folder_exists = true;, J* \0 L* T7 I- z) K
printf("Set default folder to %s\n", folder_name);$ R, |8 j: _7 ^
}
: a" y# e5 M) N }2 C) A8 F) I% y4 Q# N
}3 f& O5 w) n+ W
/* If the folder "Test Set Default Folder" doesn't exist, set the& w1 t& L6 A% N$ S, o/ ?
default folder to be the root folder.
9 u$ _7 Q& b" X) j3 u9 x; p+ c */
! a5 e z" P0 |6 ~ d& p if (!folder_exists)5 f8 E& Q |$ z
{
" \* c6 B I) Z; t' q printf("Test Set Default Folder does not exist\n");. [' r+ v+ y8 u- B& A5 l
CHECK(UF_UGMGR_set_default_folder(root_folder));; n9 l$ o6 I+ R# d1 s* s1 M
printf("Set default folder to %s\n", root_folder_name);
* S6 e% f: V6 w# T }$ q( L. t6 @$ U. a k0 M' h9 w. |
printf("Encoding UG/Manager part filename...\n");; z* D9 v. F4 @! n1 M* u
CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,. S( z) c0 c1 R3 P' D4 o n/ u
part_file_type,! A9 Z( V4 f2 y9 ~: W
part_file_name,( j, `4 O% V" D" H
encoded_name ));
+ i+ J: y& v" [/ q# T CHECK(UF_PART_new( encoded_name, 1, &part_tag ));) j+ p- ?9 D$ `* E& ^8 M5 k
printf("Created part...\n");3 x2 y: n7 \9 n1 C9 G$ S) B
CHECK(UF_PART_save());
. U8 s+ g- f) @$ W( g I printf("Saved part...\n");
: x9 k0 u" A2 l9 W" a CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
: a! J# J5 p- `: T g2 M2 c4 _, N CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
0 T& }* j, Q D& ^- R"Mk3 Engine" ));
0 U% f$ U0 l/ v printf("Set part name and description...\n");3 a5 U% @3 `8 B( f7 ^3 t1 k
return 0;9 ~ b2 ?7 ]$ p
}+ ]( c1 p9 Y; e2 _8 b# _$ I* z. r
/*---------------------------------------------------------------*/) G6 |4 d6 l9 v# r G9 \
static int print_work_part_info( void )
' d% I' s" k! X7 k{
) e9 G" z, W0 [; o* ^" E+ v char work_part_name[MAX_FSPEC_SIZE+1];
' \" ~8 N) t$ i" u( {; t tag_t work_part_tag;& ? c: A0 R* S# p
char part_number[UF_UGMGR_PARTNO_SIZE+1];* |4 C$ M+ Y- P, P' ~
char part_revision[UF_UGMGR_PARTREV_SIZE+1];; A4 A$ L# m' }/ N {8 R8 S
char part_file_type[UF_UGMGR_FTYPE_SIZE+1];
& [- v5 n0 G0 s# _( h: V; i9 ` char part_file_name[UF_UGMGR_FNAME_SIZE+1];
* D6 R. b, A9 ]& I3 ^) k6 T UF_UGMGR_tag_t db_tag;
2 B+ w, E/ X. G7 \: G3 c8 H char part_name[UF_UGMGR_NAME_SIZE+1];
1 ^: _! ]4 ^* q! X4 X5 f7 H char part_desc[UF_UGMGR_DESC_SIZE+1];
+ r/ _) B( v2 c work_part_tag = UF_ASSEM_ask_work_part();5 O8 m6 }) D# p) A5 j
UF_PART_ask_part_name( work_part_tag, work_part_name );
" y' r; u1 Z( y. U# N CHECK(UF_UGMGR_decode_part_filename( work_part_name,0 J2 E) G% J' f1 s( S2 v2 K. c
part_number,
& n* w" J# O; ~9 O m1 @, B part_revision,- \6 y4 q1 E0 v
part_file_type,% ^6 s4 X: M& [3 v) H* j
part_file_name ));
8 |' G* w. ~6 T/ j+ }+ j- h. e printf( "For the current Work Part\n\n" );
J; q( d: v& |7 K' N5 P; h printf( " Part Number : %s\n", part_number );
" b5 g; L- |' R' b2 G2 U. L4 B printf( " Part Revision : %s\n", part_revision );# j, q* a. n9 R' H9 o. \
printf( " Part File Type : %s\n", part_file_type );
! |. m9 e) W( B printf( " Part File Name : %s\n", part_file_name );
9 O7 x- w/ b3 |1 m0 G- ~) `0 ~ CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));! w8 v/ i ^/ d7 l+ s4 c
CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));9 y, d( ~1 Q" y& Z6 b& M& d
printf( " Part Name : %s\n", part_name );
! O/ p- M5 G; G9 ^) ] printf( " Part Description : %s\n", part_desc );) Y$ W3 N9 H$ ~/ G) q
return 0;/ n# X: c) V, c4 x
}[/mw_shl_code]
, d, j! a/ x- P2 O n |
|