|
include <stdio.h>; l; @- n/ r7 g* J, j4 L' f/ W
#include <uf.h>3 |( @/ }- ?, | [) k6 M- D
#include <uf_ui.h>$ @% K# x+ A: A* P, V
#include <uf_attr.h>
2 _) w0 h. p; [ i7 `! G6 V#include <uf_modl_utilities.h>
' d. k4 M4 Q* C% W7 z9 h#include <uf_modl.h>! f- I$ ~5 K3 s% e$ f2 u
#include <uf_attr.h>
2 Y. ~, E. F0 c+ s) W#include "A2.h"
7 L: l5 x4 w2 b# a' \1 \
/ k. B" S2 c1 U/ L
' e0 q0 _0 n! j0 G, r5 y5 ^2 U$ E" r* Z/*****************************************************************************
6 Z$ I0 f6 {8 ?6 `** Activation Methods9 _+ i: q7 U9 x a" X9 B
*****************************************************************************/
- g- D" M; L! H$ }: K) r1 J, D! x/ @2 F/ ?* q! Z2 r$ R/ \
/* Explicit Activation
. ]4 q6 C# Z3 P T** This entry point is used to activate the application explicitly, as in- ~% \# k0 W' r' P2 u0 E
** "File->Execute ug/Open->User Function..." */* a( e* w5 e' I- G8 L) E
void do_open_api()
! V$ h+ A% D0 [: e* L" y{
4 N5 c/ @- ?( V; }2 F tag_t object=NULL_TAG,feat_tag;' g e8 Z5 q) `- ]0 g' |
int count=0,found=0,i;
7 A) E8 P+ g: Z9 _# u uf_list_p_t feature_tag_list;* | S! F0 E$ K3 w$ U* [
char *feat_type,mess[100],sval[100];9 U8 u3 g, o' a7 K+ i% ^
UF_ATTR_value_t attr_value;4 Y T( Q* s3 i& w) _
1 a, E1 Y H3 D" ^6 y$ j: ^2 ~$ \ UF_MODL_ask_object(70,0,&object);# H$ Z5 `% N: C' P1 `
if(object!=NULL_TAG)
) V+ y) t) n) z, w9 a! j {1 D: x7 Q! |$ Z: F- S+ @
UF_MODL_create_list(&feature_tag_list);+ F; M5 R8 |. S, @; h$ G8 X& g
UF_MODL_ask_body_feats(object,&feature_tag_list);/ D% P- Y6 ~% o9 w/ E& Z9 K8 `
UF_MODL_ask_list_count(feature_tag_list,&count);7 C4 a% W& w8 H
for(i=0;i<count;i++)" N3 P8 o' ` g4 ?0 {
{
5 {( h' w' ?( F$ x5 W UF_MODL_ask_list_item(feature_tag_list,i,&feat_tag);
2 H# w( D: n l& t7 N UF_MODL_ask_feat_type(feat_tag,&feat_type);
' [ C" x: X1 U if(strcmp(feat_type,"SIMPLE HOLE")==0)4 y1 K% j2 w, G0 h/ m3 l+ F
{4 Q- m; X Z& S6 }4 P3 ^7 _
found=1;break;
; G% |5 } H! B' k1 i$ x7 _ }
% J T/ n6 |# ^) n! v }
( o @2 m; ^; B+ l5 O& h }
# E4 h! r$ v) j# ^0 M if(found)
6 G8 ~% w- E; x4 v) e/ o6 h* y {
3 a4 `- ~" t: y2 [9 t attr_value.value.string=sval;8 V, x/ `2 B8 l4 t0 e
UF_ATTR_read_value(feat_tag,"孔标题",UF_ATTR_string,&attr_value);
& S8 z2 c% z' m$ m- c! G k6 F sprintf(mess,"孔标题的属性值为:\n%s",attr_value.value);- Y2 j) w. u6 T4 `! ]
uc1601(mess,1);5 w5 t/ d8 N2 p7 d/ ^. Y
}) X. e6 {) n7 I2 @- G* f I
else
, e6 J7 }* i7 W1 { uc1601("没有找到实体或类型为 SIMPLE HOLE 的孔",1);
' p" G8 i- d0 Z}( ^/ b5 u8 i v
2 N% L1 v7 J) f; E) K0 a
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )4 u7 m9 g. n% w% `- s/ W4 E
{' b9 z% B: q8 r1 s( k. D
/* Initialize the API environment */: r: D9 B) w& y$ ^ N y7 {
int errorCode = UF_initialize();
, s+ U" ~8 N* I( Y, ^
/ n0 ? _) X8 n+ H5 x J if ( 0 == errorCode )
' S* t0 V- @1 \$ C% i; [2 L {
. k/ C& L9 G! O7 ^6 ?8 {& q /* TODO: Add your application code here */
1 e* q% h; p5 Y do_open_api();
1 ]( D) \2 K& z+ ] /* Terminate the API environment */0 s N" q9 Y" w! l" N, A& d2 L
errorCode = UF_terminate();7 Q4 ^$ J. d( s
}
8 ^5 A6 Z" \+ m' p4 F
9 K, f( I0 `& I( I /* Print out any error messages */
+ k0 g6 e6 l3 A. }7 w PrintErrorMessage( errorCode );
C) b# B4 q# T: l/ l}
$ J& A( x% J* V% M3 I/*****************************************************************************) ~2 c' Q' B. y
** Utilities
% K |5 [' F& W: x g*****************************************************************************/4 u$ q9 J* N+ {- c
. y" \2 _' B- s' a
/* Unload Handler, V; W% r3 r" S
** This function specifies when to unload your application from Unigraphics.# G( `* ]+ w1 q* E& R: d- s; J
** If your application registers a callback (from a MenuScript item or a
. Q$ {/ a2 \2 _$ a** User Defined Object for example), this function MUST return- h& Q& o/ s. m; \+ [8 x) m
** "UF_UNLOAD_UG_TERMINATE". */4 P9 Y# x4 j- ?; y7 \
extern int ufusr_ask_unload( void )
9 m# P$ q4 }7 s- T% `{
4 ]& u' q+ l$ a; w' f8 Q4 s return( UF_UNLOAD_IMMEDIATELY );* q5 M1 D1 Y5 m0 B# \* h6 `8 u; l: F
}
- G0 _! e+ {# p2 O) y
& a( O! ?# w6 N; B" Z/* PrintErrorMessage' C' L5 k! Z2 M# |5 U; I2 o) R
**
) g3 a6 H4 k0 y** Prints error messages to standard error and the Unigraphics status
h" s0 Q4 V6 w** line. */% }9 h2 Y3 ?9 F# h
static void PrintErrorMessage( int errorCode )
' {* p* f8 B* U! ?4 C{ o5 H5 q6 x2 R- M' X; k4 n
if ( 0 != errorCode )
. B# Z4 f, c; N$ \* j! P, [! u {% V8 E' [3 D: D% R
/* Retrieve the associated error message */
0 w! A4 @* l6 F% p$ c# J$ | char message[133];
0 Y8 O$ q7 L" D# c H: N/ Y UF_get_fail_message( errorCode, message );" W$ C7 Z5 E+ V0 }) s
/ r& r0 H. d$ Q+ Z6 ?- s& v# O
/* Print out the message */# M; n `0 |$ T6 _' Q
UF_UI_set_status( message );
Z9 M4 r& ]* y4 s' C3 u3 X/ w7 {: g' R: i1 {
fprintf( stderr, "%s\n", message );8 J* ?& a/ O# G* o" C8 s% D
}
; V4 l" O, z) e}) Z( a8 p/ h+ z
|
|