明经通道 Visual LISP 函数  
vlax-add-cmd
 

将命令添加到 AutoCAD 内置命令集中

(vlax-add-cmd global-name func-sym [local-name cmd-flags])

使用 vlax-add-cmd 可以将函数定义为 AutoCAD 命令,而无需在函数名中使用 c: 前缀。用它也可以定义透明 AutoLISP 命令,而对于 c: 函数,这是不可能的。

警告! 不能使用 command 函数透明调用那些由 vlax-add-cmd 函数定义的命令。这样做会造成 AutoCAD 意外关闭。

vlax-add-cmd 函数使某个 明经通道 Visual LISP 函数在当前 AutoCAD 任务中作为 ObjectARX 类型的命令,在 AutoCAD 命令行提示中使用。vlax-add-cmd 函数提供了对 ObjectARX acedRegCmds 宏的访问,从而提供了一个到 ObjectARX 系统 AcEdCommandStack 对象的指针。

vlax-add-cmd 函数自动将命令指定到命令组。从文档名称空间发出命令时,vlax-add-cmd 将命令添加到组 doc-ID。doc-ID 是标识文档的十六进制值。从独立名称空间 VLX 发出命令时,vlax-add-cmd 将命令添加到组 VLC-Ddoc-ID:VLX-name。这里 VLX-name 是发出 vlax-add-cmd.的应用程序名。

推荐从独立名称空间 VLX 使用 vlax-add-cmd 函数。然后使用 APPLOAD 命令明确加载 VLX,这样比将 LISP 文件放到启动组好。

注意 不能使用 vlax-add-cmd 显露创建反应器对象的函数,也不能用它来显露反应器的回调函数。

参数

global-name

字符串。

func-sym

符号,指定不带参数的 明经通道 Visual LISP 函数。

local-name

字符串(缺省值为 global-name)。

cmd-flags

整数型(缺省值为 ACRX_CMD_MODAL + ACRX_CMD_REDRAW)。

主要标志有:

ACRX_CMD_MODAL (0) 在使用其他命令时不能调用该命令。

ACRX_CMD_TRANSPARENT (1) 在使用其他命令时可以调用该命令。

二级标志有:

ACRX_CMD_USEPICKSET (2) 检索选择优先集时,在 AutoCAD 中清除设置。命令能够获取优先集,但不能检索或设置夹点。

ACRX_CMD_REDRAW (4) 检索选择优先集或夹点集时,不将它们从 AutoCAD 中清除。命令可获取优先集和夹点集。

如果同时设置了 ACRX_CMD_USEPICKSET 和 ACRX_CMD_REDRAW,则效果和仅设置 ACRX_CMD_REDRAW 一样。关于标志的详细信息,请参见 《ObjectARX 参考手册》中的“Command Stack”。

返回值

如果成功则返回 global-name 参数。如果 acedRegCmds->addCommand(...) 返回错误条件,则函数返回 nil。

示例

下例中的 hello-autocad 函数没有 c: 前缀,但 vlax-add-cmd 将其作为 ObjectARX 类型的命令显示在 AutoCAD 命令行提示:

_$ (defun hello-autocad () (princ "hello Visual LISP"))
HELLO-AUTOCAD
_$ (vlax-add-cmd "hello-autocad" 'hello-autocad)
"hello-autocad"

参阅

vlax-remove-cmd 函数。

明经通道 版权所有 未经许可 不得传播

 评论