|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。& [* @! H7 j1 A/ f( u3 I: G3 w
9 @( Z( t- Q7 j* a# I- L. l% w- f
[mw_shl_code=c,true]. q2 l+ u2 c" S/ y. p- h. w: X @
#include <stdio.h>
7 W& D! x1 D- y% c, J3 w% W#include <stdlib.h>4 x8 ], s) G9 Z9 s
#include <string.h>0 C1 |7 T: d$ b; n6 Y# V4 h' R$ t: H
#include <uf.h>, a# z, C. M! p3 M; {
#include <uf_ugmgr.h>
3 @0 J: v* Q+ E4 o Q#include <uf_part.h>. v* v {6 K+ M' [
#include <uf_assem.h>6 J- u2 M" A* f! c4 F+ p
#define CHECK( func_ ) \6 g4 D4 l3 z4 l9 j1 R- d7 y7 M
{ int ifail_ = 0; \( M& H" j: l) Y. U, f
char message[133]; \( |3 w+ @6 ?1 e' m, O- n
ifail_ = (func_);
. `6 _/ G1 ^7 B0 P4 O# N if ( ifail_ != 0 ) { \
% ~1 ~ A6 {+ C {& N UF_get_fail_message( ifail_, message ); \3 D, c8 g" K- z: D1 T) Y
printf("ERROR: %s returned from %s\n", message, # func_); \* W$ ?* `- T' y* e4 k# W
return ifail_; } }
/ A- C$ [+ ?$ A' v/ @" ystatic int create_part( void );
; L0 g4 G) g0 C" `7 r0 ostatic int print_work_part_info( void );7 I: f5 Y1 Z" P( I5 n5 C# D. D
/*---------------------------------------------------------------*/
9 w( b* n4 x; A/ h' k0 B" mint main(int argc, char *argv[])) R+ ^' F+ p+ G6 m ^/ m/ U
{6 o- a' ~6 h( E% s% Q5 e
int ifail = 0;! E& e+ a3 j1 n( q, l! E1 C
ifail = UF_UGMGR_initialize(argc,(const char**)argv);
3 p& A( \ H, x- u& X' y if (ifail != 0)
1 s# N+ |- Z; I4 j p {) V. C- j. F. a* h1 O' ^ f
printf("ERROR: Failed to initialize with error code %d", ifail);
9 ?& ]8 a; n( J+ u& \' c( n exit(1);
- e/ R4 v. M# i2 H, X }, y$ A$ z. n4 Z, r8 Q
create_part();5 s1 O+ V9 w2 L8 C% s% x
print_work_part_info();3 b* ^7 R$ [# ~$ W" l# `
UF_PART_close_all();
4 r9 O: n" k! a& u: T! B5 Y UF_UGMGR_terminate();) U2 A5 i) O, A" E* ~# K- ]
return 0;' y# ]$ Q( y7 o
}5 u+ ]5 s$ V- q4 S
/*---------------------------------------------------------------*/
8 ]1 @! H4 `+ j4 b# L; Fstatic int create_part( void )
* ^; ^+ S3 m/ `) N! Y0 b{
) W; ^, v' n& d; L3 Y char* part_number = "600-A-wej-mk1-eng";+ L* u4 g+ ~8 I+ w# y
char* part_revision = "A"; D6 m9 p" Z9 ~+ K; W" A
char* part_file_type = "master";3 D9 z* g4 M; R
char* part_file_name = "";( a9 R- P0 w& p3 R& A
char encoded_name[MAX_FSPEC_SIZE + 1];$ g# M' F7 p$ u& \ X
tag_t part_tag;
# {2 K3 R8 |7 m5 H% q3 r UF_UGMGR_tag_t db_part_tag;
$ e2 A" N3 b5 \) O# H6 c UF_UGMGR_tag_t root_folder;
8 C: ~- \7 r" N [& W char root_folder_name[UF_UGMGR_NAME_SIZE];
2 }: n3 B- e" ]% v l5 ]/ ?1 w0 j int i, count;
) B9 _3 M' I2 _1 s$ w, ~. g) E UF_UGMGR_tag_t *folder_contents;* a+ d7 @. I( n( z u! q, K
UF_UGMGR_object_type_t object_type;* M( |+ k( U" O/ _: j
char folder_name[UF_UGMGR_NAME_SIZE];* N: F) L, A! ~
logical folder_exists = false;1 w% F7 c. m' q/ o
CHECK(UF_UGMGR_ask_root_folder(&root_folder));) a; [) m3 B1 j% j- e
CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));% d* x) G+ N9 `8 H
printf("Root folder is %s\n", root_folder_name);2 @/ y; F- R. h6 `# E
/* Scan through the root folder, looking for a folder called
@/ X6 s8 k" `" D8 z2 P "Test Set Default Folder". If this folder exists, set it to be, H- j' [& H3 Q/ n1 f
the default folder into which newly created parts are1 ^0 S2 D/ K( E. t
placed.6 o# N ^& h4 m
*/
7 }" Y/ k. c7 _& v. E CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
o6 e! o, ]7 Z4 q for ( i=0; i<count; i++ )$ Z H) e( @: Y/ M
{3 U# q! a4 y! S9 _0 @8 u
CHECK(UF_UGMGR_ask_object_type(folder_contents,
) N8 s4 f. f. M &object_type));+ K6 Y H+ [( ^
if (object_type == UF_UGMGR_type_folder)! Q& W/ K6 D6 K: ]# ]6 w
{. H9 v# p& o! H, ^# V
CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));4 J) j$ C6 R0 [
if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
) m2 j% ?. k1 L6 n {
& z! G: G3 o* H2 k2 A% q6 Q# l i printf("Test Set Default Folder exists\n");
" C5 h+ ?# @$ ~# J) u, R4 W# `. ? CHECK(UF_UGMGR_set_default_folder(folder_contents));* E6 B- @5 N3 J# L
folder_exists = true;
) ?) n& O- V5 [/ a( L printf("Set default folder to %s\n", folder_name);
/ ?$ r. \8 B2 { }
4 v" I( t( p% N5 i6 w }0 w; U& \# h! G }
}
# t2 I0 s2 ~* v( M$ {0 N% Y /* If the folder "Test Set Default Folder" doesn't exist, set the' p& A( Z# e2 W
default folder to be the root folder.
6 ]0 }" w; X% F* n */
1 q' \: Y% J- k) `3 M. B& j& n9 u if (!folder_exists)$ m. u: T7 p2 c5 V0 ^
{ |) x E* \6 _3 V- ~
printf("Test Set Default Folder does not exist\n");
+ r0 N& ^1 L; H- L CHECK(UF_UGMGR_set_default_folder(root_folder));
. P, @7 W, L7 @7 U printf("Set default folder to %s\n", root_folder_name);- p3 B8 J0 `0 L0 P& o, ]4 a
}( S& m0 t' U& E
printf("Encoding UG/Manager part filename...\n");$ H$ f5 z$ t5 Z- y- c7 h7 |
CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
2 p' S% \0 W- M9 D7 F part_file_type,
# K0 \$ V5 u, j6 Q" M part_file_name,; P; V0 I. M& [1 j. i2 G0 S
encoded_name ));5 j$ V% [+ U b0 J7 e0 q8 e! a
CHECK(UF_PART_new( encoded_name, 1, &part_tag ));' V* s T9 E/ n% ]; }+ X
printf("Created part...\n");. M. \, H; k5 ^! C6 y* M
CHECK(UF_PART_save());3 |1 }: o0 V6 X v7 T: r+ p! r! c3 B
printf("Saved part...\n");
9 ` a: f, W$ _: _ CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));' l' v# _3 n$ ]. Z; O
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",- O+ g1 v2 `4 z0 u: ?- d; F
"Mk3 Engine" ));
+ Q/ x% G y1 j* ]( x% r printf("Set part name and description...\n");
5 C4 x2 U) E& w9 R# F1 X( i return 0;% G. K. o7 k) W( Y9 n
}
0 y% r/ I! {: W; G2 `6 v- B6 A/*---------------------------------------------------------------*/
5 D. I, f/ {" S! l+ |$ ^static int print_work_part_info( void )+ q4 i) }( @ x/ C
{
9 [/ k$ u% S5 v% u. \ char work_part_name[MAX_FSPEC_SIZE+1];) `* `5 X' ]4 D, c$ D+ ?
tag_t work_part_tag;
4 f4 F8 x$ g3 f, v2 S char part_number[UF_UGMGR_PARTNO_SIZE+1];
$ X; o' e) }3 l8 g2 N0 c char part_revision[UF_UGMGR_PARTREV_SIZE+1];
0 p% Q/ k% h$ i# h/ H: ^ char part_file_type[UF_UGMGR_FTYPE_SIZE+1];& P! ] H( H( [' W& \
char part_file_name[UF_UGMGR_FNAME_SIZE+1];; v7 A) Z; [& |! Z4 H
UF_UGMGR_tag_t db_tag;) i/ `; L: [4 D/ V( `& Y
char part_name[UF_UGMGR_NAME_SIZE+1];1 `% F8 t1 k; P: a' B# J& M
char part_desc[UF_UGMGR_DESC_SIZE+1];) t; c7 [) Q! ?( z
work_part_tag = UF_ASSEM_ask_work_part();
. p8 i8 O. R5 M UF_PART_ask_part_name( work_part_tag, work_part_name );
5 \. _/ h' B1 n Z4 J$ E CHECK(UF_UGMGR_decode_part_filename( work_part_name,
& p- q+ G# H( i7 r' ~ part_number,
+ N9 {6 A1 A) h8 o4 T' U9 U' a part_revision,
' U6 z" m3 A! S part_file_type,' n" Q ?3 G( N8 m; Y1 ?
part_file_name ));+ c5 a& h! |6 j) Q1 J, C4 p# n, {
printf( "For the current Work Part\n\n" );
7 G. X5 S! g0 R% q4 B5 J y$ ^ printf( " Part Number : %s\n", part_number );: r6 r1 V( V% j! ?, v0 Z
printf( " Part Revision : %s\n", part_revision );
- ^! ]* V8 q8 C& _* X0 }, | printf( " Part File Type : %s\n", part_file_type );
) G" U6 N5 q# i0 ]9 Y$ D* L printf( " Part File Name : %s\n", part_file_name );* v: \' t2 Z8 o- Y2 L9 ^" Q+ u
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));4 S+ ]3 s# W5 z
CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));5 O% b$ g- S( T/ B! A: M- m
printf( " Part Name : %s\n", part_name );
! w5 y- x6 x* J$ V9 r printf( " Part Description : %s\n", part_desc );! J+ e8 f5 E+ n' ]$ a5 A
return 0;
+ T# v( [% F5 k, e- T$ h* E- h}[/mw_shl_code]
' ]- o, M% n" x# Z- f |
|