ug/Open API的用户界面接口通过大量的子过程显示提示信息、接收信息及菜单,并等候用户应答。这些子过程是uc1600~uc1613,这些提示信息被显示在UG主界面的暗示行,一般说来,暗示行允许显示80个字符,但还依赖于所使用的字体。下面简单介绍部分函数的功能及其使用方法。
, L! d& c/ k0 `; `4 q% `+ }(1)函数uc1600():用于获取用户的字符串输入。' X. W, J2 _2 S, `
(2)函数uc1607():显示键盘输入界面并获取整数输入,返回值及参数说明如下。
9 E) }( d' ~; z8 t, f 1:回退。
* h; F! r7 n, L5 F& M8 h 2:取消。
8 u$ Z( n3 } S% ^2 B 3:接收(无用户输入时)。) w! O9 y) T, F+ S1 g
 4:接收(有用户输入时)。
" F; X" Z& W* s/ g$ }; `3 e: d" } 8:不允许状态,不能启动对话框。
9 U9 s- v4 r7 t; O(3)函数uc1608():显示键盘输入菜单界面并获取整型或实型输入,返回值及参数说明等同于函数uc1607()。
7 z0 r. B I4 y' P3 d(4)函数uc1609():显示键盘输入对话框并获取实型数,该函数与uc1607()类似。3 f6 M1 ^ C {6 b6 o
(5)函数uc1613():显示键盘输入菜单,并获取整型、实型及字符串数据,该函数与uc1608()类似。" r1 n( J' z- E! T) j* N
下面的例子来说明函数uc1609的使用方法:
$ W3 B, u# x# {( f/ qUF_PART_ask_display_part,用于查询当前显示的part文件;
- F! @. s: M; h函数UF_MODL_create_exp用于创建表达式;- ?$ ~/ O7 v$ x% i& O
函数UF_MODL_edit_exp用于修改表达式。/ K+ j9 T1 H/ Q
创建获取用户输入的对话框。
#include <string.h>& e( \- v+ h$ X" A
#include <math.h>3 @7 B7 X( ?8 [! ?, [4 K8 X! }8 H1 M! c/ G
#include <stdio.h>
% Z' u) v* `1 B: [0 S4 E4 d#include <stdlib.h>9 _+ A) E% M0 G8 ~6 \6 x
#include <uf_defs.h>7 K4 W0 p2 [* S
#include <uf_curve.h>
4 R* p4 a1 V( H0 W" {$ k. z' E#include <uf_modl.h>* w0 j8 U- _& P% R, z6 k
#include <uf_part.h>
char *cp1 = "CUTTER DATA";* A8 i) c: g# z5 Z6 ~; g6 E
char cp2[][16]={"Diameter", "Cut Length", "Flute Blade" };# l2 ]; h' c1 e, m5 C
int ir6, ip3 = 3 ;
/ p- @/ n, G( |8 q8 vdouble tool_data[] = { 3, 3, 1 };
/ [- b! k' {' R# O; d$ Tint ip5[] = { 6,6,6 };1 c& v- ^ @7 L. H( K9 [
char dia[20], cut[20], flute[20], tmp[20];# \" w z" @3 b: x4 A: n, ]3 w, D
int actprt;5 y* K. n1 x' t8 |& c3 D3 H$ e
ir6 = uc1609( cp1, cp2, ip3, tool_data, ip5 );
, W* z2 i! c: `( Q3 kstrcpy(dia,"dia=");; P9 V: ?' u) ]1 S. p
sprintf(tmp,"%f",tool_data[0]);# U% A! w% D2 b! S/ g K
strcat(dia, tmp);
* A3 D7 s2 f- n$ O% {strcpy(cut,"cut=");" @% c$ f! ]3 I7 ]5 H& w5 X
sprintf(tmp,"%f",tool_data[1]);& N t) W9 R v$ a& D
strcat(cut, tmp);( U( [/ h) h5 ^$ v
strcpy(flute,"flute=");
6 j+ p! M3 |- E8 W) o$ ysprintf(tmp,"%f",tool_data[2]);
1 o! p& g+ c- f2 Dstrcat(flute, tmp);
4 e) f6 E, f, z# uactprt = UF_PART_ask_display_part(); /* check if active part */5 `, d1 z& L2 s8 W: n
if( actprt != NULL_TAG)9 E( c8 M$ I) r) b4 y
{ ir6 = UF_MODL_create_exp(dia);% O- o3 ^" q- Y5 J( G5 _6 `" D( a
if( ir6 != 0) ir6=UF_MODL_edit_exp(dia);
) k, S' y1 J1 Y6 Dir6 = UF_MODL_create_exp(cut);+ O" f3 E. E- f
if( ir6 != 0) ir6=UF_MODL_edit_exp(cut);
3 f8 W3 |; q+ e3 J: O( b4 q, l rir6 = UF_MODL_create_exp(flute);- C! E/ ^, k9 N# d' j
if( ir6 != 0) ir6=UF_MODL_edit_exp(flute);}