从 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 |
屏幕菜单项号 |
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 的值表。
明经通道 版权所有 未经许可 不得传播 | 评论 |