|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。- x. \! S- \( Z7 c4 D1 T. f
' N: v% f, O. v) Q! L* S[mw_shl_code=c,true]
, ~: {$ \7 p8 E/ |- W) h#include <stdio.h>
@8 B0 d# x* ]6 r0 K9 v( z#include <stdlib.h>: f }3 Z% w8 h) ^2 b+ C* ^
#include <string.h>
* j$ g; E, `+ q2 R0 g#include <uf.h>
6 Z5 K$ E n; y#include <uf_ugmgr.h>0 J/ Y/ c4 q1 j
#include <uf_part.h>7 u6 G8 K! G. N, p% Q
#include <uf_assem.h>- ], Q6 F" o1 N; R
#define CHECK( func_ ) \
: B" R. [7 X" b0 G9 E2 w/ S5 \{ int ifail_ = 0; \2 U- e8 X$ l1 o7 U b% R6 z
char message[133]; \
; p, |2 M. ]! y ifail_ = (func_);
! n! T3 Y- J0 P6 I- P4 |9 C* t% H- ]; E if ( ifail_ != 0 ) { \' a( ?3 M( s, G a9 ^9 X; s5 f) E
UF_get_fail_message( ifail_, message ); \% f; _( E( M; Q# w4 r* x
printf("ERROR: %s returned from %s\n", message, # func_); \" {3 r: P/ g& i% O3 ]
return ifail_; } }
}: x' T# o g3 z9 `0 }. sstatic int create_part( void );* g3 b- Q4 R* }1 W- z. |- l
static int print_work_part_info( void ); o, |$ g0 c M! }% w
/*---------------------------------------------------------------*/
. W2 f5 K- ~& K1 o- _int main(int argc, char *argv[])8 O" x8 X1 n: B% D% |
{
2 _% n4 H& a- A# n* x int ifail = 0;6 g, e0 V3 O- G2 Y
ifail = UF_UGMGR_initialize(argc,(const char**)argv);. n4 X$ ^' S7 i5 p: c. h
if (ifail != 0)
% {0 U4 K& F% @: \% Y4 U {
; S. Y: t) Q- ?4 H* O" j- U printf("ERROR: Failed to initialize with error code %d", ifail);
/ w9 X% V& a; A2 i! Z# \1 s exit(1);0 @- n1 o, O5 q& w
} B0 z& l1 [9 n2 U! a: a# @* U1 D/ c
create_part();
% b# s' U3 b/ U6 q print_work_part_info();
+ I2 l) ~: l E* m, \5 G- M UF_PART_close_all();
4 Y" q" K1 \+ {. n UF_UGMGR_terminate();
8 U; p/ H4 f! o, V5 B( S2 b return 0;& Y; ^3 X8 `) h+ n6 x1 H
}
, }1 d) b l: k" V6 q/*---------------------------------------------------------------*/3 b( V7 I5 g1 h9 u7 j4 X
static int create_part( void )
+ M9 I+ p3 O# z6 B' {1 r{6 B5 s8 f9 p j8 Q3 W5 ~3 C
char* part_number = "600-A-wej-mk1-eng";
/ y8 Q+ Z _/ W5 y7 g3 Y) r char* part_revision = "A";
7 B6 G3 Q8 w ]9 i char* part_file_type = "master";
" p9 x+ y3 A$ s% E. r2 l( k char* part_file_name = "";
& {5 o7 e# b5 v0 d: ?3 O3 T2 I! n; n char encoded_name[MAX_FSPEC_SIZE + 1];
; e+ A' ^) n4 t% m. v7 T tag_t part_tag;. @- s' ]0 j0 a/ _3 e' ?) P# ]" H
UF_UGMGR_tag_t db_part_tag;0 w) L+ ^$ o: T6 f) H+ t3 W
UF_UGMGR_tag_t root_folder;
! Q7 M- s) S* K) q) b* Z2 L char root_folder_name[UF_UGMGR_NAME_SIZE];
% k* e8 e, e2 E: O# A int i, count;
( p9 W; S! P! o- _& { UF_UGMGR_tag_t *folder_contents;$ Z0 g+ ^; {8 C; F6 s
UF_UGMGR_object_type_t object_type;
3 I: R% D+ j" h char folder_name[UF_UGMGR_NAME_SIZE];! m: q2 f* I1 S7 H* [
logical folder_exists = false;" o. T+ s* }0 O* k, \$ Y
CHECK(UF_UGMGR_ask_root_folder(&root_folder));
0 h! H- b% Q3 w& q3 f( J CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));$ A2 K" l+ q1 P6 C( @* |
printf("Root folder is %s\n", root_folder_name);4 a+ u) y [% j4 C; Z* X
/* Scan through the root folder, looking for a folder called) o& e1 h1 g K/ {
"Test Set Default Folder". If this folder exists, set it to be# I5 h9 _5 S7 ?
the default folder into which newly created parts are5 V% T% A) v: c
placed.
/ Q0 x. {( h3 t- Y$ E+ y8 E* p3 ] */
- \: ?) i$ n0 V% K7 E" f6 E CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
3 ^6 P$ N6 Y, N1 s) Z" y) v) w for ( i=0; i<count; i++ )! o2 z' z: J! k1 ~2 V
{( P/ S0 `( `$ \! i$ z
CHECK(UF_UGMGR_ask_object_type(folder_contents,4 R4 J$ A; `8 }4 U/ ?3 r/ k
&object_type));
0 r7 F l& }+ k( P% k' A if (object_type == UF_UGMGR_type_folder)+ m9 q: h) ?' O5 K
{& T# u" v- i) q1 b; J: v& `. e
CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));- c4 m9 u7 z# I7 ?' t% v! A! m
if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )7 N1 D: P0 U1 c3 r
{( e# ?: S9 r* F6 ]) b% D# u. k
printf("Test Set Default Folder exists\n");
2 k2 Y1 f, O- {; s9 N9 o" I CHECK(UF_UGMGR_set_default_folder(folder_contents));& ]" H L2 U( n+ A, r, W6 l
folder_exists = true;
' R# t' e* K+ o ~" ^7 F+ I printf("Set default folder to %s\n", folder_name);
7 o! G3 d5 W) d$ D }- g$ H" C4 j3 ?( v1 T* s2 S
}3 L, n2 c# g- z k) z( ?$ B; U8 [, g
}
/ a3 P9 s5 M- W9 Y- J+ _ /* If the folder "Test Set Default Folder" doesn't exist, set the' ^% G- o9 v6 w
default folder to be the root folder.7 U# D, Y+ y6 p# q8 s7 l
*/
1 }) X8 g- I; X+ x. `% ` if (!folder_exists)
' w R' c. m+ _ {9 u8 o% c% M( J0 ~0 P
printf("Test Set Default Folder does not exist\n");
$ s5 M* |2 k/ z CHECK(UF_UGMGR_set_default_folder(root_folder));( Z, r/ J# D: I; T% @
printf("Set default folder to %s\n", root_folder_name);
9 e' y* v1 |0 ]7 V9 B* {& u }
Q9 z% C" w9 A printf("Encoding UG/Manager part filename...\n");
& _4 d3 v/ y2 L3 X/ V, W- L CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
) n6 E5 K* S! A9 O: b3 ? part_file_type,
) K8 w5 [% ]6 E- A3 J; c part_file_name,) g7 ^2 m0 ^$ w- G7 L+ I8 M1 G
encoded_name ));
( G: x$ F& t5 u% k4 Q CHECK(UF_PART_new( encoded_name, 1, &part_tag ));1 ~0 u. ~, t) n: ?, M
printf("Created part...\n");
$ n* E$ g8 ]- ^3 a2 h: v$ S; Q( x CHECK(UF_PART_save());) h/ {; B, V& L2 e4 e* |1 @5 _
printf("Saved part...\n");* B& x8 G7 b. L
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));* q; f% C8 K0 v( y9 N/ V
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",+ q& f" } P: C
"Mk3 Engine" ));( r) y% Y$ b9 o6 L0 N
printf("Set part name and description...\n");7 r9 l8 t+ X O: r: O" r/ j7 b
return 0;0 [: g' f8 X* J }' _+ u- Q4 ^
}
( F4 X" E' h& S( [8 x* `/*---------------------------------------------------------------*/
' t" k; ^0 u! }0 F, Ustatic int print_work_part_info( void )# e, g4 n3 ]# M2 E a9 A
{: d% P0 m. p: Q/ M, X3 E, K* u+ V
char work_part_name[MAX_FSPEC_SIZE+1];' O( m. \, m q8 C2 \4 `( }
tag_t work_part_tag;+ v' a: m0 E5 }. r
char part_number[UF_UGMGR_PARTNO_SIZE+1];3 l' B4 E- D, A4 @3 q$ [9 l1 j, p
char part_revision[UF_UGMGR_PARTREV_SIZE+1];
' k! b% f, k* P2 h' U char part_file_type[UF_UGMGR_FTYPE_SIZE+1];
; a6 j- {1 ]9 O: D$ t char part_file_name[UF_UGMGR_FNAME_SIZE+1];) T- r" t) p. K% b
UF_UGMGR_tag_t db_tag;
% ]( a- p. e, F; a, { char part_name[UF_UGMGR_NAME_SIZE+1];
/ g, T0 k; D0 Y, U- L char part_desc[UF_UGMGR_DESC_SIZE+1];* p$ I; s: t+ ^1 l
work_part_tag = UF_ASSEM_ask_work_part();' R1 O6 @4 Z- P- p7 M. }% }
UF_PART_ask_part_name( work_part_tag, work_part_name );+ C! p9 w% m# _7 {
CHECK(UF_UGMGR_decode_part_filename( work_part_name,
1 ]5 i% P, ?" c part_number,
5 U& ^8 D" M8 b! P- @+ {( i% i part_revision,
' n+ h/ t7 M# n: M" p part_file_type,
( }$ P3 Z* T/ c w' d part_file_name ));
8 R: g; P* s, x) _( G* y! l5 V7 X printf( "For the current Work Part\n\n" );" c8 J* l2 d# w* u
printf( " Part Number : %s\n", part_number );
! p r! O2 L( m0 ^- a! V6 ^ printf( " Part Revision : %s\n", part_revision );8 z$ k0 [% q: j9 Y
printf( " Part File Type : %s\n", part_file_type );% l- `! b- z7 j: g9 K5 M2 b
printf( " Part File Name : %s\n", part_file_name );/ ]3 ?) y( T$ t( J9 A9 |& D3 ]0 h
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
; p# C: P) t0 X, r' J/ e0 F# i CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));* B; \4 ^/ s! x) H4 J
printf( " Part Name : %s\n", part_name );
0 J/ I. t) }0 }+ k4 ~+ | printf( " Part Description : %s\n", part_desc );7 C# Z6 h/ d$ B" j7 D
return 0;
7 N% W4 g, {# p. f( u0 L}[/mw_shl_code]
( }+ W: P9 j" X! D* \4 C$ ?9 w; ]9 O |
|