AutoLISP 可以从输入设备收集原始输入,此外还提供一组旨在向用户请求特定类型输入的函数。 以下是一些可用于从用户获取输入的函数:
获取直接键盘和鼠标输入该函数返回原始用户输入,无论是来自键盘还是来自指针设备(鼠标或数字化器)。如果调用启用跟踪,则该函数将返回一个可用于拖动等操作的数字化坐标。返回的值是一个列表,第一个字符定义用户提供的输入类型。grreadgrreadgrread 注意:不能保证应用程序调用将向上兼容。由于它取决于当前的硬件配置,因此调用的应用程序不太可能在所有配置上以相同的方式工作。grreadgrread
以下示例代码使用并检查提供的输入是否来自键盘。grread (defun c:GetCharacter ( / code) (prompt "\nEnter a single character: ") (setq code (grread)) (if (= 2 (car code)) (progn (prompt (strcat "\nCharacter entered was: " (chr (cadr code)))) (prompt (strcat "\nASCII code: " (itoa (cadr code)))) ) (prompt "\nInput was not from the keyboard.") ) (princ) ) 加载并运行示例代码会导致显示以下提示: 输入单个字符: 按键盘上的某个键会在 AutoCAD 命令提示符下显示该键的字符和 ASCII 代码。例如,如果在提示输入单个字符时按 F 键,并且未启用 Caps Lock 或未按住 Shift,则会显示以下内容: 输入的字符为:f ASCII 码:102 使用 GetXXX 函数请求输入AutoLISP 提供了多个函数,用于在 AutoCAD 命令提示符下从用户获取基本输入。这些函数允许您请求获取积分、输入文本或数字,甚至使用关键字发出分支命令。每个用户输入函数在输入指定类型的数据时都会暂停,并返回输入的值。调用其中一个函数的应用程序可以指定在函数暂停输入之前显示的可选提示。该函数不适用于所有函数。getXXXinitgetgetXXX 该函数可用于控制对函数的下一次调用。此函数接受两个参数,bits 和 keywords,这两个参数都是可选的。bits 参数指定一个或多个控制位,这些控制位启用或禁用下一个用户输入函数调用的某些输入值。keywords 参数指定下一个函数调用将识别的一个或多个关键字。建立的控制位和关键字仅适用于下一个函数调用,不需要在该调用之后丢弃。initgetgetXXXgetXXXinitgetgetXXX 以下代码使用该函数提示用户输入整数:getint (defun c:AskForInteger ( / ) (setq int (getint "\nEnter an integer: ")) (if int (prompt (strcat "\nUser entered: " (itoa int))) (prompt "\nUser did not provide an integer.") ) (princ) ) 加载并运行示例代码会导致显示以下提示: 输入一个整数: 提供有效的整数将返回为函数输入的值,并且该值在 AutoCAD 命令提示符下显示为提示“用户输入:”的一部分,但如果提供了无效的整数,则会显示消息“需要整数值”,并要求用户再次提供整数。如果在键入值之前按 Enter 键,则会显示消息“用户未提供整数”。getint 验证输入您应该保护代码免受无意的用户错误的影响。AutoLISP 用户输入函数可以为您完成大部分工作。但是,请务必检查是否符合函数未检查的其他程序要求。如果您忽略了检查输入的有效性,程序的完整性可能会受到严重影响。getXXXgetXXX 相关概念父主题: |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2024-12-15 14:33
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.