|
include <stdio.h>3 i& k, E( b0 B8 x {% `1 L
#include <uf.h>
' t- D- }3 S4 b$ G#include <uf_ui.h>4 F8 Q, C1 j9 J% O9 ]/ ~
#include <uf_attr.h>6 A! K; E# R0 M. L+ n8 a5 n# n
#include <uf_modl_utilities.h>( Z' L* e4 Y+ b4 |3 K. R
#include <uf_modl.h>
* `2 v( q' l* S4 X7 D5 Z#include <uf_attr.h>! A5 g5 b8 B2 o. z* q9 [
#include "A2.h"& Q9 ~& H( T$ k
$ _+ K( Z; Z2 s+ o# T% L
6 B, F! H. p6 n7 `/*****************************************************************************5 l& \9 m0 Q/ ?; e/ c
** Activation Methods/ `: z4 p3 |- Z; x" D: j9 d
*****************************************************************************/9 T0 T6 O) B- L4 T0 `4 p
4 L- G5 O. M0 `; ~4 ^
/* Explicit Activation: h0 \$ X+ z1 p M" F
** This entry point is used to activate the application explicitly, as in
/ G; ]' G3 B# F* X6 i3 Y2 X** "File->Execute ug/Open->User Function..." */9 V, O& h4 \; B( J
void do_open_api()! J- e8 [$ t' @3 f7 J
{$ v' B; n) Y- s
tag_t object=NULL_TAG,feat_tag;1 X5 W! y `4 [, G$ E, k2 W: @2 ~
int count=0,found=0,i;. X4 ^: _/ ^% Y$ Y. {$ A; [
uf_list_p_t feature_tag_list;! m* M- h1 ^ M% S; d
char *feat_type,mess[100],sval[100]; G# p/ p8 N7 M
UF_ATTR_value_t attr_value;5 s h# Z* u! u) B* G4 k, f
3 }' Q( @' G" H1 x+ |3 B) n; P1 M+ V; ^ UF_MODL_ask_object(70,0,&object);
! `. \3 e b) W- F! i' b if(object!=NULL_TAG)
8 ~5 t1 i* f0 ]# z G8 G. ] {
$ c _2 a' W, J0 k ^ UF_MODL_create_list(&feature_tag_list);- o: J6 E: j# G# F
UF_MODL_ask_body_feats(object,&feature_tag_list);- e( F1 e" h: V4 |* V8 I
UF_MODL_ask_list_count(feature_tag_list,&count);8 d3 e1 v( {& p) |' Y* t
for(i=0;i<count;i++)' t& y8 L2 a+ R5 A- m
{! ]* X" h. r$ [) ?( q. v3 J( g
UF_MODL_ask_list_item(feature_tag_list,i,&feat_tag);& c! V+ _) J3 ?9 G/ K
UF_MODL_ask_feat_type(feat_tag,&feat_type);
1 `4 S* o2 g5 n9 l- n0 ^' Z if(strcmp(feat_type,"SIMPLE HOLE")==0)
1 k; x ?' \- y' S. s ^/ ]; X) @ {# e0 g8 k7 y- `( Q
found=1;break;
. |; |* K) Z. z# a }
$ N8 q# m4 x" ~ g* L/ w1 m }3 o7 }7 L5 }: ^. Z% P
}# W* @# C) p1 w4 J. Y
if(found)4 Y. q( W4 r. t: t' U; C' C
{
) g2 W+ o. l9 H' r6 L( W. n* ~ attr_value.value.string=sval;; w8 q- n- r. f/ Y
UF_ATTR_read_value(feat_tag,"孔标题",UF_ATTR_string,&attr_value);: k8 P$ D# a( O9 P) a
sprintf(mess,"孔标题的属性值为:\n%s",attr_value.value);/ s+ X; X: Y$ f; c3 i; J
uc1601(mess,1);
& Q' U; U) |# l }
' a L2 R6 S7 S/ a7 r) _) E else
& G5 ?; _6 m& @/ p$ M7 D uc1601("没有找到实体或类型为 SIMPLE HOLE 的孔",1);
* N& J# C! E2 }2 `4 [- E$ A; G}! B1 y; u# z) W5 a; r4 H) x
7 M0 r9 B7 P; C0 Z" m+ R+ W6 V
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )% B4 f! m3 b+ `% E0 ~( W) Y
{
$ x. E5 s( d N1 Z V2 } /* Initialize the API environment */* O1 h4 Y7 Z. }8 \$ }4 G% b# i
int errorCode = UF_initialize();6 P. I5 b4 t. O. M- n3 w p W5 W
) c: t+ j* X% I8 L. _) S9 L, u if ( 0 == errorCode )
# R! w3 g5 B W {; U6 H: e. V% g B
/* TODO: Add your application code here */
; k& l. P$ A) ~( X do_open_api();. |0 a @& ]% x2 n* D
/* Terminate the API environment */
! t/ h3 S; _3 O+ V( W7 p; f3 i; c errorCode = UF_terminate();
: }1 `' d8 l7 J' k% j( l }6 ~- r9 q5 J) S/ r0 {
) g M0 M" k7 B+ ?& |
/* Print out any error messages */
2 I5 C0 [7 D' N) _& z o7 W6 a! _# h PrintErrorMessage( errorCode );
2 M0 f4 q: C9 ?* m}
, m/ h8 ?9 A. Q1 L* W' X- q/*****************************************************************************
3 r. \1 o1 b3 H" Y, C! _** Utilities
% E- m3 s# c6 a9 N8 t9 M. D*****************************************************************************/
% M3 n3 y+ i# _" ^
9 Y( }3 B# D( |* v, V/* Unload Handler
5 i0 k7 ~- d, K4 S** This function specifies when to unload your application from Unigraphics.
! U% X* e. ]4 |/ K8 @* V' `0 X** If your application registers a callback (from a MenuScript item or a$ N; }" |2 J- ]9 s$ t9 {
** User Defined Object for example), this function MUST return% F6 ?1 x% y! |3 N) }% }- F8 T
** "UF_UNLOAD_UG_TERMINATE". */8 Z0 l+ c+ S: |3 y" `- X- j
extern int ufusr_ask_unload( void )
: ~3 k0 A1 X9 q0 k2 u0 ?& N{. w* x- A9 Z4 l: f, _9 m
return( UF_UNLOAD_IMMEDIATELY );
' V0 n: x8 U3 J}7 X2 _2 g( D" _8 B' O) y
+ d0 D1 B# `* O h; ~8 ]
/* PrintErrorMessage- V: J" v; K" d6 }) V) \
**
5 k' s$ R/ O+ B+ \- ~** Prints error messages to standard error and the Unigraphics status
3 r9 T3 V& U! P0 I** line. */: }/ u& J' N1 S# O1 H# E3 Z
static void PrintErrorMessage( int errorCode ). B j9 U8 ^+ g2 P4 |! V F. ]
{9 }% t/ G {9 I1 N
if ( 0 != errorCode )' ?6 L9 q$ M% B
{' ^2 [( E4 n3 |! _) V4 D; l! [/ y
/* Retrieve the associated error message */
: F7 K( |2 q& i4 J! w char message[133];
/ S* A# v/ D' w( W9 S, G" q( J UF_get_fail_message( errorCode, message );2 H ?. ~% P8 J- K3 D: z" }
% J, w- u* r [* o% F /* Print out the message */
* i) Z+ E5 P4 [% { UF_UI_set_status( message );
: n1 p5 j- B* D: j/ u- B0 e6 t, T y4 J2 z: I. u
fprintf( stderr, "%s\n", message );3 K0 E ~# e( e7 U" O5 Q
}0 Z0 w) o4 [7 W# @
}( E" h# O; y, w# y" U
|
|