|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
J+ M! z7 d# ]$ d4 r9 w# n0 S5 N* E" o! ]! w) ~4 [2 t
[mw_shl_code=c,true]1 `( ~* `) q9 j, ~
#include <stdio.h>
. H4 I" u/ k8 b0 [#include <stdlib.h>
5 [* B" V3 T; Q#include <string.h>
, {: L9 @8 [/ V/ Y0 Z#include <uf.h>
4 F$ z7 [# G$ e3 Z- D% R6 u#include <uf_ugmgr.h>
# d$ S: d# ?0 y& t#include <uf_part.h>
( V1 y; o# O' O$ J#include <uf_assem.h>" O! K0 U1 m7 D r
#define CHECK( func_ ) \3 R7 g. ^# a t1 e
{ int ifail_ = 0; \$ A! z8 l2 j% g
char message[133]; \+ a7 s8 u6 l! A' d m
ifail_ = (func_); : |! Y( A3 ^# l
if ( ifail_ != 0 ) { \
* `% [! G& N+ j UF_get_fail_message( ifail_, message ); \6 z/ C3 ^- }2 C6 w: H5 \- g
printf("ERROR: %s returned from %s\n", message, # func_); \( l+ H7 a- I/ b
return ifail_; } }
3 |5 \) ]+ T8 ]1 w- C9 P' {7 Sstatic int create_part( void );8 Z+ E& I( m: k8 ]" ^0 j
static int print_work_part_info( void );, s) w2 R& \ b7 r) D7 y5 |9 g' E
/*---------------------------------------------------------------*/
0 c x9 H; T+ W/ @) A$ f2 i( Pint main(int argc, char *argv[])6 B# _- w A3 X2 E# I+ z
{( g9 W. U6 W% ~
int ifail = 0; e! X: W* J; x! g
ifail = UF_UGMGR_initialize(argc,(const char**)argv);6 i- m1 u3 U) i/ {5 ~. B
if (ifail != 0)6 Z- E7 r" ?% J t% G
{
- W$ u) y5 @! s+ G- _* K3 A" S printf("ERROR: Failed to initialize with error code %d", ifail);
; b: j. ] M8 ?) s" Y* @$ ^$ s; A exit(1);! S8 B8 p7 x" w- R4 O+ w5 u
}
1 N+ K, z6 {/ {8 J. { create_part();! i$ g0 @/ ~6 Z0 d/ d. }. A
print_work_part_info(); U/ e& J8 T6 d
UF_PART_close_all();
, g+ r! o7 m( N, u UF_UGMGR_terminate();" q& @& O% l. E# Y2 a& f1 P) M
return 0;/ x/ d# M' q) v1 S, r# z6 j
}
" R$ \( i# }3 x2 R; r8 K" d7 L/*---------------------------------------------------------------*/
! {. ?' e0 j/ e3 hstatic int create_part( void )
4 j1 T# h) w% M/ K j. X) p# _{2 F4 I; b {% m3 f! X
char* part_number = "600-A-wej-mk1-eng";
( p& X, ?' W4 d' ~$ M! T3 A char* part_revision = "A";
$ u7 m: E* X: H3 y char* part_file_type = "master";! P; b" ~% K. K' @* D- b
char* part_file_name = "";
8 v- p' i2 h! A9 \6 F char encoded_name[MAX_FSPEC_SIZE + 1]; \% ?/ D$ J; A+ G
tag_t part_tag;% M9 F3 k% _ a" X( P
UF_UGMGR_tag_t db_part_tag;/ `# o7 ?5 X5 ^) e2 Q/ T h
UF_UGMGR_tag_t root_folder;
5 n: f0 w2 X! M e% Y char root_folder_name[UF_UGMGR_NAME_SIZE];; @) f9 |5 H# `7 n: L
int i, count;
' u1 v2 Q$ P+ U+ X _( t UF_UGMGR_tag_t *folder_contents;
) P8 ]- ]4 N! G3 f UF_UGMGR_object_type_t object_type;. g1 U+ L# S, w1 {
char folder_name[UF_UGMGR_NAME_SIZE];$ @2 o. x5 \/ d' w2 d' W
logical folder_exists = false;
7 i, v9 V. A0 Y5 P8 m" v CHECK(UF_UGMGR_ask_root_folder(&root_folder));0 O4 k( b: `/ ~
CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));/ X5 Q$ ~0 G$ _1 J
printf("Root folder is %s\n", root_folder_name);% _( M* k4 O2 m$ n- |4 d
/* Scan through the root folder, looking for a folder called
, C; g0 h+ O$ }8 t0 {+ Y "Test Set Default Folder". If this folder exists, set it to be
1 O# l$ e1 h3 W4 y the default folder into which newly created parts are% R8 t7 o' a9 u# d
placed.% q6 E. T5 J8 \
*/
% p2 ?( G) _ ^8 W* N, _; a2 ^7 m9 E CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
3 S5 j& Q* c7 B1 C; k, M) u( @ for ( i=0; i<count; i++ )
; w' t6 Q9 t; j- E# Q w, ? {
$ J5 e% c& e/ G% V& o/ @. x6 [ CHECK(UF_UGMGR_ask_object_type(folder_contents,* \' v, Y& q8 X* @* i) s
&object_type));
- z3 U+ Y! v& u6 O2 {8 k if (object_type == UF_UGMGR_type_folder)
* M" _- _# Q) a5 |& C0 O {
' m6 h0 e) l8 g CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
+ t! X' q9 f3 s" A9 Z' G# n if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )' \/ @% n9 ]/ _; e% e+ }
{
7 l. ]2 g6 C# T* v7 @ printf("Test Set Default Folder exists\n");
+ M) s% V/ R+ d- z. d7 A" o4 ^ CHECK(UF_UGMGR_set_default_folder(folder_contents));
, U" W/ X$ s- Q' ^# `; w% h folder_exists = true;3 ^7 N, r2 J% {
printf("Set default folder to %s\n", folder_name);
! l4 j2 I, X) n) Y3 a$ x }
6 |! R1 E0 Y$ k F$ g& _ }( a$ ?* D7 g' ~
}
9 d5 w: c) _7 E+ g2 f /* If the folder "Test Set Default Folder" doesn't exist, set the0 Q; L* P+ }; }% D2 F
default folder to be the root folder.4 ~; D) `& C( l6 ~6 {9 P: B
*/) ?0 O# p* y$ n# X$ d
if (!folder_exists)
; k- J O7 i) @6 n3 z* w' N/ a* K {
* f# n, n+ Y; M$ n1 j* j printf("Test Set Default Folder does not exist\n");
; M0 X0 T; M: U0 c8 U$ f4 Y CHECK(UF_UGMGR_set_default_folder(root_folder));
! V% I; h) i' x# Z printf("Set default folder to %s\n", root_folder_name);5 Z+ j8 n! T+ C% ?4 P/ j# W
}
/ j: X3 V" p" q/ m/ j: q printf("Encoding UG/Manager part filename...\n");
$ ]6 J' f3 @( a; E CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,$ h/ J1 n$ x) R0 v8 E/ |6 E
part_file_type,
3 Y3 l- W8 T) l5 L$ E6 X+ F part_file_name,
/ e8 F8 q2 o! j, s encoded_name ));1 o8 f8 T4 i+ h9 r5 }
CHECK(UF_PART_new( encoded_name, 1, &part_tag ));' E7 B0 i. q7 z" b/ @
printf("Created part...\n");2 X7 h- U1 V. P& U; y& s' k6 \
CHECK(UF_PART_save());
7 H! x9 P$ u$ w, Y printf("Saved part...\n");2 o( f5 |0 d" n7 V7 I8 l
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));6 L3 a1 q# w+ l& t3 |5 H9 }' U: X
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
9 j( o0 K. \$ c) J"Mk3 Engine" ));- M8 o! J- _! P3 d
printf("Set part name and description...\n");
4 B" ]% @. e, d/ d9 ? return 0;
# m9 r9 e$ }$ G1 P4 l( \}) S3 Z' h5 l8 ?) d' u
/*---------------------------------------------------------------*/7 D" Q- L( e( c& x0 H" T3 j
static int print_work_part_info( void )
; d6 c2 l, f4 e. L! R# N{ t; X8 B$ Q4 L3 w1 s: f
char work_part_name[MAX_FSPEC_SIZE+1];0 b1 C/ D# @9 }1 h5 m
tag_t work_part_tag;
- r0 ]0 M: @! ~) ~5 X- v char part_number[UF_UGMGR_PARTNO_SIZE+1];5 ?( L* N$ Z2 W/ W7 M( I
char part_revision[UF_UGMGR_PARTREV_SIZE+1];
' u5 @ {. N3 g) W# X char part_file_type[UF_UGMGR_FTYPE_SIZE+1];
+ G: o" @ x3 o char part_file_name[UF_UGMGR_FNAME_SIZE+1];
3 I/ }5 {7 n$ ~4 f; K9 i UF_UGMGR_tag_t db_tag;
0 l% R3 s' s% f$ u char part_name[UF_UGMGR_NAME_SIZE+1];
/ V- E H P9 r w0 x char part_desc[UF_UGMGR_DESC_SIZE+1];1 k* R# V0 I% [7 G, M% a! t
work_part_tag = UF_ASSEM_ask_work_part();( Y) ]5 \: Z. o% c7 s
UF_PART_ask_part_name( work_part_tag, work_part_name );9 j* `" x1 h: ^/ C) X
CHECK(UF_UGMGR_decode_part_filename( work_part_name,
3 y4 Q8 y- @- \: x* i part_number,
. t. x7 b- Q. t part_revision,
( l; ^# i7 x: H M: b) h3 Z, T( Y4 \) w part_file_type,/ ?4 X7 i: C. h6 [2 a
part_file_name ));6 G* B4 Q4 i% L) O0 w: n+ ?
printf( "For the current Work Part\n\n" );
( T# N9 k) S! z printf( " Part Number : %s\n", part_number );! G. U* f4 d3 s$ ]) A
printf( " Part Revision : %s\n", part_revision );1 M+ Q0 a' L* N5 r
printf( " Part File Type : %s\n", part_file_type );
* y" V. A4 t! E \7 ?' ^0 N. j) O printf( " Part File Name : %s\n", part_file_name );
* C7 e$ i/ O5 O8 B1 Y: a CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
8 z% U+ d: N$ Y3 X4 k; P2 @ CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
$ a3 c% H6 l+ E9 b0 T% j% j' Y! ` printf( " Part Name : %s\n", part_name );& v% y# g/ T5 N B5 I" ]
printf( " Part Description : %s\n", part_desc );7 O h( Z* ?. R1 L/ S: s
return 0;* H5 T7 T* E8 d4 S& E
}[/mw_shl_code]
0 P/ x" L3 l" q% j: T( T' ^% h |
|