可以在命令功能中使用暂停符号来中断 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 表达式。 下面的示例代码使用 thesymbol 允许用户指定块的插入点。在测试此代码之前,图形中必须存在图层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的插入点(插入的X和Y比例因子为 1),然后再次暂停旋转角度。然后将当前图层重置为前一个图层。 如果该函数指定了 awith AutoCAD SELECT 命令,并且 AutoCAD PICKFIRST 系统变量集处于活动状态,则 SELECT 命令将在执行命令之前获取选定的对象,并且不会暂停供用户选择对象。commandPAUSE 注意:在某些情况下,AutoCAD DIM 命令的“半径”和“直径”子命令会发出其他提示。这可能会导致在版本 11 之前编写的使用这些子命令的 AutoLISP 程序失败。
使用透明命令如果在函数挂起时发出透明命令,则该函数将保持挂起状态。因此,用户可以在命令暂停时进行缩放和平移。暂停将一直有效,直到 AutoCAD 获得有效输入并且透明命令结束。commandcommand 下面显示了当命令函数允许用户为圆提供半径时透明地使用 ZOOM 命令的结果: 命令:(命令“._circle”“5,5”暂停“._line”“5,5”“7,5”“”) 圈 指定圆的中心点或 [3P/2P/Ttr(棕褐色半径)]:5,5 指定圆的半径或 [直径]:'缩放 >>指定窗口角,输入比例因子(nX 或 nXP),或 [全部/居中/动态/范围/上一个/缩放/窗口/对象] <实时>: >>按 ESC 或 Enter 退出,或右键单击以显示快捷菜单。 恢复 CIRCLE 命令。 指定圆半径或 [直径]: 命令:行 指定第一个点:5,5 指定下一个点或 [撤消]:7,5 指定下一个点或 [撤消]: 命令:无 接受菜单输入当函数使用菜单输入时,菜单输入不会挂起。如果当函数暂停输入时菜单项处于活动状态,则菜单可以满足该输入请求。如果希望菜单项也挂起,则必须在菜单项中提供反斜杠。提供有效输入后,函数和菜单项都将恢复。PAUSEcommandcommandcommand |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )
GMT+8, 2024-5-7 00:56
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.