|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。/ O$ l8 J/ h0 `/ h
% ], ^) K8 _) f! Y; }[mw_shl_code=c,true]& s8 A/ a; _) U/ @6 O
#include <stdio.h>
' S! Y- M! S7 L+ D#include <stdlib.h>
7 n0 h( k. J8 q+ F0 x% D#include <string.h>
: @9 C2 H. |; I$ z' ~9 a#include <uf.h>
" h7 \6 w/ ]. j3 o#include <uf_ugmgr.h>
1 Y( O$ L% r' I' U#include <uf_part.h>; k/ ^0 k: L# i2 f( ]2 U
#include <uf_assem.h>
) h" h$ D+ m" S# y& ?6 U# }3 J#define CHECK( func_ ) \" M, E3 J; q+ }9 F8 E |
{ int ifail_ = 0; \( z J5 G F) S& E6 z
char message[133]; \, u9 a6 z5 p7 m l1 y
ifail_ = (func_); + B7 T# h8 O5 y* U. r
if ( ifail_ != 0 ) { \
+ N+ B; H. c/ S! N' F4 }, K UF_get_fail_message( ifail_, message ); \' `4 ]" x8 T, t: ^7 [
printf("ERROR: %s returned from %s\n", message, # func_); \
* M; f. \& p" d3 v% `# H return ifail_; } }; s% A" e, Q% Z9 S) S/ y" D# `
static int create_part( void );& n# k+ l; r$ z+ p4 i
static int print_work_part_info( void );* e7 m( c+ ]3 D3 y" T5 r/ ~
/*---------------------------------------------------------------*/
4 O3 \' a! j0 s& Z- tint main(int argc, char *argv[])( G/ w2 c) o# b+ U
{1 H3 M! j: P. b
int ifail = 0;
4 t& ]0 C5 n. ]" Y! Q; U' E; r ifail = UF_UGMGR_initialize(argc,(const char**)argv);
0 f$ M0 A3 r; E K if (ifail != 0)2 y9 u+ G/ I6 }1 O/ }" w
{( ~2 }0 N* L: N) C' }% b/ r
printf("ERROR: Failed to initialize with error code %d", ifail);
. v, C" n/ Q! N$ L exit(1);; F% Q8 g; w0 F7 T* }! |
}
( F: l* e" D( {; ?6 A7 l1 @ ]8 n create_part();
$ ~3 t; d6 Y1 i, x1 ]- z print_work_part_info();6 g7 u1 M/ z8 Q5 f% B$ X
UF_PART_close_all();
2 [9 f% F& j/ F8 `% K UF_UGMGR_terminate();1 {- e( w. d) j0 ]2 O
return 0;2 C( O8 i# ]& j( F- s& z; B+ J
}0 Q4 A" d, R l9 \0 ~
/*---------------------------------------------------------------*/" f" A% G) @' k1 v
static int create_part( void )
3 C- A; t9 u* H: H0 n{
, J2 w. p9 h2 k3 W- u* [ char* part_number = "600-A-wej-mk1-eng";
6 K! W9 a% G/ B: C char* part_revision = "A";
; P) W+ \6 L" [6 H char* part_file_type = "master";
0 x$ P {' V4 A8 Z" R char* part_file_name = "";
' y# B1 ?7 q7 [+ q0 t% G char encoded_name[MAX_FSPEC_SIZE + 1];# ^! ~# p: H7 O k& g3 B
tag_t part_tag;2 r2 z" x& F& b5 _# c
UF_UGMGR_tag_t db_part_tag;& ~ D) P5 d! p2 n" U- j8 e; `8 f
UF_UGMGR_tag_t root_folder;
( J4 w$ n" A% f2 G char root_folder_name[UF_UGMGR_NAME_SIZE];
1 y' G2 x3 s0 j T8 } int i, count;
) H; M5 A7 N. t& d/ ]+ t UF_UGMGR_tag_t *folder_contents;
3 D0 h/ _' _$ O5 C/ _" N) m, F$ ? UF_UGMGR_object_type_t object_type;
* g& S' p, T# `& @ char folder_name[UF_UGMGR_NAME_SIZE];
; K% S" v7 d+ {/ F$ T6 u logical folder_exists = false;6 m( Z, k9 d' b; k2 r/ J+ Y
CHECK(UF_UGMGR_ask_root_folder(&root_folder));: g2 C! S8 }8 G# n" u1 h' h
CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));: S Z( W+ ]$ k q- ?
printf("Root folder is %s\n", root_folder_name);+ c" q5 {0 N- j" r
/* Scan through the root folder, looking for a folder called
- ~7 z/ T, ~, F3 J7 J "Test Set Default Folder". If this folder exists, set it to be9 E* A2 F" C( |' F {
the default folder into which newly created parts are. H* k) n0 E' i$ c4 N7 I9 u
placed.* y6 r- {. G4 Z
*/
! q1 f6 s# L L+ c6 q: T CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
9 s H/ `3 V- w6 H8 y, h for ( i=0; i<count; i++ )
, Z1 t6 G {- T1 L- ?8 V z E {$ t( b* P5 S& F
CHECK(UF_UGMGR_ask_object_type(folder_contents,3 b: E; ? a4 F! P& v% H
&object_type));- ~. i2 e# ~6 l" t; M: b: Q
if (object_type == UF_UGMGR_type_folder)
0 }5 N+ {+ L' W: M) P" v8 {$ U2 j$ ^- Y {
2 R8 g/ G8 z6 ?' U- p CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
6 f) b# w1 B% i5 V& y if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
$ ?7 Z. d) h: l9 ?9 g {0 F% z( l/ J7 ]
printf("Test Set Default Folder exists\n");
' ]9 s5 d% Z- x1 ~' r: y; t CHECK(UF_UGMGR_set_default_folder(folder_contents));6 s- @1 q B) W! u& t% I6 G4 P
folder_exists = true;+ B8 d+ J# r% l' N0 L2 D+ ]1 b
printf("Set default folder to %s\n", folder_name);$ F) g8 m1 |+ E, d. b1 G' m
}
- y$ v/ F3 e, i }0 S0 o$ r1 T3 r
}! B1 Y% s; j- o& D, u6 h' T
/* If the folder "Test Set Default Folder" doesn't exist, set the
$ Q: t8 s H2 f: n4 R" m default folder to be the root folder.+ ]0 M) N9 l+ G! m/ s8 U
*/
$ p* u- K* ]; d3 y1 v' L3 ?; O, i if (!folder_exists): `1 _, F5 H6 P& [; X
{
' s7 P1 @2 a+ W U. r; Q printf("Test Set Default Folder does not exist\n");, z |$ z M' J& g7 l. \9 f. s
CHECK(UF_UGMGR_set_default_folder(root_folder));
: s W1 S/ R2 [3 {9 T9 ^! K printf("Set default folder to %s\n", root_folder_name);
% m; O' @ o3 O: ]8 u( ^+ i+ N: K1 s }) U$ A9 Z; q) U
printf("Encoding UG/Manager part filename...\n");
6 p6 R* f9 ]; i5 b! U4 X* N& a1 m CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,, a O. j% L: }/ O
part_file_type,
9 t( L# S6 k% p# i3 [4 Q part_file_name,/ }7 ]1 n- d8 ?; }
encoded_name ));
7 ^; o6 i, r& H/ } CHECK(UF_PART_new( encoded_name, 1, &part_tag ));6 q7 _6 _4 R( k8 |& t2 O* L
printf("Created part...\n");
; J7 ]- e0 I& y% t8 z CHECK(UF_PART_save());
* t' N! B# S! P6 H2 w, S printf("Saved part...\n");5 k" _* B, I; S% _4 h5 s/ {
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));2 r: z$ C7 G2 L
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
2 j l5 Z6 O# X"Mk3 Engine" ));
, T3 X6 t5 I. M+ J; N printf("Set part name and description...\n");
/ E( N1 O ?' Y3 M6 x return 0;. w6 S' |, d$ {- c
}
' c2 o" Q" A! }( N9 W/*---------------------------------------------------------------*/- t- |) W0 W1 f4 `) B9 G& M
static int print_work_part_info( void )
9 s1 j- F4 p% E& j) u{/ {" O# C y' [' J
char work_part_name[MAX_FSPEC_SIZE+1];
y7 |& M% b ~ tag_t work_part_tag;5 X! T f1 S" ^4 H4 u6 T$ z
char part_number[UF_UGMGR_PARTNO_SIZE+1];4 d4 ~( Q0 G) R2 J( N
char part_revision[UF_UGMGR_PARTREV_SIZE+1];
. T9 P0 s: j1 @, ^- J/ Z# G char part_file_type[UF_UGMGR_FTYPE_SIZE+1];. W( F) u( F0 R; C5 s. V0 @
char part_file_name[UF_UGMGR_FNAME_SIZE+1];8 [. n$ |6 T9 d( X) ^1 x3 T
UF_UGMGR_tag_t db_tag;
4 d1 x9 [1 F0 X+ Z. l: E' m4 R char part_name[UF_UGMGR_NAME_SIZE+1];
" Z9 C0 K, c' R char part_desc[UF_UGMGR_DESC_SIZE+1];0 B" p! O3 K6 L5 r7 P
work_part_tag = UF_ASSEM_ask_work_part();
$ h; _1 K; o" U' J9 _ UF_PART_ask_part_name( work_part_tag, work_part_name );
* ^4 v2 ]- |4 H6 q' Q' q CHECK(UF_UGMGR_decode_part_filename( work_part_name,5 B9 u4 x, D) ~# x' _
part_number,
8 i, d7 _, B) r$ T9 U/ e part_revision,
0 s( a2 G v# Q7 N! B" F part_file_type,' {% w3 r$ z U, b- O# t
part_file_name ));: k u# Q: K6 m. ? s
printf( "For the current Work Part\n\n" );
6 `4 @6 Y, l1 W% }8 Y/ V7 B- Q printf( " Part Number : %s\n", part_number );
9 j: ~8 x" s- t, f- D2 F" p1 X3 [7 S printf( " Part Revision : %s\n", part_revision );3 k3 \3 `/ O. V
printf( " Part File Type : %s\n", part_file_type );* A# W- l! \% }
printf( " Part File Name : %s\n", part_file_name );
: B- `+ b4 z/ h CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));8 N5 s4 |& o: p& N7 x2 ]5 z6 v
CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
! U5 M; R ]/ V- U3 C& t printf( " Part Name : %s\n", part_name );/ J( n5 s- N3 Z1 w
printf( " Part Description : %s\n", part_desc );$ a$ g% C% R- ] F0 ?# N/ Q6 I
return 0;
; N& Y" Q3 H* K9 ~: ^2 j, Z. V/ H}[/mw_shl_code]
. q2 g5 M# D! N5 t* }" p2 u# P |
|