|
include <stdio.h>
& O+ C, F% k! _& H1 S#include <uf.h> _) K! \) s! y( E
#include <uf_ui.h>
5 b5 o. M1 R7 |4 M* r1 @: ?4 q#include <uf_attr.h>
7 v. X: }7 ^ }: P Y( w, d#include <uf_modl_utilities.h>5 E" q8 I7 I9 M& q# D; @ F- D
#include <uf_modl.h>
1 v2 P# Y& ~: V#include <uf_attr.h>* Q+ X2 V* U; o3 c. _
#include "A2.h"0 F- z3 ?) c* ^( w6 g2 m/ X- ^( x
. b9 i/ G- u5 C
6 f; |% \/ N7 b7 t, `! X; F/*****************************************************************************; `, S* i/ U$ q: W
** Activation Methods9 D- R9 X- [6 l1 ]
*****************************************************************************/7 j! Z+ p4 J; E
' h8 ?7 \1 L# m8 k! U
/* Explicit Activation, F8 [1 P) I g# F4 `; G
** This entry point is used to activate the application explicitly, as in. Z" G, `* i/ {" Y- J
** "File->Execute ug/Open->User Function..." */9 ?/ V5 a) i& ^$ h: {; U
void do_open_api()( }# W5 W* c& R8 ~5 @; V
{& Z$ e+ j# x3 g, `
tag_t object=NULL_TAG,feat_tag;
]2 K6 F. i- k* a) f- V | int count=0,found=0,i;- I- z- M1 i+ G6 e1 J
uf_list_p_t feature_tag_list;" M- A9 R8 J; @2 r. [
char *feat_type,mess[100],sval[100];8 k! K( e2 a7 u: I. K+ p3 q
UF_ATTR_value_t attr_value;
0 {" y- p L& ]! U% N5 @# h4 r V9 k% ?) `8 q9 V% ~4 R; R
UF_MODL_ask_object(70,0,&object);% J* d. U0 f* s4 P
if(object!=NULL_TAG)
& q9 e1 |2 ]" b. G/ U j {8 x. h7 ?0 ?* ~$ `4 M
UF_MODL_create_list(&feature_tag_list);1 ?- W; k4 o; }9 u+ r& S3 \
UF_MODL_ask_body_feats(object,&feature_tag_list);( }- _* Z9 O& @- ?$ `6 \
UF_MODL_ask_list_count(feature_tag_list,&count);
' y; T8 C7 m& c0 T for(i=0;i<count;i++)) ?4 z9 C; r) t# }. j% {: q
{$ t- O B- G/ m4 S. U# J
UF_MODL_ask_list_item(feature_tag_list,i,&feat_tag);
! T+ [& X. P8 I/ J: Y UF_MODL_ask_feat_type(feat_tag,&feat_type);( ~/ j4 K7 P, `; ~0 v" E& g/ i
if(strcmp(feat_type,"SIMPLE HOLE")==0)
7 y) B* a6 @! B3 w) x' Q. O {7 [1 }+ a O" U+ |5 H
found=1;break;* \+ E" Q. q O! P9 [2 l: D
}
6 \$ s) G- t8 ?$ N) [" R! O }
. ~! J1 |0 c1 {1 T) ^0 R }$ ~# J5 Z5 l O% i
if(found)0 y, [! Y$ k/ r5 k c( v
{- _4 c2 d: J1 ~; `1 y3 E
attr_value.value.string=sval;
, Q# G7 e8 u* r UF_ATTR_read_value(feat_tag,"孔标题",UF_ATTR_string,&attr_value);
* ?& a" R7 M- P2 }6 } sprintf(mess,"孔标题的属性值为:\n%s",attr_value.value);
, _* J: z$ o* s. F# z: Q uc1601(mess,1);+ \. u% F' E# b4 @
}* i5 Y- g i) U! B& l4 j
else
/ e# v/ G4 r# A uc1601("没有找到实体或类型为 SIMPLE HOLE 的孔",1);
. b+ b& L. q% x& E8 l- u* x, L}) \5 h: ^* S, T) b+ N3 z
4 A: @' `0 N* J I( \2 f
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )8 Z) P& s: T& g( H) N
{
) l; \ e# h, {- n; Z& k9 [# X /* Initialize the API environment */
8 M* v/ A! c) [, W# j% r int errorCode = UF_initialize();4 e k& l; h' a2 f
9 E$ l6 y6 }, P- ]2 v9 L
if ( 0 == errorCode )
" I/ k% | z! a* b8 Q ~ {
6 d. T2 n2 C9 d4 P: C8 p( M b4 G1 m" w /* TODO: Add your application code here */
% I9 ^3 n" o/ _2 f& s/ k# w do_open_api();
/ S7 z$ C& ]) G, B4 } /* Terminate the API environment */3 y+ H# [- F! M3 e. f% Y* k
errorCode = UF_terminate();6 m% O7 m1 k0 `% ?+ v8 ~8 h" c
}
9 R0 Q! i8 b7 j1 O7 g; }
) T- m" M0 M- w. q; a /* Print out any error messages */
( A2 c0 v. a/ P7 E/ u# g PrintErrorMessage( errorCode );
0 g4 c+ `( g; O. G}3 R& ~3 S% s) ?6 E A0 }
/*****************************************************************************9 \% U' I x& V, B$ C
** Utilities0 V/ ?6 P. t7 \( G' }% o7 |7 n
*****************************************************************************/0 v/ U. Z' f( Y" ~
( f T0 q4 c3 x3 j/* Unload Handler) u; O& a0 j% y' \ a* f: V
** This function specifies when to unload your application from Unigraphics.
) H! v+ y; j* `3 b {; I9 y** If your application registers a callback (from a MenuScript item or a- ?! X$ D3 D0 y# j
** User Defined Object for example), this function MUST return! H8 v9 A# }" ?
** "UF_UNLOAD_UG_TERMINATE". */
3 u4 J0 p' q2 W7 B* [& M( h& F3 R4 T4 Iextern int ufusr_ask_unload( void )4 a" g% T2 a* s+ O
{
2 L* A1 C' Y2 a; u$ ` return( UF_UNLOAD_IMMEDIATELY );, N: j0 V+ K$ c
}
- ~1 X) y9 z: z) K, \: \4 I4 S. Q. i+ [/ Z! B, C6 P
/* PrintErrorMessage5 P( M" C1 o# y% ~2 L: J
**
- z" G* @/ X' l5 C5 E( }, t** Prints error messages to standard error and the Unigraphics status" u8 W- Z {. ^( K" ^, S$ |
** line. */
7 o' D9 \& Y0 `, h7 |static void PrintErrorMessage( int errorCode )* C: V0 i& [1 D h* t6 S
{/ M& N/ h% U* \" M
if ( 0 != errorCode ): M. C! U+ Q$ p N# W0 \. x( h
{* z/ L0 A W5 U9 J
/* Retrieve the associated error message */( L2 `6 n+ t7 U- Z+ O
char message[133];
5 o& W+ g, B# U UF_get_fail_message( errorCode, message );
( {" N0 W1 [1 W3 d5 k8 q, x& M: z
/* Print out the message */
2 G. B) a3 `( ~' s% A UF_UI_set_status( message );& g: I& o1 g" z: D2 q5 M j$ A
3 \2 G8 i% ~+ q3 u/ | _/ Y fprintf( stderr, "%s\n", message );
3 ~' P6 ?* T/ Q: n' u }
, {$ E: C3 S" x3 z; x}
3 I2 ?! a6 Y! v% l5 j |
|