|
include <stdio.h>
* M; c, b5 f9 p" ?#include <uf.h>9 W2 ]& ^+ z2 i0 @0 l$ C
#include <uf_ui.h>
, l* t9 s9 c# d3 S#include <uf_attr.h>% m: X$ m6 j9 {+ G6 P
#include <uf_modl_utilities.h>2 V+ U; T9 ?9 t. j; S% p, \# s
#include <uf_modl.h>
6 P0 i' R$ K. G! W+ K k" T#include <uf_attr.h>
v8 I& W; s% D) m% Z5 |#include "A2.h"" v, a+ n+ v, b( i. D- L7 U2 [
& _1 z z3 M! {% r& U
7 D3 i# d0 K* |7 T/*****************************************************************************) q" Z5 p; D% w2 l a: S8 F7 l
** Activation Methods
* Z) Z" T+ t: D% n# b h*****************************************************************************/# K) |% x3 u! T! C8 g8 n1 ?' }
# F3 t! o4 x6 c+ M* q/ [* Z
/* Explicit Activation
' Z1 ^8 }: H) s5 d+ V** This entry point is used to activate the application explicitly, as in8 p' @ u4 p Z. o h0 Q
** "File->Execute ug/Open->User Function..." */
7 a* ]! [9 A: h& avoid do_open_api()
" o, |; {, R; f{
! g4 O# i4 a7 l/ P0 ~9 c0 q tag_t object=NULL_TAG,feat_tag;
4 a0 E1 b `( h2 u: I int count=0,found=0,i;2 E9 M$ L* y. f+ t( n
uf_list_p_t feature_tag_list;
3 ^4 [2 X& e" z8 q char *feat_type,mess[100],sval[100];* M! J5 H" a! |4 D
UF_ATTR_value_t attr_value;! G) b& i2 z- s; ?% ^
- i* @$ d7 s0 t. @" M6 a2 L UF_MODL_ask_object(70,0,&object);$ G- Z* E; r+ t4 a* ]& O
if(object!=NULL_TAG): x. ^* M! n; g% V* d% p
{( b; B, j2 N% w$ u
UF_MODL_create_list(&feature_tag_list);
# \9 e- X0 n/ j. p UF_MODL_ask_body_feats(object,&feature_tag_list);7 _# o3 x; }$ }* A$ p
UF_MODL_ask_list_count(feature_tag_list,&count);
) Q) K' @, z6 t* ~5 J8 v for(i=0;i<count;i++)
- u0 D# Z1 D7 K; t0 M" |: Y {
# a3 ]; x- E$ n! U UF_MODL_ask_list_item(feature_tag_list,i,&feat_tag);
- l7 ]% _, R8 n- I UF_MODL_ask_feat_type(feat_tag,&feat_type);
8 c& m" X5 n. y5 F& f if(strcmp(feat_type,"SIMPLE HOLE")==0); ?+ @5 t3 `+ i+ A" m3 c
{$ `) m) z, d. K8 D
found=1;break;
0 t* n6 `: R, [, y }
5 r" P0 d7 l5 B+ ]8 e- c, F% x3 `5 ? }4 |- S" |+ y) M6 N" D
}
8 G/ t4 _( p o' S% A& h' ` if(found) Z5 ]( I2 U0 I- [3 p
{
# L' N7 [# p6 W _ attr_value.value.string=sval;0 P& l( M" d5 j y( V' Z& {8 [5 h i0 ~
UF_ATTR_read_value(feat_tag,"孔标题",UF_ATTR_string,&attr_value);
4 Y0 p: l X/ V" r( Z/ }. d( M sprintf(mess,"孔标题的属性值为:\n%s",attr_value.value);
6 ^' I) Q" w: P* ]. w) Y4 f uc1601(mess,1);. i% c; i2 o$ U6 L w" @6 }
}
6 p# Z7 e4 x0 C# ?# U: o( N4 E else v0 d8 Y6 D6 ]- g; u% e
uc1601("没有找到实体或类型为 SIMPLE HOLE 的孔",1);- }& ^! C, }9 g) C3 [1 j% N3 B! b, F
}
, B. v4 o: f% ^& h, E4 C" z R b2 q3 R) R) [: X
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )1 L, _( z# L9 A; S
{
" j& Z5 \2 g$ Y- r7 g /* Initialize the API environment */9 G- ^+ p" P* O6 q) ?9 E' M: T
int errorCode = UF_initialize();
: R5 O p D4 z3 [& I# g
1 C( [$ V6 x: @5 Q* g% C if ( 0 == errorCode )
, _) r) V) X. E7 w0 ]6 D/ } {& b' P- e! p4 h4 R* l4 @$ U
/* TODO: Add your application code here */
; C' T3 p) w( L& S; t do_open_api();
: Z9 l; a9 S5 g2 n) b /* Terminate the API environment */' o+ i" i' |" }6 S7 J: D1 F: E/ W0 ~
errorCode = UF_terminate();9 J: o8 E- G' P
}) ?, k/ ^$ v6 o4 O" _3 K) Z
& Z1 A# x% K: V/ U" \" I, C: w /* Print out any error messages */
0 i- v0 u2 K0 M" a. k5 P$ |( v PrintErrorMessage( errorCode );
5 f6 e; w8 ]3 o}7 d1 H4 Y! z" Q }9 p; L& J# X+ U
/*****************************************************************************: h$ i& s) U. [/ M, w `
** Utilities: c+ o( V; D, f: Z8 P" ^! O
*****************************************************************************/. O8 f7 ]- X4 p0 S0 T% u
8 z4 p* L5 {& R# L& A* V! _/* Unload Handler7 k4 l0 I8 }0 {% t, L
** This function specifies when to unload your application from Unigraphics.7 L1 f, w* l& e. l" K% o3 \
** If your application registers a callback (from a MenuScript item or a& _* V! T) r" b& m
** User Defined Object for example), this function MUST return- Y7 a" R7 v2 P9 ~& `! ?$ }) Q1 E
** "UF_UNLOAD_UG_TERMINATE". */% J2 D1 h3 w* }% R0 C5 y
extern int ufusr_ask_unload( void )
7 X+ ]& [& L. Q8 B{4 S- x- y0 b( D! m- u
return( UF_UNLOAD_IMMEDIATELY );
6 I) t+ o+ i! @/ t& t& l2 C7 Z* Y}. e3 y; d+ A' a8 f
4 {/ ]+ b3 A X7 A. B& [/* PrintErrorMessage
- J# g" `7 y) h6 `* G**
- S5 ]* }- b; J$ s** Prints error messages to standard error and the Unigraphics status: U8 k4 \' Q$ L! p0 i7 {
** line. */
; |% R8 h% z) w$ r2 c# sstatic void PrintErrorMessage( int errorCode )
0 K. N# R2 h) k5 t4 `- V. r" A- a. P# v{
6 T! f1 G' j1 m% B# w" ?3 @. k if ( 0 != errorCode )
+ S0 D; l( H/ J3 r z {* b O, q" t1 u/ P! x' e8 P* S5 q
/* Retrieve the associated error message */
, d* g' D/ f/ Z6 b8 P8 n0 x char message[133];
+ A4 r6 X' J9 U p$ \) Y UF_get_fail_message( errorCode, message );
1 m2 R5 |! @2 ^+ I
! D. k; U _ u$ `. z: ] /* Print out the message */
3 x8 z& H$ W3 V* a U: e UF_UI_set_status( message );) B( S+ R r9 j0 s5 ^8 G5 Q, \( t
) ~2 r$ T9 A; K" W+ c. K fprintf( stderr, "%s\n", message );2 F8 t/ T6 j( y4 X7 p
}
$ I: n: n# I/ Z7 q8 Z1 |}. I) u$ x! x" |
|
|