|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
& H! j0 v$ o+ W Z& W9 D+ U2 ~! a" u
, x$ Z6 o: U; h* ^( ]/ R0 z' k8 B[mw_shl_code=c,true]& n& s' I: P; c) U; a" n8 w9 B
#include <stdio.h>
$ M! m2 }* M" {6 D#include <stdlib.h>
; ~3 t. p% @/ L4 F1 J# I: t#include <string.h>
4 ~5 J2 a: |" g* D3 v; h#include <uf.h>
9 z; }) b3 {7 |9 [#include <uf_ugmgr.h>
9 P% f$ |% W3 V#include <uf_part.h>/ d& X4 {/ m; Z% Q5 W. O1 T
#include <uf_assem.h>
N! c# o: c+ }7 Z6 }#define CHECK( func_ ) \' y0 R& b- |( q' O2 Z7 ]: ^. I
{ int ifail_ = 0; \
9 K+ q1 b& ]1 V1 B( c; E9 ^ char message[133]; \
) b3 R% F% r- \5 V: e! ?) _ ifail_ = (func_);
5 u5 P1 t( s, C# u% g+ k. a5 n if ( ifail_ != 0 ) { \
' a8 f. Z, d4 q. @ UF_get_fail_message( ifail_, message ); \9 p/ x4 s0 U$ \: N, o+ ]+ `: V
printf("ERROR: %s returned from %s\n", message, # func_); \
! _2 R7 _) ]+ K4 E3 p; d return ifail_; } }; P, ~9 A: n8 z% S1 z) I
static int create_part( void );
. n0 F7 A0 o% Z, ], L" @static int print_work_part_info( void );
- X/ x6 Q9 k' b- n5 |/*---------------------------------------------------------------*/
9 ?9 x. ~5 d, n. [ e+ Vint main(int argc, char *argv[])
8 W2 ^8 Q& L- c; k( _{
7 y v- p: r6 H: N8 H( e int ifail = 0;
5 X% q Y6 H, K5 ^" `; f ifail = UF_UGMGR_initialize(argc,(const char**)argv);
% h! k& g0 F& C" G1 i/ C if (ifail != 0)
" e" s* W7 F& W& s {
( ^- F& u0 Z* ^$ o8 v, P* I printf("ERROR: Failed to initialize with error code %d", ifail);
0 s1 h) m h$ m8 o& z exit(1);1 s) h4 x' L4 ^. f4 i
}
) G5 R0 x% `: ~- X$ x) G$ j create_part();
+ d1 J p( i9 K0 v+ |1 a print_work_part_info();
1 Z; j5 \$ Z" J9 e& [ UF_PART_close_all();: _7 s& b& U7 d6 p$ S! i- Z
UF_UGMGR_terminate();0 P7 b! B) r9 H5 P
return 0;5 i9 m5 |$ e$ z z" o( ~
}6 _" K, e; {- ` I0 o v
/*---------------------------------------------------------------*/
5 q5 [4 k! z- p _, Estatic int create_part( void )' e) p: j: t; v( l$ a
{3 Q$ p& n9 t& c" z D7 Z
char* part_number = "600-A-wej-mk1-eng";
. x. d! g7 |) {8 s& Z& {& ? char* part_revision = "A";, S8 Z1 `7 N1 T# n X
char* part_file_type = "master";( a$ ^' S! s/ E, f
char* part_file_name = "";! p6 I1 C& @. P! C0 _1 @
char encoded_name[MAX_FSPEC_SIZE + 1];
( d$ V# u" j% @, m* b tag_t part_tag;1 p; t, _/ W0 _$ D9 v( q
UF_UGMGR_tag_t db_part_tag;# v: \, T1 l* L* E4 S; s
UF_UGMGR_tag_t root_folder;
0 y9 \2 W5 b7 s$ b7 B char root_folder_name[UF_UGMGR_NAME_SIZE];& H2 y% k% j. r6 g! ?
int i, count;
. L. y+ s$ ]* U* Z( f1 p, _ UF_UGMGR_tag_t *folder_contents;. H& z0 N/ g' }4 x0 d; S- K
UF_UGMGR_object_type_t object_type;
9 g, T$ V9 z" {- O9 s7 h- e1 g% O% A4 D) Z char folder_name[UF_UGMGR_NAME_SIZE];
: J7 _3 v9 `6 u6 ]% t# N logical folder_exists = false;
2 R' m9 t2 |1 w* M2 ~ CHECK(UF_UGMGR_ask_root_folder(&root_folder));
4 a/ d( o0 ]% T7 O0 s- K* F) [ CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
8 `$ B% e/ Z) b8 P% ?3 g& L+ @4 F printf("Root folder is %s\n", root_folder_name);: P6 Y( G' }( g* ]1 g; X) c b
/* Scan through the root folder, looking for a folder called" H' v4 ~4 R8 S4 M; M
"Test Set Default Folder". If this folder exists, set it to be
4 R8 S( H: \+ W4 O' c* ~/ Y the default folder into which newly created parts are
" [3 Z+ P1 B; |! ~3 _: O' q( D placed./ H" `3 q3 e1 s9 [5 x+ _
*/
; r- N. S5 `- e5 x! d- s1 N: u CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
9 I3 k& a# n) _# m3 o8 T for ( i=0; i<count; i++ )
# G4 G, O9 j1 U$ s$ d {
7 W) a' D' s3 a8 C. G2 L- Q CHECK(UF_UGMGR_ask_object_type(folder_contents,0 u' ?: r0 {0 f2 C4 J9 Q
&object_type));
5 x. [& F3 A) G. I0 P0 t if (object_type == UF_UGMGR_type_folder)
5 O7 ]4 y6 N; t: O" z, e" v6 H {
0 I. F1 z" H7 j" G* w7 F# X CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));
D6 {0 e1 p1 Y if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )0 W5 U( v. V! X) U0 f& y
{0 \, |4 X8 R4 }- O
printf("Test Set Default Folder exists\n");4 E8 u8 C/ E# M8 r9 L
CHECK(UF_UGMGR_set_default_folder(folder_contents));! t3 Q$ H9 y8 y# K% \4 U, J
folder_exists = true;
3 i% L0 G! u) ? L) k8 N printf("Set default folder to %s\n", folder_name);2 O) z$ f4 ^# E
}/ v- H- a7 U2 H* o7 ], Z& l6 c( ]; _
}8 o/ O+ z6 J+ C6 U& M9 j
}' Q1 M. p ]7 O& g$ s
/* If the folder "Test Set Default Folder" doesn't exist, set the( h) ]7 V9 ^ `( I+ v7 h, [
default folder to be the root folder.$ D5 M" O4 ~* x1 }1 Z
*/2 G4 j6 B a2 F
if (!folder_exists)
0 [' A" w! f" Q- a$ F {) G; q: L$ E- K. V
printf("Test Set Default Folder does not exist\n");$ n4 g( \( d2 P6 U* f ^
CHECK(UF_UGMGR_set_default_folder(root_folder));
1 c& `; Q a1 c( m& e+ ~7 W" w printf("Set default folder to %s\n", root_folder_name);
2 j" ?* m4 M# i8 b }
% L2 U8 O) c+ _1 z! g; H$ v printf("Encoding UG/Manager part filename...\n");7 ~7 L; Y1 f. E* Q3 Q/ @1 f$ x
CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
2 ? U2 ^3 t5 V8 B' k7 y part_file_type,
# O {, V" q$ D: ^' H7 s: s9 w Y part_file_name,0 o% l0 Z/ s# L- O/ g4 f9 R' h' G
encoded_name ));4 {9 E$ [* z: _ V; y5 v* P3 z
CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
2 M4 [ |9 ^" B* }7 u8 C printf("Created part...\n");
$ F& T2 `. Z3 v c CHECK(UF_PART_save());+ g' \/ H6 } S! F+ _' j; ?' F
printf("Saved part...\n");
7 Y7 j* P, U5 H: a CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));6 L+ n( X, n+ v0 z- a. R
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",3 F; H7 n6 [0 \! w6 w
"Mk3 Engine" ));
; _/ {' I7 O# Q; a printf("Set part name and description...\n");
& K/ }/ F' ^/ i0 }* z1 o return 0;
, y* ]0 \1 _8 O2 y}
, S4 O. d' f+ U/*---------------------------------------------------------------*/5 V2 V. S$ {8 J& E, |4 Q
static int print_work_part_info( void )" ~' S K" | u' v
{* E( V' W% S% ?% N
char work_part_name[MAX_FSPEC_SIZE+1];
" q7 c6 `4 b6 _6 v tag_t work_part_tag;( R' P6 ]. r: n' @
char part_number[UF_UGMGR_PARTNO_SIZE+1];( ^) Z! ?/ Y- {( I- b- R% V
char part_revision[UF_UGMGR_PARTREV_SIZE+1];
4 V+ I2 t8 v& r l% j1 C- a8 p char part_file_type[UF_UGMGR_FTYPE_SIZE+1];7 ?# D5 T' h% ?8 q
char part_file_name[UF_UGMGR_FNAME_SIZE+1];3 V$ P8 X! j n
UF_UGMGR_tag_t db_tag;, I! a/ l/ h, B; i, i1 z0 U
char part_name[UF_UGMGR_NAME_SIZE+1];
i. @5 f* U$ t char part_desc[UF_UGMGR_DESC_SIZE+1];/ W7 V& q1 Z: C% b4 a% k% O6 M
work_part_tag = UF_ASSEM_ask_work_part();
) c' V! E) O- W+ _3 M" ~ UF_PART_ask_part_name( work_part_tag, work_part_name );
( [! L( ^$ u5 Y; h( m CHECK(UF_UGMGR_decode_part_filename( work_part_name,% [. N& l( Q; n, W7 P4 G0 a% N
part_number,
, Y/ c: Z6 O- A4 t* ~) { part_revision,% |$ [/ [% L. I- _% G+ w4 s7 k1 P
part_file_type,2 Y$ j: e K/ k; }# @" X
part_file_name ));
6 f: F( U$ k" j0 A printf( "For the current Work Part\n\n" );
0 E) A( A* z* S$ |1 m( D printf( " Part Number : %s\n", part_number );' X: d& I! V3 S
printf( " Part Revision : %s\n", part_revision );
, e5 |1 c8 m- |/ d& J% n1 d printf( " Part File Type : %s\n", part_file_type );- m7 x6 d p) L/ b5 W2 [
printf( " Part File Name : %s\n", part_file_name );
* y2 h2 Q. p0 N5 O CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
% J/ \1 _! ?( J CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));" W' Z0 }: @( Q8 @0 V8 _3 I i+ N
printf( " Part Name : %s\n", part_name );
" h* d# G! t! u8 y4 k( ` printf( " Part Description : %s\n", part_desc );
3 D X3 Q: C+ q1 S return 0;% R$ `0 W) T$ n* H0 {) {" ~7 m
}[/mw_shl_code]
9 x. J h9 y4 B% w, ]# b' X8 Z |
|