|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
UG NX二次开发源码分享: Teamcenter集成NX Manager开发函数常见的使用方法如下,不外乎就是找文件,找文件夹,创建文件,查询等操作。) D4 N. E$ g8 |7 @7 ~$ Q
: D9 E# E4 q/ F. @; e3 s7 ?7 G1 e[mw_shl_code=c,true]0 r: s: M1 a4 h+ y" @" |
#include <stdio.h>7 X: x/ @& Q: W# ?; R" y
#include <stdlib.h>
; e# X7 I, S6 @2 a. ~! R" h2 L#include <string.h>7 u% v. V" O2 F" [, s
#include <uf.h>& v; w! z0 ]6 B0 l' Y: G
#include <uf_ugmgr.h>
7 p2 y" x3 t8 l#include <uf_part.h>) `1 j9 Z/ ^+ R- B3 C C7 A+ ~; G! l, W- r
#include <uf_assem.h>
" f2 o1 q7 \, [/ a+ x1 t' J! |7 H n#define CHECK( func_ ) \
, K0 V2 m2 `! |) I{ int ifail_ = 0; \5 X6 Z4 y, @* M. \2 G$ p
char message[133]; \5 D5 ~! _# R5 z: U }
ifail_ = (func_);
6 r& e3 C+ \7 o% a% ^; Y if ( ifail_ != 0 ) { \
+ W, g4 r* q" `# g/ V; Z UF_get_fail_message( ifail_, message ); \5 f9 T+ f/ r( D$ _8 C7 [' I
printf("ERROR: %s returned from %s\n", message, # func_); \
, r9 U/ S% a/ m. w7 m! I2 P return ifail_; } }% c- C. y$ G9 L0 L1 }% l; o* i
static int create_part( void );
" m. f0 q# g! }static int print_work_part_info( void );
! E, k( u# W: C* j1 F, q/*---------------------------------------------------------------*/
+ @$ E5 T/ p# C$ gint main(int argc, char *argv[])
1 Z0 K* g3 O5 T( ~' o{
# s/ E& L% _" q& \4 ` int ifail = 0;6 @: G4 _# c3 u/ K3 b6 v: X% B
ifail = UF_UGMGR_initialize(argc,(const char**)argv);
: o7 o1 h; T: t( L/ R( Q if (ifail != 0)/ g! g- A: j9 H$ Z! _+ [
{
/ o) h) T- O, ^ W7 h! |# t printf("ERROR: Failed to initialize with error code %d", ifail);
7 @9 w$ k3 u$ E# U% |8 v* p exit(1);1 e1 B5 R( \( L
}
" g" t# d# v' M s create_part();' ?" f0 _% N. S- T; G7 [
print_work_part_info();/ d, @& O: F8 q3 @* U% o- _
UF_PART_close_all();
8 w* n- Y5 U+ N" H1 o% E UF_UGMGR_terminate();& ^/ ^6 K! U% T+ b$ u7 q
return 0;
3 H1 e7 F) M, w; b7 T8 ~! A}: q f! o. k/ g; o' {- R& ^7 y& v
/*---------------------------------------------------------------*/: I3 r; D8 P1 H) w* d
static int create_part( void )
. F8 T" p, ]& `8 U! {{
4 [5 F# P: s; n6 _ char* part_number = "600-A-wej-mk1-eng";
6 S% L7 ?1 O* H6 ^5 C char* part_revision = "A";( ?8 I9 e4 X& W U, B# z
char* part_file_type = "master";5 I. W5 }! }6 e
char* part_file_name = "";: Z5 E) B/ z' H% h _
char encoded_name[MAX_FSPEC_SIZE + 1];) g l2 {. S% Y6 e2 T2 d
tag_t part_tag;; ^; Y* B% ^0 \8 i
UF_UGMGR_tag_t db_part_tag;, W+ p+ Y# T8 c& w, Q& J% z! c: E
UF_UGMGR_tag_t root_folder;
) ^% T) L( {: r+ j. c7 i/ T& j8 @: U char root_folder_name[UF_UGMGR_NAME_SIZE];
9 B' @7 z7 Q, w$ R% k; u: B int i, count;
- x, @4 Y$ }$ h9 i O; x- Y( S: j UF_UGMGR_tag_t *folder_contents;% ~) i5 I' @# G6 C v& D% S. K
UF_UGMGR_object_type_t object_type;* N* t& c6 d8 ]8 P/ {. [
char folder_name[UF_UGMGR_NAME_SIZE];' Z: k8 W' _: F& K3 G
logical folder_exists = false;+ O. f! X9 G" |3 V) J# M
CHECK(UF_UGMGR_ask_root_folder(&root_folder));
% r' F* L; |# b- D; ` CHECK(UF_UGMGR_ask_folder_name(root_folder, root_folder_name));
- ?- ], P' t) h3 d printf("Root folder is %s\n", root_folder_name);
/ l. {: y4 }6 o. o4 O' I9 ]2 b /* Scan through the root folder, looking for a folder called/ b9 T8 l7 @; |1 }& O% A
"Test Set Default Folder". If this folder exists, set it to be
+ D$ r' b( J& Y& x the default folder into which newly created parts are+ w$ }! z) G) H# |# A9 {' h
placed.
4 q" i X* k5 |. _0 j% t+ L- x1 m6 g */; Q1 q. k" X% x5 d2 [5 e3 n6 s
CHECK(UF_UGMGR_list_folder_contents(root_folder, &count, &folder_contents));
3 |4 J# q2 K% r. l) |6 ^0 C6 n for ( i=0; i<count; i++ ) h: W( \3 e6 [% ^9 K* {6 X
{
3 V, _, A- T. M0 v CHECK(UF_UGMGR_ask_object_type(folder_contents,+ |7 z2 w) H& f: v# G" W2 `2 {
&object_type));
3 z& S" H1 d# P% X$ H if (object_type == UF_UGMGR_type_folder)9 u4 A' Y t' H8 j
{/ S/ d' M1 _- r1 K& u
CHECK(UF_UGMGR_ask_folder_name(folder_contents, folder_name));9 e* g2 k. M0 P7 Q( H9 R9 w
if ( strcmp( folder_name, "Test Set Default Folder" ) == 0 )
6 ^ f3 [9 o# S* m/ y+ B& } {
! F& I$ y5 K) o printf("Test Set Default Folder exists\n");
: U7 u. H6 c( t# B( y. U! p CHECK(UF_UGMGR_set_default_folder(folder_contents));
0 A1 U4 _) v& e3 c% ?4 D' q$ ~* v1 v folder_exists = true;
. a& {/ [) C( K# a printf("Set default folder to %s\n", folder_name);
1 d6 R# w$ B: |, w% Y }
* ?* |& _( t( u0 R8 { }
1 V3 q- A- m$ D9 Y! s2 k! w9 a: f }* v% R0 g! m3 S0 q8 T" p4 x {
/* If the folder "Test Set Default Folder" doesn't exist, set the
& I8 Q7 ?# L& |* F5 l7 i; S+ d; C default folder to be the root folder.' p7 H- q" }* w& Z& H) z- ~) c
*/
# W, D; T4 u$ `9 e2 P if (!folder_exists)
3 G% g/ ]$ m. @" Y0 j, ?/ ~( { {
/ \2 E& h3 R: ^/ ~, y6 m printf("Test Set Default Folder does not exist\n");1 p( B3 h2 z6 e5 J0 _8 q3 A
CHECK(UF_UGMGR_set_default_folder(root_folder));1 ?9 B* _( |7 g7 M' V
printf("Set default folder to %s\n", root_folder_name);
! K8 }! M1 \& Z6 R4 J# c/ j/ P" ^ }/ z$ ^! w, f, f/ l, n6 V6 E& {
printf("Encoding UG/Manager part filename...\n");5 O$ _3 X% N8 a! S F5 c* [7 i. S
CHECK(UF_UGMGR_encode_part_filename( part_number, part_revision,
/ @; N' v) b% k \5 Y" Z8 _' m part_file_type,
7 s3 C- q" w* g" q, p: B& z part_file_name,
- C: g/ t& \6 I& a- F$ z4 o encoded_name ));3 I+ b: V7 e- ] i% n# |) w: Z$ N
CHECK(UF_PART_new( encoded_name, 1, &part_tag ));
/ |& M! Y1 ?; H( p: L1 l* } printf("Created part...\n");
- d( e @& x) b1 }9 O! Y+ a CHECK(UF_PART_save()); B/ l D: {* [. q1 t# d
printf("Saved part...\n");( I/ U3 K/ J$ B
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_part_tag ));- k1 x6 u8 p/ Y
CHECK(UF_UGMGR_set_part_name_desc( db_part_tag, "engine",
4 l) H r# |5 N& h' O- A( `"Mk3 Engine" ));
: j: [1 r( [. ^1 J printf("Set part name and description...\n");* P+ ~- _4 {0 g" t, d- s
return 0;! A! Z5 K" g+ f) s3 Q
}
2 j# a6 C; S( C% S/*---------------------------------------------------------------*/
- [) p6 }. Y$ N) y1 m. t2 istatic int print_work_part_info( void )5 p/ Q$ \$ E, |* r) z+ a3 ?
{3 l5 {( ^4 {4 X2 I
char work_part_name[MAX_FSPEC_SIZE+1];0 |. h( G* _* P! r7 t
tag_t work_part_tag;8 u: a, X* f& \: n7 v# d" f) `# `% h
char part_number[UF_UGMGR_PARTNO_SIZE+1];2 ^/ W$ N2 I! D W. ]
char part_revision[UF_UGMGR_PARTREV_SIZE+1];7 H7 R9 T: b7 z
char part_file_type[UF_UGMGR_FTYPE_SIZE+1];0 V; u6 e# \0 R$ F$ `( c
char part_file_name[UF_UGMGR_FNAME_SIZE+1];, D- S% M# E, i
UF_UGMGR_tag_t db_tag;
8 z# D% U1 C9 j* H+ u char part_name[UF_UGMGR_NAME_SIZE+1];* B. L/ ]8 P, t& {( ~
char part_desc[UF_UGMGR_DESC_SIZE+1];
" e) J% w1 w! [/ q) t2 Y work_part_tag = UF_ASSEM_ask_work_part();' r, I" P9 E% X* z; X z
UF_PART_ask_part_name( work_part_tag, work_part_name );4 ?- ~: n/ d* A8 ~& j
CHECK(UF_UGMGR_decode_part_filename( work_part_name, P+ t$ v7 p* f u
part_number,
* r+ ^' S' L1 ^+ A, U; B part_revision,
8 t4 ]. E( Q- K part_file_type,$ D$ M0 O% n- ?2 {' G: T
part_file_name ));7 @ p% b9 t( a& `
printf( "For the current Work Part\n\n" );! b& h) R+ S% {
printf( " Part Number : %s\n", part_number );- k% L# {! C) k
printf( " Part Revision : %s\n", part_revision ); q# V: p! Y! C8 P. s6 m$ Q- o
printf( " Part File Type : %s\n", part_file_type );9 O* r6 X0 N/ f
printf( " Part File Name : %s\n", part_file_name );& c+ Q7 Z: P, E- ]+ O" X# y
CHECK(UF_UGMGR_ask_part_tag( part_number, &db_tag ));
' e1 o) Z, Q w8 X5 Q$ M" v; y CHECK(UF_UGMGR_ask_part_name_desc( db_tag, part_name, part_desc ));
, r7 e4 T4 |! s1 D/ [/ I printf( " Part Name : %s\n", part_name );
/ R' @" P! S) ] printf( " Part Description : %s\n", part_desc );0 r4 U3 v, E. \) S
return 0;; S% f, k1 Q% ]
}[/mw_shl_code]9 m3 J! N/ r0 W3 |5 N: c& ]
|
|