|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
2 r `7 y8 s7 g5 v' T. ]) Q9 F$ `6 c1 R
[mw_shl_code=c,true]
" t! m9 n3 G( e h* i/ t#include <stdio.h>6 G( P+ S- B% v
#include <stdlib.h>3 p1 }5 Y: e7 P, ^* e* C
#include <string.h>) _7 b7 b$ V) ~3 H( {6 e- d
#include <uf.h>
. Q5 q6 ^2 r7 ^8 u#include <uf_ugmgr.h>; q1 u! }4 F) K
#include <uf_part.h>: B% V9 E& t A, h! x& A
#include <uf_assem.h>
' c0 M- ?1 o |2 l* g#define CHECK( func_ ) \
% R; e/ ]' C/ B( B{ int ifail_ = 0; \4 L. o7 u1 \' {3 t( y* m
char message[133]; \
E. c' N' _/ }( q7 t# n1 e4 V ifail_ = (func_); 4 j- h5 R+ R# Z' h6 ?" F g
if ( ifail_ != 0 ) { \8 u! r9 p+ d& O* a9 m7 l& @: ]
UF_get_fail_message( ifail_, message ); \8 o6 l d" f9 d+ ^
printf("ERROR: %s returned from %s\n", message, # func_); \& q7 J4 A8 c2 d/ r6 {! U
return ifail_; } }
5 _ W# g" |) p1 V* I8 ]& ?static int create_part( void );& _/ X1 z" p5 N) J. r0 F
static int print_work_part_info( void );
* d0 R" s# N) ~1 K0 O7 M% B+ _/*---------------------------------------------------------------*/) U( L: d1 v" k) f; E# |
int main(int argc, char *argv[])% S) K% f$ ]) P. s$ m+ D# t/ D# g, Y- t
{
% }, z; L$ O* E) a; @8 W) k: z. Y int ifail = 0;# y- J3 j! w7 b8 i( t9 A
ifail = UF_UGMGR_initialize(argc,(const char**)argv); ]; f; c. e' A: H" t4 J
if (ifail != 0)! F$ W! O, Q, d3 L7 L, B4 A
{" s0 z( o$ P/ c) H2 D
printf("ERROR: Failed to initialize with error code %d", ifail);
4 U+ y4 F3 w7 a) H V exit(1);
, j4 o: C, E; _& Y }7 x' z. \( B o L& J, v, m
create_part();
$ i) e3 J& z' T2 L) w print_work_part_info();. t% x7 O! Q% ?
UF_PART_close_all();
. K9 v$ e* Q" f0 ~3 c% }7 @ UF_UGMGR_terminate();
2 }3 [- t* k" O return 0; `! P; ?% |/ A E! @
}
% J9 y" D8 l$ R8 ]; S. Q+ z! a0 u' X/*---------------------------------------------------------------*/! x; a7 d9 D) _. D& x' R E5 u# ?
static int create_part( void )! O ]& G; J# N
{
- z' z7 z1 r1 L3 n8 X char* part_number = "600-A-wej-mk1-eng";
c5 B* V9 c2 N& E% i6 a: h char* part_revision = "A";
" Z0 g( ~9 t' b* ^- B4 y3 ~ char* part_file_type = "master";6 R. m, a* ?4 I. r7 U6 s
char* part_file_name = "";9 A k+ u& e b5 v( f: q
char encoded_name[MAX_FSPEC_SIZE + 1];
" M/ R! N6 c" u! l/ V tag_t part_tag;+ R8 X9 Z) ^4 v- C0 w" d0 C+ T1 t
UF_UGMGR_tag_t db_part_tag;
/ V# |7 i/ @2 d( T$ q5 X. A, c4 ?- Y UF_UGMGR_tag_t root_folder;8 C! u) l2 e# J4 b
char root_folder_name[UF_UGMGR_NAME_SIZE];% n8 Y! G$ b2 E% k4 [* O# o
int i, count;
5 P! [2 s/ ~2 r UF_UGMGR_tag_t *folder_contents;; D, v2 t2 k" H* }8 L
UF_UGMGR_object_type_t object_type;9 m. f7 ]% }6 w
char folder_name[UF_UGMGR_NAME_SIZE];4 U( g8 s* Q, f' Z
logical folder_exists = false;
" A1 q' W& f: K* y( l CHECK(UF_UGMGR_ask_root_folder(&root_folder));
6 U. y0 g7 w. u; Q+ ~/ f0 e) e CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
; u- J5 M* T7 U, a9 z$ S. F printf("Root folder is %s\n", root_folder_name);1 [$ W. J0 _7 s" X9 |
/* Scan through the root folder, looking for a folder called: f# F' Y+ i) S% J0 U
"Test Set Default Folder". If this folder exists, set it to be4 \! t$ r$ N, S
the default folder into which newly created parts are$ `2 q: w' `; G9 r$ p. {
placed.9 ^5 D# D& T6 c
*/$ G- C% E% v% K
CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));. D W8 D% s V' }0 S: D: W
for ( i=0; i<count; i++ )
# ?, @+ s6 x" `/ h {
. O" @4 g- g2 _ CHECK(UF_UGMGR_ask_object_type(folder_contents,
$ D( J6 ]+ w1 x5 m6 R' y &object_type));; @- C9 a$ T. G' A
if (object_type == UF_UGMGR_type_folder)5 W4 k: C6 k4 |: G/ Q: H. a. F, P, ?. K
{1 R! W# ?( f# q* Z* R
CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
: y, ?2 e: q8 c( C; ]+ C- N if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
3 o) g* G) Y S: H/ r {
7 ^% K4 { z% C- I# { printf("Test Set Default Folder exists\n");% z3 ^. [+ y F. A3 y+ B9 _1 `1 ^
CHECK(UF_UGMGR_set_default_folder(folder_contents));
9 j% \: F; J2 Z) u folder_exists = true;
& T$ F5 U0 U; |* J) h3 V& T: D1 t printf("Set default folder to %s\n", folder_name);
2 c7 a! b! V) \ }
$ t: G3 K/ w) {/ I5 p# j3 n* w }
$ L) k/ b; a Q0 j. C) F& P! Z }
4 V# }% Q K1 P: X /* If the folder "Test Set Default Folder" doesn't exist, set the2 O% W" N6 j& V9 R- f4 [
default folder to be the root folder.* H [. g# J1 L, O
*/
7 K: R( S2 H f# X( w+ U if (!folder_exists)3 x9 g6 q+ _+ g) I# s9 l; S
{
* C( J( F. Z5 y" f7 ]5 {6 ^ printf("Test Set Default Folder does not exist\n");
& O" U, d$ D8 Z6 }( H7 w9 A CHECK(UF_UGMGR_set_default_folder(root_folder));
4 _1 r0 Z4 E/ {9 s( D1 h printf("Set default folder to %s\n", root_folder_name);
" v/ e+ }. Z+ F" p' G }/ p" ]8 `9 K8 h C2 {% a1 E
printf("Encoding UG/Manager part filename...\n");) _7 y, ?& Z: W8 p# S- J" ^
CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
3 x( c& e) d. ]& x4 J/ L+ r- F, g, Q part_file_type,( Z1 ?. |. q' X- `) g
part_file_name,2 ?2 ]( k+ [( P' o) l, w
encoded_name ));
Z+ s" |4 m9 j: ] CHECK(UF_PART_new( encoded_name, 1, &part_tag ));6 s- C2 P) U" b2 M2 v. Q
printf("Created part...\n");
/ Y& f* C) ^1 ^6 z* H8 l: Z) q CHECK(UF_PART_save());
, x3 v1 i. F9 O2 E$ V' E6 v( H printf("Saved part...\n");! B4 Z+ ?: K: O$ A
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
. q: ?7 K8 l7 A* k' ~6 _+ @ CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",$ U/ i9 J- @, ^( ~) s7 V# P; u& y
"Mk3 Engine" ));( ?# Z {4 m3 G! N- C, p) U* M
printf("Set part name and description...\n");
9 Q1 S+ ^/ `0 B0 H6 A7 ^ return 0;
1 M4 Q" n5 N' x7 ~$ h6 D}1 A7 y0 |. q' ^/ x0 k
/*---------------------------------------------------------------*/6 \9 `4 s3 s3 C1 H
static int print_work_part_info( void )) \0 b* M8 q2 w8 q
{8 d5 J0 h' ?- p1 k. f- e
char work_part_name[MAX_FSPEC_SIZE+1];+ u" B* g) k1 X
tag_t work_part_tag;2 D. T' R( [/ }! e- Z4 B. f5 G! `, u
char part_number[UF_UGMGR_PARTNO_SIZE+1];
& ~% }8 H/ y( u2 c( r char part_revision[UF_UGMGR_PARTREV_SIZE+1];3 d5 W. z7 c, S+ ]0 D# d
char part_file_type[UF_UGMGR_FTYPE_SIZE+1];1 ]0 K4 C, x. J+ V& I
char part_file_name[UF_UGMGR_FNAME_SIZE+1];" u* i: U% t6 ]5 u9 L, ~
UF_UGMGR_tag_t db_tag;
" T0 C" @3 g0 K7 } char part_name[UF_UGMGR_NAME_SIZE+1];
2 k8 k8 g) A4 k/ `) w4 O/ u0 q; o char part_desc[UF_UGMGR_DESC_SIZE+1];
' R, K5 i4 X! n# K+ v7 Y I work_part_tag = UF_ASSEM_ask_work_part();
) X8 }2 X8 N8 I$ a" k7 ]8 V# J# n% F UF_PART_ask_part_name( work_part_tag, work_part_name );
J% Q" i5 {, ?% P$ r2 b0 v4 c, x) h CHECK(UF_UGMGR_decode_part_filename( work_part_name,/ z# h n; i% _; m. E3 \0 F a
part_number,' R3 {; f, j1 ?+ _( K1 k
part_revision,
( c8 w. o, A1 y+ b8 W part_file_type,
) M+ j9 _% A) n7 T& a; @8 D part_file_name ));
' B9 y. i$ u; J6 A# s printf( "For the current Work Part\n\n" );
! _1 f+ @) M5 S6 f6 T* N" h printf( " Part Number : %s\n", part_number );
& G" ^2 y$ R: o+ W% a8 V3 O7 h$ r printf( " Part Revision : %s\n", part_revision );
$ Q/ e& `. n& K+ J. o5 b printf( " Part File Type : %s\n", part_file_type );3 _/ Q7 m; H8 a& @! G
printf( " Part File Name : %s\n", part_file_name );4 J3 E! z C( W7 x* D0 M
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
8 \7 Z2 O# z; V( h$ ^ CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));% i6 J/ c) i/ E
printf( " Part Name : %s\n", part_name );
3 M8 q! p! F3 [- k$ ^- z! C/ f printf( " Part Description : %s\n", part_desc );
% C; ^3 m4 B4 c3 J8 ]. e return 0;
7 ?' ]$ [2 M% ^) Z9 U$ c}[/mw_shl_code]5 I3 R% s' {" v/ O
|
|