|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。
. ^2 B4 p" Y' R p, |. E
; @. B, f0 `! P; F[mw_shl_code=c,true]
2 m7 P \. W) K3 R$ X$ s' }#include <stdio.h>
3 W4 @ M$ b$ w% g8 ^1 b4 ^0 n#include <stdlib.h>3 k: b9 d/ f, M' r3 }: l# t
#include <string.h>
3 G9 o; w0 K4 P* x, q. J8 } G#include <uf.h>9 H2 i- Q: I+ q% \! c/ m! l
#include <uf_ugmgr.h>
+ p1 z" F6 H& K: p+ A, M#include <uf_part.h>: }$ u5 `9 [: L( z
#include <uf_assem.h>
; B1 w/ ?+ U N0 [4 s! ~# o1 O#define CHECK( func_ ) \. x+ T5 @% c) {: `; ^+ ~9 {4 b
{ int ifail_ = 0; \
& o7 g% D1 K/ _: R6 w char message[133]; \. x% Y3 a) M/ h
ifail_ = (func_); % n t E! |- w/ C
if ( ifail_ != 0 ) { \
' E9 U5 t$ `8 K& m% ] UF_get_fail_message( ifail_, message ); \' X; A& p- O! V# j
printf("ERROR: %s returned from %s\n", message, # func_); \) K8 f0 L: l. K6 p3 j( h9 l' I
return ifail_; } }) W* p. `: u: ?/ `
static int create_part( void );8 f' s5 a4 ]9 X. k' r6 F8 v! H
static int print_work_part_info( void );/ R) N7 H, B) \' b j, |
/*---------------------------------------------------------------*/ N2 @0 s- A; T; h1 P O9 x
int main(int argc, char *argv[])
2 u, E c7 Y5 l{
: y- o4 M+ U/ c+ l. ~8 s int ifail = 0;
) Z& V5 Q3 p% \# N9 i/ G9 ] ifail = UF_UGMGR_initialize(argc,(const char**)argv);
5 w8 f4 M0 e5 g5 o# w if (ifail != 0)
& M* B' S7 O5 b6 Y+ t {$ E' v4 P, b2 m& |& Y6 c$ u7 T
printf("ERROR: Failed to initialize with error code %d", ifail);
: v* q: d$ S: ^6 ` exit(1);
$ E& u, K. m! G9 w9 S% q2 c }) c* w2 s! n O! w, `9 C
create_part();
5 w- }! r1 i0 v& Q print_work_part_info();
9 y4 z6 U3 H& g0 F. L | UF_PART_close_all();1 ]5 W% [7 w& s$ k% I/ Q
UF_UGMGR_terminate();
5 V" T2 T( F8 B1 H q9 f9 d return 0;
0 l q: v! ? _5 y}& _1 f1 c) L5 Q* @7 _4 L5 |9 ]
/*---------------------------------------------------------------*/
7 W. x6 O& q5 s, n! b& J4 Jstatic int create_part( void )! T" S! y. Y9 A
{5 ~) ~! X. X& a7 G# M2 X$ C
char* part_number = "600-A-wej-mk1-eng";
6 J4 n6 C' q! j3 |3 P char* part_revision = "A";/ a' t, [# c, z
char* part_file_type = "master";
; h5 Q# p) q! u$ P char* part_file_name = "";
0 P+ x) F. M2 d3 l char encoded_name[MAX_FSPEC_SIZE + 1];
# [! x! _$ @# Q. Z% l7 A" @ tag_t part_tag;
0 i( V, }( j. p5 k3 P UF_UGMGR_tag_t db_part_tag;
/ T' E e5 H Z7 B2 _ UF_UGMGR_tag_t root_folder;
) p- q, y7 X# A- c4 y; ]1 ^0 p char root_folder_name[UF_UGMGR_NAME_SIZE];! ]+ o$ ]# ]+ ~; B" e& n, ~' b' m
int i, count;6 m \4 C: C& a3 {
UF_UGMGR_tag_t *folder_contents;$ h4 u5 x' H2 @6 A' M- p6 X* C2 W9 \* Q
UF_UGMGR_object_type_t object_type;5 i8 t Z. i& S! ]% t& H- P
char folder_name[UF_UGMGR_NAME_SIZE];
: z4 o& a9 e- A( G- s! k) r logical folder_exists = false;$ F/ A) V& q; n+ ~
CHECK(UF_UGMGR_ask_root_folder(&root_folder));4 Z0 O3 q- D, q% z$ y7 e
CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));$ z [2 {3 I# L* Z. a9 f
printf("Root folder is %s\n", root_folder_name);
2 _! r, X% |3 s3 V2 h2 Z /* Scan through the root folder, looking for a folder called
" l3 } ]9 `& w- m* Q/ G; w "Test Set Default Folder". If this folder exists, set it to be
+ M+ W1 h ]5 U8 C9 t5 p' m" Q the default folder into which newly created parts are
: @: w C/ [+ ]+ n placed.' }/ y9 R4 k2 V8 H- ~. x) l
*/
$ y! X0 @8 f( W( Y# _ CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));$ Z2 ~5 J* [* @, m
for ( i=0; i<count; i++ )
; J9 P% F/ r; B$ l {, [* b6 t. U6 `) w9 ?' w
CHECK(UF_UGMGR_ask_object_type(folder_contents,2 G; b2 V8 E9 j9 k* @0 S4 p* ~# D V
&object_type));! N: J0 k) P- b5 Q
if (object_type == UF_UGMGR_type_folder)
5 ]1 R) N2 a9 z4 W) M/ Y! I {. t) K, Y4 h0 V7 q
CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));9 m! j5 z- E0 D
if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )9 i0 `& O0 B2 I% R7 E
{
6 E0 U0 ~$ K( l Q printf("Test Set Default Folder exists\n");
( N! F3 U. V% O) r% \" G6 p' t CHECK(UF_UGMGR_set_default_folder(folder_contents));
* R- [& [9 x6 k O6 | folder_exists = true;
' J7 d' v5 _$ [" f- F printf("Set default folder to %s\n", folder_name);
3 K: K$ `+ D6 R3 b }/ h5 d' @# u: t% K; H' o
}8 s6 g! M3 \# S, I0 J! \
}" p. `; P) p- B2 W
/* If the folder "Test Set Default Folder" doesn't exist, set the
! `4 R% H* X; Y# T U- m& P/ C0 [$ y default folder to be the root folder.
" n2 g* W c. u */
- I$ m+ T; N2 G. s% ^ c if (!folder_exists)
/ E4 z) U+ E3 o! @ ~9 w5 H0 d {* q6 |& ?* V1 b+ ~
printf("Test Set Default Folder does not exist\n");
8 k, y4 N, w& k( ?) g4 g CHECK(UF_UGMGR_set_default_folder(root_folder));7 A7 F: X2 c$ D
printf("Set default folder to %s\n", root_folder_name);
1 ^, R+ @+ i( V9 g! s0 c7 |" }0 E }( W5 Z2 E% z) ^& h2 K$ A
printf("Encoding UG/Manager part filename...\n");1 t& q2 ]( J' x
CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,. o/ W* N+ _. \; O
part_file_type,
% k1 [6 o6 D$ d# _5 ]' Y' s part_file_name,- m, D. ?! X+ `1 c! y
encoded_name ));& [1 X$ ^% X5 {7 w( o/ U- F
CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
/ ]: \& _/ R- a+ C9 e% B% t1 O* @ printf("Created part...\n");
+ @1 V: Y- s# F5 Y, Y* W, f ? CHECK(UF_PART_save());
6 p+ \1 J' @" F3 D printf("Saved part...\n");, e; o, l8 ~$ ^" O6 j: Q
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));
5 T% c8 X( C8 n CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",# L: _2 D4 a0 r) }
"Mk3 Engine" ));6 s/ Y* \2 P' } n. f7 E+ A
printf("Set part name and description...\n");
0 _. }- `3 p% K. S9 O return 0;9 ~+ m' Q9 z% G0 e$ u; i9 j
}
9 V/ }1 {( l }8 G; F/*---------------------------------------------------------------*/
- ^7 G1 J8 k! t- ~4 ustatic int print_work_part_info( void )
! Z# Q# d' A2 g" [( ~{2 ^1 c& C% M7 P2 O( F# g0 p0 i
char work_part_name[MAX_FSPEC_SIZE+1];: z$ n9 _7 ?2 L4 C7 T. t
tag_t work_part_tag;
) M7 T& z& @, {2 v M char part_number[UF_UGMGR_PARTNO_SIZE+1];/ m) Y: k0 p7 G7 a$ b
char part_revision[UF_UGMGR_PARTREV_SIZE+1];9 [2 `/ H1 h! J9 P2 k' @ O
char part_file_type[UF_UGMGR_FTYPE_SIZE+1];
/ l- _. S' S0 g6 x char part_file_name[UF_UGMGR_FNAME_SIZE+1];
- x" Q( ?, s- m UF_UGMGR_tag_t db_tag;
0 E& q6 G5 V9 t char part_name[UF_UGMGR_NAME_SIZE+1];- C* @' h( s% c
char part_desc[UF_UGMGR_DESC_SIZE+1];
0 n( C9 w4 s7 M+ A7 M& w work_part_tag = UF_ASSEM_ask_work_part();
7 w* K& Q; \* g/ f) g' I9 ? UF_PART_ask_part_name( work_part_tag, work_part_name );* Z9 m0 S6 T; b
CHECK(UF_UGMGR_decode_part_filename( work_part_name,3 [6 g2 _4 U4 ~$ f% d# N4 b( j
part_number,# ]8 @9 ?; n; l. a: F' ]% Q3 S
part_revision,
. w! _/ T' ^* h! l part_file_type,% ^- w9 l. Z& _. A* h( J
part_file_name ));
]6 i- q3 S r$ p8 y printf( "For the current Work Part\n\n" );7 A2 l Z' L) T1 H9 b% X! a
printf( " Part Number : %s\n", part_number );
6 s, M! Q E- i4 `4 l printf( " Part Revision : %s\n", part_revision );: M' T8 M7 M! y# o! u
printf( " Part File Type : %s\n", part_file_type );
& u* o, L2 j0 j9 b u printf( " Part File Name : %s\n", part_file_name );7 J$ O* A9 Y4 |$ r8 X0 H
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));$ g! h4 |' u$ i4 z! Z6 m2 Y2 m& H
CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
; g7 c0 c z$ L: ~ printf( " Part Name : %s\n", part_name );
" e C7 X+ i8 P: {/ T printf( " Part Description : %s\n", part_desc );
f: N- w8 m( Q return 0;
. E* O5 z5 w' B6 w* N# e7 u5 Z8 s/ U}[/mw_shl_code]
5 f1 _$ [* S' W8 d/ l! ^ |
|