|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
2 E3 U1 B! M$ N6 Y4 S/ I. G
" s, n' T! V; E4 g8 _' y[mw_shl_code=c,true]4 E, M" K6 B2 t) ]: O
#include <stdio.h>
1 T0 y3 L' W* Y& S#include <stdlib.h>, L6 B* x4 g l1 ?! E% w
#include <string.h>
+ F7 P [- c& A: F#include <uf.h>
( u7 A( p2 _6 E9 E4 L4 Q. t# R#include <uf_ugmgr.h>/ Q& |) f ]8 E: A" J1 E
#include <uf_part.h>* }3 O3 L+ A; x( y
#include <uf_assem.h>
. D% ]# q5 D( a& B2 k& x! T#define CHECK( func_ ) \0 e5 i" i1 S8 p2 g" P, H! i
{ int ifail_ = 0; \
5 \& Q& W, w, [- ~- N char message[133]; \
9 ^+ T3 T/ n5 \8 c: R: F. F ifail_ = (func_); % {( A" T* J k3 c0 {- s! P0 j* K% i7 L
if ( ifail_ != 0 ) { \( i* p% ~- g. e+ i7 Y* a# [
UF_get_fail_message( ifail_, message ); \
" F( U. y' f) }* u4 f# Y printf("ERROR: %s returned from %s\n", message, # func_); \
' r( U( x7 u( l6 g4 Z3 \- | return ifail_; } }
+ {+ O, u4 H% `* n. Y$ dstatic int create_part( void );
- Y4 L; W Y7 R z6 Kstatic int print_work_part_info( void );
& A" Z5 W9 j. b$ H: v" V H/*---------------------------------------------------------------*/
2 L9 J% Y4 m3 P4 G$ Rint main(int argc, char *argv[])
! Q4 v& T; K6 q* B. B; x2 h$ N{- K( |2 ]* p7 V6 n8 E1 E
int ifail = 0;- G5 J1 ~4 ^6 T( c, B
ifail = UF_UGMGR_initialize(argc,(const char**)argv);
5 o5 a6 V3 v! q% h4 T) s if (ifail != 0)7 D2 P5 ?% S, U" y. M# o" Q& E( ~, `
{
1 f' d! E T2 d printf("ERROR: Failed to initialize with error code %d", ifail);
9 c. f5 l5 Z( A4 J+ W exit(1);
7 D" s( q8 r& f- l0 c6 z( @ } x' ?8 t9 r; G
create_part();9 O: H7 j) Q; m: r8 e
print_work_part_info();
: n6 I! |9 I# m' G6 \, o7 v2 w UF_PART_close_all();8 {9 f; ~- k9 ^0 \ X
UF_UGMGR_terminate(); o8 l/ U& h4 p8 @" M
return 0;
' ?; a6 m( Q8 S( G( @9 j: N3 ~}
: Y- A) g3 ?) ]/*---------------------------------------------------------------*/- [8 m" |/ J: |+ u' g2 Z/ E3 ^ X
static int create_part( void )3 U' c/ V! v) e& a
{
: H$ L# R/ o2 X E* f* b char* part_number = "600-A-wej-mk1-eng";
2 V$ q( y$ O+ B) U2 M/ s char* part_revision = "A";
" v2 L3 T: s2 X+ E# { char* part_file_type = "master";+ Y2 g( B# z8 A- t3 {
char* part_file_name = "";
4 O+ H' M# i1 l0 I) v char encoded_name[MAX_FSPEC_SIZE + 1];
# `0 a. `4 ^# v2 h& n5 H tag_t part_tag;6 P+ N0 {; Y- T" P/ [' S
UF_UGMGR_tag_t db_part_tag;
+ z! m: F/ j8 T* T9 K UF_UGMGR_tag_t root_folder;
9 G' J$ V6 S4 l- l9 S char root_folder_name[UF_UGMGR_NAME_SIZE];
. i/ E# l9 x" n, w3 b0 m int i, count;4 [. B: ]- ^1 n1 o7 \' U
UF_UGMGR_tag_t *folder_contents;# G9 H6 L* A5 r5 |6 j
UF_UGMGR_object_type_t object_type;
! m3 h9 b3 Y* y* O6 ^2 `* R5 N; U char folder_name[UF_UGMGR_NAME_SIZE];7 o1 b- d+ e- F/ M
logical folder_exists = false;" J: k, x$ x3 ^+ V" w% i8 s8 p
CHECK(UF_UGMGR_ask_root_folder(&root_folder));
4 z( h/ N! Z% Z6 y6 G CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));8 Z+ W5 [) V% |1 P" `! t7 n
printf("Root folder is %s\n", root_folder_name);2 j4 n& f# w9 p! M, G. c B
/* Scan through the root folder, looking for a folder called. S; |) j& j1 J- u. ?8 o
"Test Set Default Folder". If this folder exists, set it to be# O& j& N; @) p/ ^8 D
the default folder into which newly created parts are1 K y$ @ o7 N @7 P1 k: [
placed.: d- X9 `6 P; O( c2 j) }7 V
*/0 |- R% y. d( d% |" q) x
CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));9 }2 O: y. ?% ^9 }2 F2 U# N
for ( i=0; i<count; i++ ); J/ W% ]# N1 o/ B2 T
{+ U: B1 }. K3 m$ _
CHECK(UF_UGMGR_ask_object_type(folder_contents,7 z+ c7 r4 T% B2 ^
&object_type));) A# B c2 _( }6 Y ]
if (object_type == UF_UGMGR_type_folder)- h) v8 J3 J* d$ [, T
{
0 U6 C4 h' C+ E3 o/ P5 C a CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));( \ j' \7 c6 u# C& _" ^
if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
; z4 z$ b+ |# r. r7 o8 r% Z5 V {
' _! Y+ j$ z# T printf("Test Set Default Folder exists\n");
" Z" q+ y+ k# I2 T: r: S/ k CHECK(UF_UGMGR_set_default_folder(folder_contents));
) P2 Z" U @7 ~4 Z7 d folder_exists = true;
" t8 ]7 w) R: g2 a8 u printf("Set default folder to %s\n", folder_name);( d2 v5 [6 a% I, B
}
% l, S9 T0 R4 j3 F: Z5 n5 D! V }
* t) `# a9 ~: I1 s }3 E$ a1 A) @1 A- n! P; A
/* If the folder "Test Set Default Folder" doesn't exist, set the
7 U/ O# f! U6 q default folder to be the root folder.
$ @0 ~2 m& M- v. A) d */
: F, C; A; C8 O if (!folder_exists)
0 @9 t) v" x1 y( J( c {
# h5 Q! o( W& n2 E8 c, @' A printf("Test Set Default Folder does not exist\n");
- Y3 h3 M, F7 \' I CHECK(UF_UGMGR_set_default_folder(root_folder));
# F! N" q/ J2 l: r( ^: ] printf("Set default folder to %s\n", root_folder_name);% I% ^) r( b& p! T. ~3 W
}
2 s0 M) W; j# j# J printf("Encoding UG/Manager part filename...\n");
# \# H: b1 L& }& T3 T CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
% G( S' S1 W+ f4 D5 O: S5 N5 q0 ~ part_file_type,
9 n7 c# J6 E4 H8 K) E part_file_name,7 K- X5 o9 ~2 i! L4 N9 s
encoded_name ));& H: L1 x9 z# \: N( [! A( o
CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
3 i1 e. K' [0 f9 n printf("Created part...\n"); `4 ^$ a, g, _7 U
CHECK(UF_PART_save());
( p4 n" h8 M$ o( t7 f printf("Saved part...\n");
! e+ ?& o5 \% a; S- T @ CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));. a1 ]5 c7 W+ f. y1 a f, L. q
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",7 T- o6 i/ w( @5 I) p# p
"Mk3 Engine" ));
8 p# B/ M( M. }6 X" I* U printf("Set part name and description...\n");0 m2 e* O( c- W. h6 P! x' i
return 0;+ R W0 k) I% e; |$ \7 |( f: y
}
5 u+ P1 G3 E- r) b; B" L/*---------------------------------------------------------------*/
. U5 _- n; }3 gstatic int print_work_part_info( void )
( V2 }9 i. Y2 S Q{
& b% [3 u) O# [; Q( K' C# y char work_part_name[MAX_FSPEC_SIZE+1];
9 A1 P3 l5 X! X8 `; t; y2 m tag_t work_part_tag;6 H2 C9 ^- F2 x# ^( P2 W6 ~) d
char part_number[UF_UGMGR_PARTNO_SIZE+1];
1 X7 U G3 G+ T3 I/ y char part_revision[UF_UGMGR_PARTREV_SIZE+1];
4 i- P* E5 [* e. G9 [( ~; J8 m char part_file_type[UF_UGMGR_FTYPE_SIZE+1];
- X4 b5 X( |% `4 N; T' X' U char part_file_name[UF_UGMGR_FNAME_SIZE+1];
) g' u/ B* U- z4 L; V% v* L UF_UGMGR_tag_t db_tag;, i$ o6 a& s' R8 Z! e
char part_name[UF_UGMGR_NAME_SIZE+1];
8 O$ T1 v; U" s0 u; k9 Y w char part_desc[UF_UGMGR_DESC_SIZE+1];
$ \+ q, G8 `- P8 H, d work_part_tag = UF_ASSEM_ask_work_part();
1 @* X2 V# f$ o# a. d9 E UF_PART_ask_part_name( work_part_tag, work_part_name );
' Y6 K- v; R Z CHECK(UF_UGMGR_decode_part_filename( work_part_name,
: J5 a4 h2 z( B M3 k part_number,/ z# B4 o# d4 {" D* X0 v0 b& Z W1 D
part_revision,
6 K9 h* O q1 K! f4 B/ N" T part_file_type,& c& `# p1 |" _" R% U8 D8 \
part_file_name ));: t- M0 U! j+ n6 `% ~9 x) P+ C
printf( "For the current Work Part\n\n" );0 D. W. t7 C U* y/ o9 \) d
printf( " Part Number : %s\n", part_number );
& e" W; G, s5 o, @7 u printf( " Part Revision : %s\n", part_revision );
5 f% S4 G" j5 Y$ O+ n3 z printf( " Part File Type : %s\n", part_file_type );
+ Z3 H! _6 f8 w! y5 K printf( " Part File Name : %s\n", part_file_name );
& @6 K2 E- k5 ^" p' g, \* z CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
3 e2 d2 a3 c# z$ y- ~# K CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));& v: {$ q9 Y, r$ ^2 N/ \
printf( " Part Name : %s\n", part_name );6 x9 b* b+ n* \. @! b
printf( " Part Description : %s\n", part_desc );
4 n- o% I$ }/ |9 Z return 0;# H& T' j Z8 I4 `
}[/mw_shl_code]: I8 _% N: g5 s4 m
|
|