|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。' w0 U7 H" P0 C
$ Y) w1 U) ?; ]5 Y$ d
[mw_shl_code=c,true]3 p6 q* c% T9 [$ i; ` ]
#include <stdio.h>2 i" f- Q* n! S! |/ W- f
#include <stdlib.h>
( a; J* M, `; G0 N, i2 N9 `#include <string.h>
+ u5 Z1 y' s% j9 j( ~#include <uf.h>" Z3 E/ v: Z: X. y) o' E
#include <uf_ugmgr.h>. g& d/ D, O5 _. ]& ^0 n3 \1 g. j
#include <uf_part.h>
4 K( @: w0 Q; _$ O! F#include <uf_assem.h>. d* _1 ]$ t! S {: T4 v9 c
#define CHECK( func_ ) \
2 @( d$ {3 ~7 ~# x5 r{ int ifail_ = 0; \
: m* `+ v C- j) g char message[133]; \
4 r4 d# M; k, I" J/ x; r ifail_ = (func_);
8 r* k# {2 n2 [5 c' U if ( ifail_ != 0 ) { \
( Z/ ?0 R* l6 F UF_get_fail_message( ifail_, message ); \
* N2 }* r" i2 W! m1 m printf("ERROR: %s returned from %s\n", message, # func_); \
& P; G" ?6 z/ r return ifail_; } }6 X# D4 ~- Z# S+ Q0 |. G
static int create_part( void );
' y3 T& t, g2 T2 a6 G3 ^5 o# I$ X6 Pstatic int print_work_part_info( void );; |. q4 ]" M O. ~# w
/*---------------------------------------------------------------*/
% d* o# g# \' X7 g! {1 bint main(int argc, char *argv[])7 n9 S. R/ d! e9 G( a8 M2 m$ Z
{
/ N; G# ?4 w( l" e' { int ifail = 0;, K" _% M& F+ b9 d
ifail = UF_UGMGR_initialize(argc,(const char**)argv);
% X' }+ l3 J' {6 b3 B if (ifail != 0)
( ?) l+ v$ o! C2 X& ] {
) S6 e. R) s8 p3 q printf("ERROR: Failed to initialize with error code %d", ifail);
6 ]* B: @* E' {) k exit(1);
+ L. |4 h5 _% Q, M9 W4 q }; k9 J# y8 q- ?1 ^$ L' L
create_part();
2 W" b+ o6 U# p print_work_part_info();
3 z1 c1 j& f. j; T/ ]. N4 P UF_PART_close_all();6 r8 ]% g8 y0 a# e+ j- o) g3 |
UF_UGMGR_terminate();& Y$ M- h5 k2 c+ O1 J# r4 o
return 0;
5 |( ]* g8 H) g! R2 A* U}
5 G s) L2 \& u4 D/*---------------------------------------------------------------*/( W* z, k- K; `# w& A+ W8 N
static int create_part( void )5 z4 @, _3 \0 y+ M K6 X
{- E& c9 k9 l, x, N/ c
char* part_number = "600-A-wej-mk1-eng";; K* L* l! j4 ` J' o/ P$ d5 g
char* part_revision = "A"; Z- g: ^4 j7 v* Z8 J
char* part_file_type = "master";
5 k% ^2 }2 T" i. y/ n5 W char* part_file_name = "";9 e8 N& a" a+ E& N- k# ~, J z: V
char encoded_name[MAX_FSPEC_SIZE + 1];
( E" v% G" ^# l, F) X" r3 h' Y; D tag_t part_tag;* _6 m- g4 O7 _& X; e v
UF_UGMGR_tag_t db_part_tag;
& a6 }! J2 `4 g2 v9 e UF_UGMGR_tag_t root_folder;) `6 D; ^- ^0 V+ q& l
char root_folder_name[UF_UGMGR_NAME_SIZE];
" w2 }+ @3 t! J2 G) ? int i, count;
$ c; J, s5 b$ v P8 h UF_UGMGR_tag_t *folder_contents;/ `" S) ~. L. P8 R, e; V9 q- O$ D2 ~
UF_UGMGR_object_type_t object_type;$ @9 Q; g( ?+ |) D
char folder_name[UF_UGMGR_NAME_SIZE];
1 I6 j( N1 ^$ M logical folder_exists = false;) ]: a3 b0 A8 Z
CHECK(UF_UGMGR_ask_root_folder(&root_folder));
3 l: @. m+ {& x" @6 w CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
; Z! L. U! j7 R printf("Root folder is %s\n", root_folder_name);. p: e/ P6 @9 [7 @& D
/* Scan through the root folder, looking for a folder called
7 i0 B5 s, Y4 e9 b/ d "Test Set Default Folder". If this folder exists, set it to be# v7 j1 d/ R5 C7 s3 C
the default folder into which newly created parts are
; y6 o1 Q9 C8 F placed., }) L6 h) {0 l
*/
( e9 u3 w/ F: a( g9 m- v$ b# N( m4 m CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
* U( m0 q9 s6 z3 ^ v' {$ |$ J for ( i=0; i<count; i++ )+ T# @$ M! b8 a' z4 u6 z
{1 O) G: w6 p4 S& q. c$ A5 N
CHECK(UF_UGMGR_ask_object_type(folder_contents, [5 n O0 E$ Z8 T3 U
&object_type));& z9 \) g' J' l+ y" O
if (object_type == UF_UGMGR_type_folder)
! d$ U8 I7 B7 k {
9 u2 ~# A9 ?* w/ X5 j CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
J. [4 f( |) E0 q% E if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )* ?: @) d# k* l) g: C, \. L0 O3 G8 k2 H
{. h9 T+ [: O7 T" c7 [ M Q
printf("Test Set Default Folder exists\n");& W q% c; [4 u. g
CHECK(UF_UGMGR_set_default_folder(folder_contents));& Y7 W' g8 R; z4 [* k8 n" c. R! b7 _
folder_exists = true;
/ Z: Z, m/ g$ s7 d( s' Y/ C printf("Set default folder to %s\n", folder_name);* i2 Q9 B7 e8 Y
}
3 T' P9 l+ ` p% J+ Q }# C! i8 u5 \' G
}
* g7 K, l, C. A7 `6 ^4 x' R /* If the folder "Test Set Default Folder" doesn't exist, set the
' d, {; g8 t8 |2 P0 `, L default folder to be the root folder.. g* h% R/ V4 S; f# ~: d$ b
*/
+ A0 i f3 w7 c% P% D2 i if (!folder_exists)
* R3 @! h9 c$ P. L/ q5 F. u; ~ {
% `0 s# ?! l' F# h printf("Test Set Default Folder does not exist\n");
3 y6 [. ~9 L3 C CHECK(UF_UGMGR_set_default_folder(root_folder)); _( k# h! U% O) h
printf("Set default folder to %s\n", root_folder_name);1 T2 z1 r& _6 i J" s
}
& G7 v6 j: X" |% T+ b/ X$ [ printf("Encoding UG/Manager part filename...\n");
. T( V1 ]) Q8 Q CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,& d* T# b* Z' C2 N- V/ k
part_file_type,2 O# G9 Q* k- D8 {
part_file_name,
$ U+ u0 D2 F! @% ` encoded_name ));: p! |/ D& `9 i2 c" m6 o
CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
+ |" ~2 I4 ^$ L& r2 p, G printf("Created part...\n");
: i1 {$ q) G, R$ _- w) a CHECK(UF_PART_save());! g4 d' h+ d) u5 }' Q* W
printf("Saved part...\n");
. z$ S: p8 _8 U& F4 M% R/ H CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));# B' f" Z2 E# X; `" j% n/ r
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
# w1 P( Q) B( O4 O5 W6 P9 u4 t"Mk3 Engine" ));, v0 L) x' R* L* G! u3 Y
printf("Set part name and description...\n");! P3 r [ R/ q, V& u9 v
return 0;8 q3 B" Y. b3 {# P! b4 C
}/ a! I2 F! w( f
/*---------------------------------------------------------------*/# Z* a9 \, Y6 ~9 s9 ~2 \
static int print_work_part_info( void )
; H( k2 }5 O$ E{
& ]. A) [ z9 L0 S, k$ C8 B2 p char work_part_name[MAX_FSPEC_SIZE+1];8 S5 T. Q b, C
tag_t work_part_tag;
$ \: V8 |+ O* j2 |/ q( H. S char part_number[UF_UGMGR_PARTNO_SIZE+1];
) @) _' B( b; O& U: M2 q char part_revision[UF_UGMGR_PARTREV_SIZE+1];
+ Q; L1 C" _- H. o char part_file_type[UF_UGMGR_FTYPE_SIZE+1];
/ o" j& Z: C7 s char part_file_name[UF_UGMGR_FNAME_SIZE+1];
0 k3 T3 z( h- f/ s4 _! y- S UF_UGMGR_tag_t db_tag;
4 X5 y+ _% h/ J, Z- I! W char part_name[UF_UGMGR_NAME_SIZE+1];
. N& J4 X% e0 Q2 U% \* w4 J char part_desc[UF_UGMGR_DESC_SIZE+1];/ Z$ ?' _8 |& L& `" ?0 M& A) G
work_part_tag = UF_ASSEM_ask_work_part();* m" W) ? S6 ?
UF_PART_ask_part_name( work_part_tag, work_part_name );
1 ?+ {( @/ n/ \# y% ?4 A CHECK(UF_UGMGR_decode_part_filename( work_part_name,6 C2 a, f+ [; d
part_number,
. X9 e, P3 ~/ z6 v" |" x/ G% L) i# h part_revision,, i* N& e o t( A% `
part_file_type,' Q0 w& ]* E" a. B( f9 b
part_file_name ));* b" H, Y( Q+ b
printf( "For the current Work Part\n\n" );
; F$ y8 U. C+ _8 B/ J: M- i3 D printf( " Part Number : %s\n", part_number );2 U+ A/ `1 s/ {
printf( " Part Revision : %s\n", part_revision );% s) E% v+ S( h/ r- g( j
printf( " Part File Type : %s\n", part_file_type );3 L& ^. L6 b. ?
printf( " Part File Name : %s\n", part_file_name );
) u& H3 W- A5 P7 ]! Y9 U( C: P" g6 n$ D; E CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
3 S8 k$ o9 K7 ` I2 d. W CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
6 I* K1 S1 V& C* S& l% w T: s printf( " Part Name : %s\n", part_name );
" Z7 |1 X7 R! R+ Q printf( " Part Description : %s\n", part_desc );
& v& ^. ]6 X! m( o) j3 n return 0;( o2 K, u, c0 r4 X$ N a
}[/mw_shl_code]" e9 }7 G2 y v; }$ a9 g
|
|