明经通道 AutoLISP 函数  
grread
 

从 AutoCAD 的任何一种输入设备中读取数值

(grread [track] [allkeys [curtype]]) 

只有特殊用途的 AutoLISP 应用程序才需调用本函数,AutoLISP 的大多数输入应使用各种 getxxx 函数来完成。

参数

track

如果提供该参数且其值不为 nil,则输入设备移动时,本函数能从定点设备中返回坐标。

allkeys

整数型,决定 grread 要执行的功能。allkeys 的几个位值相加可以获得组合功能。可以指定如下值:

1 (位0) 返回“拖动模式”坐标。如果设置了该位,而且用户只是移动定点设备而没有按下按钮或键盘,grread 函数就返回一个表,其第一个成员是类型代码 5,第二个成员是当前定点设备(鼠标或数字化仪)的位置坐标 (X,Y),这就是 AutoCAD 实现拖动的方法。

2 (位1) 返回所有的键值,包括功能键和光标键代码,用户按下光标键时并不移动光标。

4 (位2) 使用 curtype 参数传来的值控制光标的显示。

8 (位3) 在用户按下 ESC 键时不显示相应错误信息。

curtype

整数型,表明显示光标的类型。只有当 allkeys 参数的第二位为 1 时 curtype 参数才有效。该参数只控制当前 grread 函数调用时显示的光标类型。可以指定下列 curtype 值:

0 显示普通十字光标。

1 不显示光标(无十字光标)。

2 显示对象选择光标。

返回值

grread 函数返回一个表,其中第一个元素说明输入类型的代码,第二个元素既可能是整数,又可能是点,这取决于输入的类型。其返回值列表如下:

grread 函数的返回值

第一个元素

第二个元素

输入类型 

值 

说明

2

键盘输入

各种 

字符代码

3

选定点

三维点 

点坐标

4

屏幕/下拉菜单项(通过定点设备选取)

0 至 999
1001 至 1999
2001 至 2999
3001 至 3999
如此直到
16001 至 16999 

屏幕菜单项号
POP1 菜单项号
POP2 菜单项号
POP3 菜单项号
....如此直到
POP16 菜单项号

5

定点设备(仅在指定跟踪设备时返回)

三维点 

拖动模式坐标

6

BUTTONS 菜单项

0 至 999

1000 至 1999

2000 至 2999

3000 至 3999

BUTTONS1 菜单按钮号

BUTTONS2 菜单按钮号

BUTTONS3 菜单按钮号

BUTTONS4 菜单按钮号

7

TABLET1 菜单项

0 至 32767 

数字化仪菜单的单元号

8

TABLET2 菜单项

0 至 32767 

数字化仪菜单的单元号

9

TABLET3 菜单项

0 至 32767 

数字化仪菜单的单元号

10

TABLET4 菜单项

0 至 32767 

数字化仪菜单的单元号

11

AUX 菜单项

0 至 999

1000 至 1999

2000 至 2999

3000 至 3999

AUX1 菜单按钮号

AUX2 菜单按钮号

AUX3 菜单按钮号

AUX4 菜单按钮号

12

定点设备按钮(在类型 6或类型 11 后返回)

三维点

点坐标

使用 grread 处理用户输入

当 grread 函数调用处于激活状态时,按下 ESC 键便可通过键盘中断 AutoLISP 程序的运行(除非指定的 allkeys 参数不允许这样做)。任何其他的输入都直接传给 grread 函数,这使得应用程序控制所有的输入设备。

如果用户在屏幕菜单项或下拉式菜单项上按下定点设备按钮,grread 函数返回一个类型为 6 或 11 的代码,但在随后的调用中,它并不返回类型代码 12。因为只有在屏幕的绘图区域中按下定点设备按钮,类型代码 12 才会跟随在类型代码 6 或 11 之后返回。

在试图用定点设备按钮或辅助按钮执行另一操作之前,将类型代码 12 的数据从缓冲区中清除,是非常重要的。为了做到这一点,可以执行如下嵌套的 grread 函数调用:

(setq code_12 (grread (setq code (grread))))

上述代码就象从输入流设备上获取输入一样,获取类型代码 12 的值表。

明经通道 版权所有 未经许可 不得传播

 评论