CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

关于在 AutoCAD 命令期间暂停用户输入(AutoLISP)

2023-1-8 12:22| 发布者: admin| 查看: 718| 评论: 0|来自: AutoCAD

摘要: 可以在命令功能中使用暂停符号来中断 AutoCAD 命令的执行并让用户提供输入。

暂停符号可用于命令功能,以中断AutoCAD命令的执行,并让用户提供输入。

如果 AutoCAD 命令正在进行中,并且遇到预定义符号作为 的参数,则该命令将暂停以允许用户直接输入(通常是点选择或拖动)。这类似于为菜单提供的反斜杠暂停机制。PAUSEcommand

符号定义为由单个反斜杠组成的字符串。在字符串中使用反斜杠 ( \ ) 时,必须在其前面加上另一个反斜杠 ( \\ )。PAUSE

注意:您可以使用两个反斜杠 ( \\ ) 来代替符号。但是,建议您始终使用符号,而不是显式使用两个反斜杠。此外,如果从菜单项调用命令函数,则反斜杠将暂停对菜单项的读取,这会导致对 AutoLISP 表达式进行部分计算。PAUSEPAUSE

例如,以下代码开始 CIRCLE 命令,将中心点设置为 (5,5),然后暂停以允许用户拖动圆的半径。当用户指定所需的点(或所需半径中的类型)时,函数将恢复,并绘制一条从 (5,5) 到 (7,5) 的线,如下所示:

(command "._circle" "5,5" pause "._line" "5,5" "7,5" "")

如果在命令需要输入文本字符串或属性值时遇到暂停,则仅当 AutoCAD TEXTEVAL 系统变量为非零时,AutoCAD 才会暂停输入。否则,AutoCAD 不会暂停用户输入,而是使用符号的值(单个反斜杠)。PAUSE

当命令函数暂停用户输入时,该函数被视为活动状态,因此用户无法输入另一个要计算的 AutoLISP 表达式。

以下示例代码使用符号允许用户指定块的插入点。在测试此代码之前,图NEW_LAY和块MY_BLOCK必须存在于图形中。PAUSE

(setq blk "MY_BLOCK")
(setq old_lay (getvar "clayer"))
(command "._-layer" "set" "NEW_LAY" "")
(command "._-insert" blk PAUSE "" "" PAUSE)
(command "._-layer" "set" old_lay "")

前面的代码片段将当前图层设置为 NEW_LAY,暂停块MY_BLOCK的插入点(插入时 XY 比例因子为 1),然后再次暂停旋转角度。然后,当前图层将重置为上一层。

如果该函数指定了 AutoCAD SELECT 命令,并且 AutoCAD PICKFIRST 系统变量集处于活动状态,则 SELECT 命令将在执行该命令之前获取选定的对象,并且不会暂停以供用户选择对象。commandPAUSE

注意:在某些情况下,AutoCAD DIM 命令的“半径”和“直径”子命令会发出其他提示。这可能会导致在发行版 11 之前编写的使用这些子命令的 AutoLISP 程序失败。

使用透明命令

如果在函数挂起时发出透明命令,则该函数将保持挂起状态。因此,用户可以在命令暂停时进行“缩放”和“PAN”。暂停将一直有效,直到 AutoCAD 获得有效输入,并且透明命令结束。commandcommand

下面显示了当命令功能允许用户为圆提供半径时透明地使用 ZOOM 命令的结果:

命令:(命令“._circle”“5,5”暂停“._line”“5,5”“7,5”)

指定圆的中心点或 [3P/2P/Ttr(棕褐色半径)]:5,5

指定圆的半径或 [直径]:'zoom

>>指定窗口的一角,输入比例因子(nX 或 nXP)或 [All/Center/Dynamic/Extents/Previous/Scale/Window/Object]<实时>:

>>按 ESC 或 ENTER 退出,或右键单击以显示快捷菜单。

恢复 CIRCLE 命令。

指定圆的半径或[直径]:

命令:line

指定第一点:5,5

指定下一个点或[撤消]:7,5

指定下一个点或[撤消]:

命令:nil

接受菜单输入

当函数使用时,菜单输入不会暂停。如果当功能暂停输入时菜单项处于活动状态,则菜单可以满足该输入请求。如果还希望暂停菜单项,则必须在菜单项中提供反斜杠。当提供有效输入时,功能和菜单项都将恢复。PAUSEcommandcommandcommand


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-12-15 14:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部