执行 AutoCAD 命令
参数
(vl-cmdf [arguments] ...)
vl-cmdf 函数和 command 函数类似,但在求值传递的参数方面有所不同。vl-cmdf 函数在执行 AutoCAD 命令之前检查所有的描述参数,如果在这一过程中检测到错误,将不再执行 AutoCAD 命令。然而,command 函数将每个参数顺序传递给 AutoCAD,所以在发现错误之时命令可能已经开始执行了。
如果对命令的调用中包含对其他函数的调用,则 vl-cmdf 在执行命令之前先进行函数调用。而 command 则在开始执行命令后执行定函数调用。
有些命令在通过 vl-cmdf 调用时表现正常,而在通过 command 调用时则会失败。vl-cmdf 函数主要突破了在 command 中不能使用 getxxx 的限制。
参数
arguments
AutoCAD 命令及选项。
根据执行命令提示的要求,arguments 参数可以为字符串、实数、整数或点。空字符串 ("") 和在键盘上按 ENTER 建的效果一样。不带参数调用 vl-cmdf 和按 ESC 的效果一样,可以取消大多数 AutoCAD 命令。
返回值
T
请注意,如果从 Visual LISP 中执行 vl-cmdf,焦点不会转换到 AutoCAD 窗口中。如果命令需要用户输入,则返回值 (T) 将出现在控制台窗口中,但 AutoCAD 继续等待输入。这时,必须手动激活 AutoCAD 窗口来响应提示。这之前,不会继续执行任何后续命令。
示例
如果在 AutoCAD 命令提示行(而不是 VLISP 控制台提示)输入下列代码,则更容易看到 command 和 vl-cmdf 之间的区别:
命令: (command "line" (getpoint "点位置?") '(0 0) "")
line 指定第一点: 点位置?
指定下一点或 [放弃(U)]:
命令: nil
使用 command 时,先执行 LINE 命令,然后再调用 getpoint 函数。
命令: (VL-CMDF "line" (getpoint "点位置?") '(0 0) "")
点位置?line 指定第一点:
指定下一点或 [放弃(U)]:
命令: T
而使用 vl-cmdf 时,先调用 getpoint 函数(注意这时 getpoint 给出的“点位置?”提示),然后再执行 LINE 命令。
下面的样例执行同样的命令,但是向 LINE 命令传递了一个无效点表作为参数。请注意结果是如何发生变化的:
命令: (command "line" (getpoint "点位置?") '(0) "")
line 指定第一点: 点位置?
指定下一点或 [放弃(U)]:
命令: ERASE nil
选择对象:指定对角点:*取消*
找到 0 个
command 函数将每个参数依次传递给 AutoCAD,而并不计算参数,所以不能检测到无效的点表。
命令: (VL-CMDF "line" (getpoint "点位置?") '(0) "")
点位置?应用程序错误: 发送到 ads_cmd 的类型无效。
nil
因为 vl-cmdf 在传递命令前先计算每个参数,所以检测到了无效点表,不再继续执行命令。
参阅
command 函数。
明经通道 版权所有 未经许可 不得传播 | 评论 |