|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。# V# I5 C/ n1 N$ u
$ ~2 R7 W. {9 u
[mw_shl_code=c,true]3 \/ _" \( T1 P
#include <stdio.h>8 S/ ~, {0 J9 ]6 h* Z% Z v* I( G
#include <stdlib.h>
2 v1 U: k' k. _2 E7 l#include <string.h>$ d+ ?, D4 ^% D( I4 U) s
#include <uf.h>
( Y3 |( E# a. H2 J#include <uf_ugmgr.h>
2 W/ a$ y3 h) ?#include <uf_part.h>* s) T0 d3 w0 k, J
#include <uf_assem.h>
5 c. O, \# p2 E, A& o#define CHECK( func_ ) \8 c0 u9 c- B8 |! Y/ e a
{ int ifail_ = 0; \6 [! `: [! j2 I
char message[133]; \
% `+ l, y) c2 M- t( ~ ifail_ = (func_);
2 o- o8 P' A$ L' n, D if ( ifail_ != 0 ) { \
$ o3 v+ [0 H$ i+ H UF_get_fail_message( ifail_, message ); \3 y0 `- u- s/ }6 y( p
printf("ERROR: %s returned from %s\n", message, # func_); \
$ c' n8 }) t* b: {6 r2 n return ifail_; } }- H0 z! g) p" H/ {. H/ W
static int create_part( void );
+ q: G8 \; o" H) C* B- D# Jstatic int print_work_part_info( void );
8 C+ V3 z! g& o: W& e: w8 b/*---------------------------------------------------------------*/
6 D. ^6 u: s# d, K9 f) k2 k: eint main(int argc, char *argv[])
" m7 J( I% X% m3 \' N{
% s7 d0 ~8 q% c V) S8 e4 W* d int ifail = 0;
$ I( H) o- k* C0 f- }' v" T! A ifail = UF_UGMGR_initialize(argc,(const char**)argv);
& H2 l( z8 _8 B" g3 G if (ifail != 0)1 a' X; H" q5 Z; z8 t$ ^
{
$ T$ j! m5 ~; f: w$ A5 A2 \ printf("ERROR: Failed to initialize with error code %d", ifail);
9 S0 _) x4 [/ v* R6 I5 T exit(1);% S: d8 g* G7 g" G
}. }8 Q2 }6 c6 g) i7 i( Z
create_part();
& ]2 N6 }0 j! a: M; g/ a4 B# D print_work_part_info();, W/ S5 T, f6 \, T
UF_PART_close_all();
% w* o6 u; c5 S& m0 ~1 ]$ |* v UF_UGMGR_terminate();
j: q2 z$ `) C! N+ D return 0;
3 c w& } ~2 {$ s, x3 ~% v}" U& J- E# u9 K/ G7 W
/*---------------------------------------------------------------*/( ^ C9 c* W( s) D8 q ~" R" |
static int create_part( void )
( u: D/ C9 r* R6 p{. i' w$ s" _8 A; d) S
char* part_number = "600-A-wej-mk1-eng";$ d! P' y; m5 i* {# {& w4 w/ f9 l$ y0 ]
char* part_revision = "A";2 @$ E3 x3 x( I8 Z% F- x u
char* part_file_type = "master";
: e* ~# s4 |5 L- g0 N" f# j char* part_file_name = "";; n% L' o4 P# M9 I0 b: \1 p; j
char encoded_name[MAX_FSPEC_SIZE + 1];
, P y" B) ]5 o9 X tag_t part_tag;
v: O1 B9 s/ K4 K/ {8 ? UF_UGMGR_tag_t db_part_tag;9 w# |/ j( A7 m g/ Q
UF_UGMGR_tag_t root_folder; X% K% J$ @$ K: j0 z9 t( I" w
char root_folder_name[UF_UGMGR_NAME_SIZE];1 F7 @ `. B% J8 Y5 j" T- K/ G
int i, count;. x9 u# G. _- n) N; k* `
UF_UGMGR_tag_t *folder_contents;
& z. I' _& w9 [/ W1 k3 ?! f2 L UF_UGMGR_object_type_t object_type;) h: W6 x/ ` k
char folder_name[UF_UGMGR_NAME_SIZE];
1 Z" P. }/ h0 x1 y logical folder_exists = false;
) t$ a. m! U1 l CHECK(UF_UGMGR_ask_root_folder(&root_folder));) P. Q0 b" S& t# X7 t3 G
CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
* _' ~) z4 d V printf("Root folder is %s\n", root_folder_name);: n, o, X. Q; d/ \2 b$ k
/* Scan through the root folder, looking for a folder called% F$ i! _, ~# ? u' P
"Test Set Default Folder". If this folder exists, set it to be
$ e9 o( t2 U% G' H. k! M' E the default folder into which newly created parts are& t6 }' o b, G$ l
placed.
2 N$ K# ~# T2 V- m4 |: V */
/ |8 e6 K: S* Y9 I# f* v9 X/ B$ C CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
! [/ ?+ w( M/ S2 P9 a. y for ( i=0; i<count; i++ )
2 {+ b- I+ R# C0 y# ]0 ? {
z. K' n( I; `* {, t CHECK(UF_UGMGR_ask_object_type(folder_contents,% V+ ]/ @6 w; C4 T7 l
&object_type));5 D$ x3 w" U2 C6 j5 @2 x
if (object_type == UF_UGMGR_type_folder)
# u& Y1 f5 z' r4 O, h {
9 I( T$ G6 Y# e6 t9 a' E$ t CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
6 C2 n d8 j4 @4 x6 r) l0 H% H if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 ) E8 R/ B2 R( v. W) H
{
3 [1 c1 ^ Y3 O printf("Test Set Default Folder exists\n");6 N; k X$ o( x6 W4 N% y
CHECK(UF_UGMGR_set_default_folder(folder_contents));
, K- k1 u: |( R W folder_exists = true;# l/ O O. i4 k+ f! W( b7 u0 n
printf("Set default folder to %s\n", folder_name);/ n9 a5 B4 u f# ]/ F4 ~
}
( S5 P7 W4 L1 c- |3 } j }8 l. K( K9 l8 l
}
7 Z' ?$ `$ D9 y- O. F0 _! R /* If the folder "Test Set Default Folder" doesn't exist, set the" ^" u e5 c* f& l7 T: ^" t
default folder to be the root folder.2 ^. t5 h7 J* R+ ~3 y" g4 h0 Y) P5 k+ F7 d
*/
* N/ ]3 N: {$ R if (!folder_exists)
" u4 j3 C4 e8 E: u3 C { H' R4 P# d( W
printf("Test Set Default Folder does not exist\n");: O% B5 e- |1 N. |
CHECK(UF_UGMGR_set_default_folder(root_folder));5 `1 l. W6 y. f
printf("Set default folder to %s\n", root_folder_name);
6 A+ X* A, l, T' R+ w }
& @. p; S, w8 ]7 R( k$ O printf("Encoding UG/Manager part filename...\n");
0 y% u) i y6 O CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
& w+ u$ |2 }' {+ O8 c5 I0 n1 a part_file_type,
& w9 Y D$ l9 Q3 R2 [, d d5 T1 B part_file_name,
! ^7 U; w) u' e4 i- v$ H encoded_name ));
$ ~( z% {0 b. I CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
5 h8 R. e, B4 U printf("Created part...\n");
* [4 {& B; L) c+ d! a7 ]- s- e CHECK(UF_PART_save());
( a: `& b4 R4 k; h+ e9 \8 W" Z printf("Saved part...\n");5 m3 Z, H, M% c2 q
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));, W0 K& n9 c; k8 }+ ]$ ]
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",0 y6 y8 C% D8 K0 D
"Mk3 Engine" ));( P& e" L Z4 {' I( Q% H2 ~
printf("Set part name and description...\n");
) ?3 z$ S2 Q! x) X( a return 0;6 O& }4 b) g, C' G3 ~# ~
}; u- h6 D0 {5 G3 B1 f
/*---------------------------------------------------------------*/7 h$ D; c2 V$ t" s" }
static int print_work_part_info( void )
4 C9 \1 t. w( o; S$ A" f% p{
2 L9 x! r. M, K7 b9 R( Q char work_part_name[MAX_FSPEC_SIZE+1];
8 \; j) V0 G4 f tag_t work_part_tag;7 P- u( [/ L9 ]1 d' R! m4 I! `& K9 o& a
char part_number[UF_UGMGR_PARTNO_SIZE+1];; ?/ t( ~+ T) b% r5 H( [# u$ O
char part_revision[UF_UGMGR_PARTREV_SIZE+1];
8 C2 K4 j/ G& ^$ I. G9 z% s char part_file_type[UF_UGMGR_FTYPE_SIZE+1];
/ J, B. F/ K }4 C/ f3 I9 @5 h5 R char part_file_name[UF_UGMGR_FNAME_SIZE+1];
$ P4 F/ f+ x( u) l* \& B UF_UGMGR_tag_t db_tag;
9 Y0 [- p) s) S R2 o- n- | char part_name[UF_UGMGR_NAME_SIZE+1]; E7 d+ R+ B8 a0 N& I9 {' I/ b
char part_desc[UF_UGMGR_DESC_SIZE+1]; U. D4 f& Z/ ]. T0 _
work_part_tag = UF_ASSEM_ask_work_part();- T: z# O$ Q+ H# n u
UF_PART_ask_part_name( work_part_tag, work_part_name );" y8 ~6 B: h6 g
CHECK(UF_UGMGR_decode_part_filename( work_part_name,1 [# p A6 { z3 {4 w+ l
part_number,
# y- H9 X+ `0 e$ v" Y part_revision, T- L0 p5 k: u" w, W
part_file_type,4 U. o# W% f5 a# _0 c
part_file_name ));) e6 Z6 [4 C' I1 G7 l
printf( "For the current Work Part\n\n" );. m/ v! \$ P/ ~7 o' A
printf( " Part Number : %s\n", part_number );! k! ^. y: V' H, }; m
printf( " Part Revision : %s\n", part_revision );
, d; a' f5 w5 `& D- ` printf( " Part File Type : %s\n", part_file_type );
$ |1 ^" B( B1 _( W j printf( " Part File Name : %s\n", part_file_name );
- ^" p. X# T9 R$ g; O CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag )); B. S" V% B" l- P4 b) o: s# q7 n
CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
! W+ ]/ y: U% \; A6 F) O printf( " Part Name : %s\n", part_name );
$ S. ~: Z4 ~" d1 s7 C printf( " Part Description : %s\n", part_desc );
( l# l* w4 M7 a return 0;
, s+ P% m' ]. B5 w* O8 b}[/mw_shl_code]
6 ?$ ~, \. ^" ]2 w4 W |
|