|
include <stdio.h>
* M& {, s; P: c; s#include <uf.h>) r n; {' ]. n. q ~8 g5 ]
#include <uf_ui.h>
. x9 _, P% @) B$ N2 }) M5 U. A! z3 C#include <uf_attr.h>' i; p, Z' {' e+ r$ }4 S. |0 D
#include <uf_modl_utilities.h>
1 \: Q- k& t/ N* q#include <uf_modl.h>% V& [! q& S& k3 |* l7 L
#include <uf_attr.h>
0 \3 F0 O0 [- a$ v1 h0 [, W# h) l#include "A2.h"8 L" P! i( \0 H* y. P
3 [5 k/ V, R5 y2 n# u
0 f, L1 g2 r. Z" c/*****************************************************************************
# ?) s E- y2 m0 m" E& Q** Activation Methods. x; F# [3 z R7 s3 f+ b% A
*****************************************************************************/5 K' E( U! X- s5 V, X+ E
9 v8 g' V4 {! N; a* \) h y
/* Explicit Activation' L6 S3 e2 M( N* [& k8 B
** This entry point is used to activate the application explicitly, as in
% U) N. j* q; X1 m' i6 F0 K" d** "File->Execute ug/Open->User Function..." */
; U( ~. b) ~6 A8 Bvoid do_open_api()
& h3 x3 @2 P, _8 N9 {{; c; B" j/ s$ Y. s3 L7 D* X" j: Z
tag_t object=NULL_TAG,feat_tag;$ A" ^# B- `+ I) o! X; J
int count=0,found=0,i;
! u. Z. g/ J. d. D3 z uf_list_p_t feature_tag_list;
; f1 P3 C5 G: A) h# h char *feat_type,mess[100],sval[100];! I3 n( {4 u6 @+ B( v6 Z9 M
UF_ATTR_value_t attr_value;/ j, }6 X: m1 [( C2 @: d
" H1 s6 k9 q/ O* u9 e UF_MODL_ask_object(70,0,&object);
0 M) Q: X' E( O9 {& ^8 u if(object!=NULL_TAG)8 ~' j2 o7 ? z5 B" j# k' L! O
{2 w/ D7 _4 W+ W0 F* i" K& d
UF_MODL_create_list(&feature_tag_list);
! X, V7 O9 z. z9 B7 L UF_MODL_ask_body_feats(object,&feature_tag_list);$ L$ Q, L" Z, ?# R# X* h
UF_MODL_ask_list_count(feature_tag_list,&count);
7 }9 `' d# z w5 c5 L for(i=0;i<count;i++)
% c! Q* Y+ T9 q* g) z3 c {
0 F0 ]' w1 }6 o1 }$ n: { UF_MODL_ask_list_item(feature_tag_list,i,&feat_tag);+ v& g7 w$ x$ y- y
UF_MODL_ask_feat_type(feat_tag,&feat_type);3 X. z$ u: Q. Z2 v
if(strcmp(feat_type,"SIMPLE HOLE")==0)1 w) t' e/ w# C' W
{
& z" Q# C) r6 c" q( ]; S- _ found=1;break;
8 Y/ t) i0 w0 L9 o/ i }" K5 }/ w. V5 S( c; N0 D: A
}# E& g t) @: |: d# s# v
}$ x4 K, ~# }8 ~/ Y2 Z
if(found)
+ l1 a. f* h0 H" h5 T {$ s6 o6 n J8 u0 S6 l
attr_value.value.string=sval;- e1 p# Z1 h) |- j
UF_ATTR_read_value(feat_tag,"孔标题",UF_ATTR_string,&attr_value);
' l: y- e- l7 l' V4 A sprintf(mess,"孔标题的属性值为:\n%s",attr_value.value);# d' k: \- N% {0 k5 Z2 L
uc1601(mess,1);- d. y; G* x. j% X. R5 {
}
0 b, V1 I) \$ \# n B else
) `9 R8 Q0 g5 V+ C. Q& H uc1601("没有找到实体或类型为 SIMPLE HOLE 的孔",1);
; _6 X6 Q# u0 A( c% [% W& H. r}
% M: i; v* t$ ~2 c9 Z0 @
5 c4 j- a6 Z0 {6 z1 X/ M: E, f5 ~extern DllExport void ufusr( char *parm, int *returnCode, int rlen )$ w2 q5 |( t1 `9 |; p! R4 X T% v+ K/ Z
{
$ e7 n# k' q9 x% e3 T' w /* Initialize the API environment */" {( w% t' d1 e% a
int errorCode = UF_initialize();. e; H: W" O# M9 r
* u: [$ E3 }$ k& o
if ( 0 == errorCode )9 m4 K* Q4 Q: Q
{
& u7 A8 d; u; g% o/ } /* TODO: Add your application code here */' d! }0 B w3 b+ H
do_open_api();
: w9 B1 p5 ~7 `1 X7 F /* Terminate the API environment */% ^( H% J7 _: R% g& _
errorCode = UF_terminate(); R, L+ R' G' P( Q
}+ S- z3 X* @, y8 u+ I
4 ^6 N1 S K9 f' @( T: Y2 ?7 J /* Print out any error messages */' W- m& X9 a k; |
PrintErrorMessage( errorCode );. A: `+ x, z; S7 z( c1 u) `- N
} m) X$ ^7 U* d' [0 L4 U' y- G
/*****************************************************************************. v: Y# O" k5 Z0 l4 Q5 l$ V+ t
** Utilities
7 Q2 W2 m2 Q- \- T v*****************************************************************************/
4 N7 u z# ] O% H6 M
2 q* O! W* u `5 _# n/ Y+ k6 j D3 j/* Unload Handler% Q: K) C, R5 u6 N: c. e
** This function specifies when to unload your application from Unigraphics.7 f( K1 Z$ v3 ~; ^0 J
** If your application registers a callback (from a MenuScript item or a
7 {$ O" d- V+ F** User Defined Object for example), this function MUST return8 X8 i! f1 a! w4 e6 d; ^
** "UF_UNLOAD_UG_TERMINATE". */0 D0 `$ ~6 U+ \& H9 q, ~0 s6 s. q
extern int ufusr_ask_unload( void ), {( s5 W* \6 J) G. M5 m0 m- }
{
# b6 j$ P, D$ j9 b" i, W return( UF_UNLOAD_IMMEDIATELY );9 N1 ]. C0 M" e9 H. j
}
, O* o5 g% M' E9 F9 \; q5 C
( ]+ G, M0 x" W: `/ R/* PrintErrorMessage0 O1 ~+ @# {# y) @
**" @: T; v$ @6 c! @. A$ S$ H$ L% s' g
** Prints error messages to standard error and the Unigraphics status
) V E9 H! |4 g; H' {** line. */" W3 E8 \3 d) Y5 |7 Y* o, F6 Y; W7 c
static void PrintErrorMessage( int errorCode )& _5 o3 ^+ r V- e+ R6 ?
{1 [& R7 u; H& b5 U# `; b: P
if ( 0 != errorCode )
8 @& C3 ~3 _' T1 r {) D, Q) d( b! `% H, W" F+ i
/* Retrieve the associated error message */
- D) x; b$ ^- @% g1 o char message[133];
5 Q' s7 O/ v1 w, p* A7 _ UF_get_fail_message( errorCode, message );
1 h% F( ^5 w+ O6 g* S% p& t7 x- r- l( n, R5 g5 u! w
/* Print out the message */
) W3 t ^1 t4 i& m; b. l UF_UI_set_status( message );: B8 c) {# U& B& |+ r* H
6 @- M& j- @( T9 z9 A7 f3 j fprintf( stderr, "%s\n", message );+ w/ c, b ]% X" U) m; u' v' k% G
}
& X( u- F' @5 h4 s6 J}
+ B2 j) P4 h9 c! Q# r |
|