ug/Open API的用户界面接口通过大量的子过程显示提示信息、接收信息及菜单,并等候用户应答。这些子过程是uc1600~uc1613,这些提示信息被显示在UG主界面的暗示行,一般说来,暗示行允许显示80个字符,但还依赖于所使用的字体。下面简单介绍部分函数的功能及其使用方法。( p/ O) z$ Z- @ o% u4 i" T
(1)函数uc1600():用于获取用户的字符串输入。
8 w* J+ w, D7 e, v) `(2)函数uc1607():显示键盘输入界面并获取整数输入,返回值及参数说明如下。
1 {4 C# X: y W2 l: C 1:回退。; y! u) C, ~+ W
 2:取消。$ p+ v8 K3 ?- N
 3:接收(无用户输入时)。6 H( Q8 R1 k" z, p$ A4 A4 a
 4:接收(有用户输入时)。
$ l7 {- i; z; w8 a 8:不允许状态,不能启动对话框。- M) b5 l6 Y- d" v/ k9 B3 [, k: O
(3)函数uc1608():显示键盘输入菜单界面并获取整型或实型输入,返回值及参数说明等同于函数uc1607()。
5 R% u: a- S1 ~9 A(4)函数uc1609():显示键盘输入对话框并获取实型数,该函数与uc1607()类似。
: ~- d I2 P2 o7 P# u(5)函数uc1613():显示键盘输入菜单,并获取整型、实型及字符串数据,该函数与uc1608()类似。5 l* x4 ^5 `3 V/ y+ y
下面的例子来说明函数uc1609的使用方法:
' D8 W% Z5 I0 ~+ s3 ?4 s; _UF_PART_ask_display_part,用于查询当前显示的part文件;
) n) C7 K8 O% w7 Z1 G/ N: z4 m1 O函数UF_MODL_create_exp用于创建表达式;8 f; G- ~+ k9 v6 u* x* p
函数UF_MODL_edit_exp用于修改表达式。) N% U9 U. T0 W* a
创建获取用户输入的对话框。
#include <string.h>
! s$ ~1 K7 {$ h1 C! N#include <math.h>2 C$ {8 x! ] m
#include <stdio.h>
9 [& x+ ]0 x8 v; a#include <stdlib.h>' g; p0 i2 P4 Y* n/ ~" a2 T8 G
#include <uf_defs.h>/ a W' Q1 f+ k0 N: ` p, @
#include <uf_curve.h>
, b" c+ R! U& V3 [& b#include <uf_modl.h>
- _1 k; W- Z4 \+ o x* i }+ `0 r#include <uf_part.h>
char *cp1 = "CUTTER DATA";. Z! G n7 e4 H: A- a& }
char cp2[][16]={"Diameter", "Cut Length", "Flute Blade" };
/ u/ \: n# \5 Wint ir6, ip3 = 3 ;0 g4 c& @4 I3 }, E) |( D* d
double tool_data[] = { 3, 3, 1 };2 [5 Y. h- @3 F- ]! N9 @! W
int ip5[] = { 6,6,6 };
) X' k' U$ A+ c# G& `char dia[20], cut[20], flute[20], tmp[20];
9 \2 v3 D1 [9 H3 }' g8 oint actprt;# x9 j# c2 F d
ir6 = uc1609( cp1, cp2, ip3, tool_data, ip5 );
. b" H# k( A4 T/ H) V5 dstrcpy(dia,"dia=");
$ c7 u1 G( U! |. k: V+ [sprintf(tmp,"%f",tool_data[0]);
" w5 G' n! T8 e: zstrcat(dia, tmp);
- c$ C9 ^% ^, }+ O5 U4 C9 V, Lstrcpy(cut,"cut=");
+ b7 H$ s. g. v7 ysprintf(tmp,"%f",tool_data[1]);3 @" V$ F8 r* e* Q& a
strcat(cut, tmp);
. L0 Q( o7 f mstrcpy(flute,"flute=");
! b5 Q, p+ {$ \+ s% L3 q& _3 lsprintf(tmp,"%f",tool_data[2]);
: b0 D. A z. S# K+ u2 `" a- Q1 gstrcat(flute, tmp);
5 ^! S. E5 o t8 i8 zactprt = UF_PART_ask_display_part(); /* check if active part */
+ R4 H* n! x+ w( N0 B( Iif( actprt != NULL_TAG)
* L, d- H6 S. i{ ir6 = UF_MODL_create_exp(dia);
( m, [9 h W6 c# @if( ir6 != 0) ir6=UF_MODL_edit_exp(dia);
4 d* I( f- @9 _$ `6 L2 P; cir6 = UF_MODL_create_exp(cut);
. t& Z1 N0 U4 Sif( ir6 != 0) ir6=UF_MODL_edit_exp(cut);
4 b: j7 {- X0 ?1 G+ k' h0 @ir6 = UF_MODL_create_exp(flute);" Q" y) g( z+ N! ?( v( d
if( ir6 != 0) ir6=UF_MODL_edit_exp(flute);}