|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。! J9 p% L. a' d) i
4 D+ N9 u8 U; P9 i7 I+ i# h- J; A[mw_shl_code=c,true]/ ~ K0 h, e/ {! q
#include <stdio.h>
7 S, [" [6 J+ ~: I* F' q, M#include <stdlib.h>: C1 C0 y# s! b* ^
#include <string.h>2 V: o/ l7 u5 g9 | i4 x' c+ z
#include <uf.h>$ \" G9 K! z2 {. _! g
#include <uf_ugmgr.h>
. \' U8 f6 Y0 A; v6 w" J#include <uf_part.h>6 M( i9 ?. }0 g
#include <uf_assem.h>% Y. I( I# W) d9 N9 a- S
#define CHECK( func_ ) \! ~ L. f& c+ A$ l4 R
{ int ifail_ = 0; \
0 `5 e$ \( p- x/ k4 F, L; d+ i" t char message[133]; \/ Z+ P- f, }+ ~. `
ifail_ = (func_);
0 B, {; j* V6 y o$ Q% c if ( ifail_ != 0 ) { \2 `7 h t6 u& f/ c- a3 c8 r3 t$ j
UF_get_fail_message( ifail_, message ); \
9 a V$ L- e+ `* K% [, ]+ G: M printf("ERROR: %s returned from %s\n", message, # func_); \" O F4 D( Q- B3 l
return ifail_; } }4 Y. s2 ], b# [
static int create_part( void );
& P- M2 Y( p, o/ Kstatic int print_work_part_info( void );
: I/ b% s, D; E; g5 `) }1 g7 ]* U* s7 B/*---------------------------------------------------------------*/
0 ]2 W5 [. P3 g# dint main(int argc, char *argv[])5 }7 Z p l9 U8 T
{
* X( k3 B9 e6 j' k# z3 B int ifail = 0;
! A; W2 c7 ~ Y* I% _3 w ifail = UF_UGMGR_initialize(argc,(const char**)argv);
9 ^9 n5 H4 U/ e$ H. S- r6 ^% h if (ifail != 0)
2 n# a! x4 d* ]# I7 I {; V( }" T4 D3 z- a) m5 H: Q; Y
printf("ERROR: Failed to initialize with error code %d", ifail);
/ ?; [+ P s0 P6 o exit(1);& l& K; [7 |& h: E6 W G
}& _* b# D2 T. I. s z
create_part();1 G! Y0 D4 E& \+ i* b
print_work_part_info();
6 C. a0 Y4 w l UF_PART_close_all();' \. V3 Z" p! o3 P" O# \
UF_UGMGR_terminate();
% G5 ]1 `1 N4 @9 v8 F0 v* \( l return 0;4 \0 ^- }# _5 T
}; m4 ?9 O- q6 h6 a
/*---------------------------------------------------------------*/7 m G5 V% T: w: F* D
static int create_part( void )1 ~% i/ @7 P* F. s# X: T& A
{
6 m* i; l# F" e, _2 @) T char* part_number = "600-A-wej-mk1-eng";6 |% b6 |% q. \: ]
char* part_revision = "A";
2 ~7 H5 g: E2 p4 u* a4 u5 k: y char* part_file_type = "master";# }1 J/ T$ [) w5 J
char* part_file_name = "";
9 G$ q9 r4 V* c char encoded_name[MAX_FSPEC_SIZE + 1];
& t- n' G ~9 ^ k& u* r tag_t part_tag;, m7 Z# Q# g2 K- \
UF_UGMGR_tag_t db_part_tag;
* n; Q1 b3 _) i6 J3 @( Z UF_UGMGR_tag_t root_folder;
% a0 E. n. n5 U* U2 x8 @ char root_folder_name[UF_UGMGR_NAME_SIZE];: s# W- W& r3 P2 s, }
int i, count;- y4 u- I( ^) t" N6 N
UF_UGMGR_tag_t *folder_contents;" R0 [3 e8 Y7 ?5 b: w6 J" Z/ f M
UF_UGMGR_object_type_t object_type;
, d6 D5 b7 h, D: [2 |7 K, @& | char folder_name[UF_UGMGR_NAME_SIZE];
k% D K6 E8 G% z- j- G( G5 G+ F logical folder_exists = false;
! i9 b, f6 F/ y- s6 E4 P5 _4 \. h CHECK(UF_UGMGR_ask_root_folder(&root_folder));
1 t7 b2 B/ m) l CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));' m1 B. j, ]& j
printf("Root folder is %s\n", root_folder_name);- u' T: F& {/ E% J
/* Scan through the root folder, looking for a folder called
% E; j9 p: I. S6 }; @) s: F "Test Set Default Folder". If this folder exists, set it to be
" l0 R) ~$ s& P6 T- d the default folder into which newly created parts are9 V% E6 ^/ i! X; D6 v( \3 Z
placed.1 p) w a+ m. _ S" i
*/
, ?+ q& B. ^6 i6 P( v. _ CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));) e ]+ r/ B" I0 k- B
for ( i=0; i<count; i++ )
A/ _ y9 ]( c. ~ {
* |' n) f- f* W/ x) y+ K CHECK(UF_UGMGR_ask_object_type(folder_contents,
) b2 A, l- X% p5 ]3 t &object_type));4 F. c. c! U4 W: Q/ ?
if (object_type == UF_UGMGR_type_folder)& m' a' g: X" z) V
{& c, s e6 a- y- x; ]! K
CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
" e( B$ o9 ~& T5 g' l2 J' ~ S if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
& ?: `' R: W/ S+ Y {3 l# e3 a! k. e& T1 g! {
printf("Test Set Default Folder exists\n");. c3 p! v- e' u9 H# I
CHECK(UF_UGMGR_set_default_folder(folder_contents));# T; N# l0 O+ Q: ~8 B' |8 A
folder_exists = true;
, g0 O/ B& X( t: e6 O% B; l+ W- h printf("Set default folder to %s\n", folder_name);' P$ R( ~* L: b7 Y% K! o: `$ _
}
+ x& c+ T J* m. ^/ t$ X }+ _+ m* d- z' N0 c1 N
}3 Y# R6 Q0 Z) a& q
/* If the folder "Test Set Default Folder" doesn't exist, set the- v* F* y+ Y6 T* d
default folder to be the root folder.! B! ~& P( n9 V. \+ N
*/
^! R4 R, ?8 _. {* a. e if (!folder_exists)
+ k$ u) {: G3 g5 } {, V8 D, z; [, l1 K- L
printf("Test Set Default Folder does not exist\n");
" I' i9 s& @* _) n& W CHECK(UF_UGMGR_set_default_folder(root_folder));
& k' @: e4 j7 ~$ I; f, y( c1 d printf("Set default folder to %s\n", root_folder_name);- S( Y" X4 Z4 k4 i
} c4 D& ^0 D5 z
printf("Encoding UG/Manager part filename...\n");
6 [0 Y$ t3 Z0 \! r- | C; B, \ CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
/ l) p3 i. ]* H$ J5 u# q part_file_type,
* t( M7 w- i- R part_file_name,
9 ~! c1 X& `( e; p$ H encoded_name ));
" V0 X/ ^0 I- [" Y. l4 j CHECK(UF_PART_new( encoded_name, 1, &part_tag ));7 k( N j; D# y$ q0 X& M
printf("Created part...\n");6 E; E. @8 {* I' W, ?( {
CHECK(UF_PART_save());: S% E: r$ b9 y |" Y8 p1 ?. y, ?
printf("Saved part...\n");
* n1 c [4 ^$ W5 [2 \ CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));3 G t* \& m* y3 r# z
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
0 e* y+ C6 E' P3 U, ~! o! ?"Mk3 Engine" ));$ R: D5 S" B3 B; w
printf("Set part name and description...\n");
6 r% W& u" _! t; R2 I" H; ?' ^ return 0;
2 {. H$ Y6 ?# x+ f! ?6 {. H}% v5 M/ \% V/ `' n% Y5 b. _
/*---------------------------------------------------------------*/$ X. _* c7 _ ^/ t
static int print_work_part_info( void )' I6 @9 f& ]; a$ p5 n
{8 o: N: S1 f1 c7 L
char work_part_name[MAX_FSPEC_SIZE+1];
% ]+ B6 r' A2 M v4 x) {( g. c tag_t work_part_tag;
5 g' z1 N, y0 }5 M3 y* v& K char part_number[UF_UGMGR_PARTNO_SIZE+1];
! k& N$ J9 P# i. K5 ` char part_revision[UF_UGMGR_PARTREV_SIZE+1];
2 k' l7 Y2 ]" s2 D, `& ~# o; u char part_file_type[UF_UGMGR_FTYPE_SIZE+1];
, Q* J+ ~/ d3 w i& n char part_file_name[UF_UGMGR_FNAME_SIZE+1];
* W1 b6 U6 Z w: l( F+ \) Q UF_UGMGR_tag_t db_tag;" R C q/ I7 ~( s
char part_name[UF_UGMGR_NAME_SIZE+1];
" _* y' P+ I& K% E2 Z3 z" m* Y char part_desc[UF_UGMGR_DESC_SIZE+1];
; Z& w8 |5 ]8 X0 d work_part_tag = UF_ASSEM_ask_work_part();
' C* A/ K7 V+ }+ a$ r UF_PART_ask_part_name( work_part_tag, work_part_name );& z( {8 f# {# F/ D! \! Q) E' \
CHECK(UF_UGMGR_decode_part_filename( work_part_name,
G3 H( P9 m9 T3 c2 Y) _ part_number,; @3 H( p' W( h; s
part_revision,+ y# R, E# Q! I z2 W
part_file_type,2 z7 P# T! `, Q' H) z# l
part_file_name ));4 ~- d4 J8 g' Q
printf( "For the current Work Part\n\n" );+ O0 x6 C; e2 w8 R b0 q1 k
printf( " Part Number : %s\n", part_number );8 M/ g# t9 x8 p
printf( " Part Revision : %s\n", part_revision );
3 Z' B; X3 T5 Z# ] printf( " Part File Type : %s\n", part_file_type );
" r* V- u" k9 a7 W# S# f: e printf( " Part File Name : %s\n", part_file_name );
; {; A3 i. d: s CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
8 y4 f4 ~, M2 w/ |1 K CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
1 u& A# y* [. w* \2 W printf( " Part Name : %s\n", part_name );
6 M, {4 {3 K* O0 c printf( " Part Description : %s\n", part_desc );
$ J) g. M& y) d/ R1 H. F return 0;
9 e' B% R) e5 B/ p# b2 Y/ w. k}[/mw_shl_code]
- R/ w2 h0 `) F |
|