CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于访问和请求用户输入(AutoLISP)

2023-1-6 12:02| 发布者: admin| 查看: 580| 评论: 0|来自: AutoCAD

摘要: AutoLISP 除了提供一组旨在向用户请求特定类型输入的函数外,还可以从输入设备收集原始输入。

AutoLISP 除了提供一组旨在向用户请求特定类型输入的函数外,还可以从输入设备收集原始输入。

以下是一些可用于从用户获取输入的函数:

  • grread– 从任何 AutoCAD 输入设备读取值。
  • initget– 建立关键字并控制某些类型的输入,以供下一个用户输入函数调用使用。
  • getstring– 暂停字符串的输入并返回该字符串。
  • getpoint– 暂停输入点并返回该点。
  • getint– 暂停输入整数并返回该整数。
  • getdist– 暂停输入距离并返回实数。
  • getangle– 暂停输入角度并返回以弧度表示的角度。

获得直接键盘和鼠标输入

该函数返回原始用户输入,无论是来自键盘还是来自指点设备(鼠标或数字化仪)。如果调用启用跟踪,则该函数将返回可用于拖动等操作的数字化坐标。返回的值 byis 是一个列表,第一个字符定义用户提供的输入类型。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 键,并且未启用大写锁定或未按住 Shift,则会显示以下内容:

输入的字符为:f

ASCII 码:102

使用 GetXXX 函数请求输入

AutoLISP 提供了多个函数,用于在 AutoCAD 命令提示符下从用户那里获取基本输入。这些功能允许您请求获取点,输入文本或数字,甚至使用关键字进行分支命令。每个用户输入函数暂停输入指定类型的数据并返回输入的值。调用其中一个函数的应用程序可以指定在函数暂停输入之前显示的可选提示。该函数不适用于所有函数。getXXXinitgetgetXXX

该函数可用于控制对函数的下一次调用。此函数接受两个参数,位和关键字,两者都是可选的。bits 参数指定一个或多个控制位,用于启用或禁用下一个用户输入函数调用的某些输入值。关键字参数指定下一个函数调用将识别的一个或多个关键字。通过 建立的控制位和关键字仅适用于下一个函数调用,不需要在该调用后丢弃。initgetgetXXXgetXXXinitgetgetXXX

以下代码使用 thefunction 提示用户输入整数: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


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 14:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部