|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。, o/ j5 b* ~/ o( n+ F ?
2 y# }& u( ]: U8 q
[mw_shl_code=c,true]' r4 D: L) ]5 r: W) v
#include <stdio.h># B0 o) `1 X" W2 w
#include <stdlib.h>, Z3 n1 ~/ w" } ?+ |" b
#include <string.h>
) \; r& s, ^$ O: h) t/ ?#include <uf.h>
+ b' b. L+ G# x' n6 C#include <uf_ugmgr.h>* [1 e' N# T& t% D+ W
#include <uf_part.h>
2 ?. D* z# @7 ]- b" X' t2 O0 h7 s* x#include <uf_assem.h>
6 H! W! ^2 U4 q#define CHECK( func_ ) \
! g- {1 h# E3 l+ P( r{ int ifail_ = 0; \6 l2 I; q9 P% {( ~0 k+ B
char message[133]; \ f! r7 {9 w% D8 ~/ S; r5 Y; z
ifail_ = (func_); ) |4 P* T+ g' M" q$ ~0 q! B O
if ( ifail_ != 0 ) { \7 w" u+ i2 r2 T. x
UF_get_fail_message( ifail_, message ); \% u# E9 L c; e4 t4 ?7 O$ j
printf("ERROR: %s returned from %s\n", message, # func_); \
/ y! R7 C" E" h, S' @0 m9 d* d return ifail_; } }5 x }- G! e" M3 u
static int create_part( void );6 V; e, ^ p2 B$ j$ b- k
static int print_work_part_info( void );4 O6 r8 z8 g6 ^8 u3 G8 b/ A
/*---------------------------------------------------------------*/
8 b+ _9 c+ I( h: B/ a ^ d+ oint main(int argc, char *argv[])" L8 ^7 j% G+ D1 o" q K2 l- }9 B
{
" G3 k# s( d6 m int ifail = 0;
1 b# Q5 j$ D7 v. f& }7 J ifail = UF_UGMGR_initialize(argc,(const char**)argv);8 B- r" X& |/ R- z' g5 @$ k
if (ifail != 0)
9 X) ~7 p8 p+ b& E {
# I0 n9 F6 p U6 G( B0 r8 ^ printf("ERROR: Failed to initialize with error code %d", ifail);) B+ s& M# X" p5 y+ w% d2 i% P3 `
exit(1);9 Z! w/ N9 h3 Q3 d9 h
}
' P2 Q$ g+ @& i# y9 Y create_part();
! K7 l' r0 D/ d2 q8 M% b print_work_part_info();
~+ u9 h! A& p/ P9 D8 g; W/ n( h UF_PART_close_all();3 A/ L# n2 I* L- y0 f; F
UF_UGMGR_terminate();
( \! ^# P4 w x return 0;$ Q+ P* p; L2 n6 h: k
}
" M" @9 P& W( t2 s" Q/*---------------------------------------------------------------*/
; }( n0 }% m9 }: Sstatic int create_part( void )
' w& Z# r" K3 A y: U$ Z$ l! Y: F6 F{
0 v9 x, H( M1 W1 C/ v0 _( `+ z8 \ char* part_number = "600-A-wej-mk1-eng";3 N5 }! H0 x* a& F4 p1 `
char* part_revision = "A";
# r9 n2 m, t0 l6 I char* part_file_type = "master";
9 x: m4 s5 Y! r- \- P char* part_file_name = "";
8 y9 y0 k# }5 g7 }4 p; A& d char encoded_name[MAX_FSPEC_SIZE + 1];
: A8 N5 {7 R7 O- E, b tag_t part_tag;
/ R( Y- h2 Q- d# c3 h0 x& H' X! p UF_UGMGR_tag_t db_part_tag;+ a8 M3 K2 G: a: d
UF_UGMGR_tag_t root_folder;! V6 J; t+ L/ \7 Q( {
char root_folder_name[UF_UGMGR_NAME_SIZE];
9 C: [. k2 B- I/ Q4 H+ e8 k int i, count;
a8 u4 h+ t% t( d( g6 d UF_UGMGR_tag_t *folder_contents;
4 s' W8 M& S. u UF_UGMGR_object_type_t object_type;
0 M) R1 T& I) N! p/ | char folder_name[UF_UGMGR_NAME_SIZE];7 |1 a7 |4 W% c- K8 Z; D
logical folder_exists = false;
& I4 @4 S! f4 a0 @6 A, v CHECK(UF_UGMGR_ask_root_folder(&root_folder));
& X8 @% F0 Y* @5 Q! L% _& O5 X CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));4 U0 Y2 Y, h7 a0 W/ V' ^
printf("Root folder is %s\n", root_folder_name);9 J1 q/ P# R, h, ?
/* Scan through the root folder, looking for a folder called
( a9 \$ s0 J) v9 J9 } `1 D "Test Set Default Folder". If this folder exists, set it to be$ N! U7 I$ h, A! k
the default folder into which newly created parts are2 u1 Y8 Q- N0 Y
placed.5 k% f* V* k% B5 n( Z3 R
*/
5 C, R" j) @. t, ], o CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
`. y9 \' f, N+ L( M for ( i=0; i<count; i++ )
+ ], x O/ B2 E {6 @& D* ]: E( S) E' w
CHECK(UF_UGMGR_ask_object_type(folder_contents,
8 O2 Z! A. S- o; ]0 N &object_type));5 @2 ^8 @5 r5 f/ n; u+ v: v
if (object_type == UF_UGMGR_type_folder)
0 {1 U7 h5 z. q6 V3 h$ z {6 ?7 M' R0 F1 X) p2 x
CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
: |/ l% a6 O3 w/ x4 U if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )$ V) M6 E+ F& D, B3 b
{
. C# \1 {- N a# a3 n4 Z8 i printf("Test Set Default Folder exists\n");( R+ G, j" [, `- J$ t7 X! J( D
CHECK(UF_UGMGR_set_default_folder(folder_contents));
; h, V) `( p6 d) G+ G folder_exists = true;
' w7 ~2 _1 \& u! p) d: e printf("Set default folder to %s\n", folder_name);! `) o/ f8 D+ A1 j; v
}' a9 Y8 k+ Z- r* f
}7 \* A5 Y3 g9 B$ f
}4 _: o* e7 Y$ e+ B( K
/* If the folder "Test Set Default Folder" doesn't exist, set the* o3 H" ?/ f) E
default folder to be the root folder.4 n" e( U+ ~( z; A4 t, a
*/
+ O R) |: s0 q: T% k/ I$ d# L if (!folder_exists)
, v! p! Z4 q3 k7 p" M+ v4 e9 C {5 R, @/ J" F0 e0 P3 Q& f- ^
printf("Test Set Default Folder does not exist\n");
( @; K! ^% U M& B8 n2 S CHECK(UF_UGMGR_set_default_folder(root_folder));
" S& m- Y3 T9 z" v printf("Set default folder to %s\n", root_folder_name);
+ S5 y$ k6 C h# t7 ] }4 B! ~8 a" l3 X
printf("Encoding UG/Manager part filename...\n");
, e: ~: t5 |& L CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,3 Y0 _$ \6 c S/ }; R. B, Y
part_file_type,! K' R3 L) r2 @8 c3 r0 a- Q
part_file_name,' H% ^+ O$ \/ J9 y! U' c! ]
encoded_name ));8 u! D! ?3 Z) q: x9 o
CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
2 @, q E, S D$ U% J* }' k printf("Created part...\n");
9 W. J6 j) C0 m T& v CHECK(UF_PART_save());
; g$ \9 f( w2 \ printf("Saved part...\n");5 c6 `5 W/ B6 D
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
5 N/ ]' {6 m4 ^" J$ {2 u; H! ] CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",$ g& O6 d5 \9 x1 f% }
"Mk3 Engine" ));
+ t# }0 M' `, y, v+ D printf("Set part name and description...\n");! L9 f+ e( A4 r- F! m& \3 N: h% A7 \
return 0;
0 W: \2 E: n6 w}
( s0 Y! l! X2 p" \- u' @& i4 w. F/*---------------------------------------------------------------*/' g/ `/ ^* C' r8 @2 f( `2 v4 }
static int print_work_part_info( void )
. _6 }/ r+ l2 C" n' K{
" K* {1 N" ?5 J/ _* k/ J; l# F char work_part_name[MAX_FSPEC_SIZE+1];
/ Q( _% F$ }; n. { tag_t work_part_tag; }$ i1 S5 i+ ^5 R( o' H
char part_number[UF_UGMGR_PARTNO_SIZE+1];
: y& S0 F5 O- b5 j2 ^' I' l Q# J char part_revision[UF_UGMGR_PARTREV_SIZE+1];
$ k+ r4 ^9 @8 n8 r char part_file_type[UF_UGMGR_FTYPE_SIZE+1];( A0 W% X: [9 O& b3 s
char part_file_name[UF_UGMGR_FNAME_SIZE+1];
2 p b1 ^6 x7 B UF_UGMGR_tag_t db_tag;7 b. k0 Y3 p. a1 y, Z
char part_name[UF_UGMGR_NAME_SIZE+1];
! ]+ v* L# T* G3 C w) A char part_desc[UF_UGMGR_DESC_SIZE+1];1 ~# u9 I1 P l, C& L
work_part_tag = UF_ASSEM_ask_work_part();+ ] u: k, T% o: e
UF_PART_ask_part_name( work_part_tag, work_part_name );( E* e( `' j; c- s8 s( p
CHECK(UF_UGMGR_decode_part_filename( work_part_name,; C! l3 M+ `2 m+ e' ], Y9 k
part_number,
3 e$ J; ]8 l9 Q; v2 X2 F part_revision,7 I; _: O! J) _9 R0 @' r
part_file_type,6 T! |; k- d- A' S* w# [* S0 ~8 {
part_file_name ));% Z( ]6 Q1 h* b5 @3 L; {/ W6 N ?2 B
printf( "For the current Work Part\n\n" );
* K1 z- t2 J6 h) z printf( " Part Number : %s\n", part_number );
+ [( `/ N8 K' j9 M! n$ l% U" x printf( " Part Revision : %s\n", part_revision );
, B' W( _" N( t8 p \* I printf( " Part File Type : %s\n", part_file_type );
2 y3 I6 k6 \2 L/ L: E# ] printf( " Part File Name : %s\n", part_file_name );2 m% d+ `( w$ u4 z8 e8 ?& V9 ~
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
. G3 T N8 I4 }5 n) A5 c CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
0 L. o8 x& }0 l printf( " Part Name : %s\n", part_name );3 A: F9 a! s8 ]) h) Y$ ?/ u: Y
printf( " Part Description : %s\n", part_desc );
- L3 n* d4 \- x& E1 l return 0;
9 k" ~% [3 {! D}[/mw_shl_code]* `/ O5 P8 D; J' {- Y: f" K" z
|
|