执行一条 AutoCAD 命令 (command [arguments] ...)
参数
arguments
AutoCAD 命令、选项或表达式。
command 函数的参数可以是字符串、实数、整数或点,但必须与要执行的命令所需的参数一致。空字符串 ("") 表示从键盘键入 ENTER 键。不带参数调用 command 相当于键入 ESC 键,这样可取消大多数 AutoCAD 命令。
command 函数将每一个参数顺序传给 AutoCAD 以响应提示。它以字符串形式提交命令名和选项;以两个实数组成的表的形式提交二维点;以三个实数组成的表的形式提交三维点。只有在命令提示下 AutoCAD 才能识别命令名。
要注意的是,如果从 Visual LISP 中使用 command 函数,控制并不会转移到 AutoCAD 中。如果命令要求用户输入,则可以在控制台窗口中看到返回结果 (nil),但 AutoCAD 将等待输入,必须手动激活 AutoCAD 并响应提示。在这样做以前,任何后续命令都会失败。
返回值 nil
示例
下例先将变量 pt1 和 pt2 分别设为点 (1,1) 和点 (1,5),然后调用 command 函数执行 LINE 命令并将这两个点的值传给 AutoCAD。
命令: (setq pt1 '(1 1) pt2 '(1 5))
(1 5)
命令: (command "line" pt1 pt2 "")
line From point:
To point:
To point:
命令: nil
限制和注意事项
AutoCAD 的 SKETCH 命令直接读取键盘和数字化仪,因此不能在 AutoLISP 的 command 函数中使用这两个命令。如果在函数中使用 SCRIPT 命令,它必须是出现在该 AutoLISP 程序的最后。
同样,如果在 acad.lsp 或 MNL 文件中使用 command 函数,则只能在 defun 表达式中调用。应使用 S::STARTUP 函数定义在绘图任务开始时就要执行的那些初始化命令。
对于那些需要选取一个对象的 AutoCAD 命令(如 BREAK 和 TRIM 命令),可以提供一个用 entsel 函数获得的表来取代交互操作时为选取一个对象而需要的点,这方面的例子可参见 《Visual LISP 开发人员手册》中的 将拾取点传给 AutoCAD 命令 。
如果系统变量 CMDECHO(可通过 setvar 和 getvar 函数存取)被设为 0,通过 command 函数执行的命令将不会在命令行中显示。
参阅
vl-cmdf 函数和《Visual LISP 开发人员手册》中的 命令提交。 |