[讨论]在Lisp中调用PGP文件中用户自定义的命令
大家知道,在Lisp中是不能直接调用PGP文件中用户自定义的命令,只能调用CAD中的原始完整命令,这对于编程很不方便,特别是Express中的命令,如flatten在CAD中根本就没有原始命令,如何调用呢?用函数 (VLAX-Add-Cmd)。 大家讨论一下用法或者更好的办法 (c:flatten) vlax-add-cmd 函数<BR>语法:(vlax-add-cmd global-name func-sym )<BR>功能:将命令添加到 AutoCAD 内置命令集中<BR>说明:<BR>1)使用 vlax-add-cmd 可以将函数定义为 AutoCAD 命令,而无需在函数名中使用 c: 前缀。<BR>2)使用 vlax-add-cmd 可以定义透明 AutoLISP 命令,而 c: 函数,是不可能实现的。<BR>3)vlax-add-cmd 函数使某个 AutoLISP 函数在当前 AutoCAD 任务中作为 ObjectARX 类型的命令,在 AutoCAD 命令行提示中使用。<BR>4)vlax-add-cmd 函数提供了对 ObjectARX acedRegCmds 宏的访问,从而提供了一个到 ObjectARX 系统 AcEdCommandStack 对象的指针。<BR>5)vlax-add-cmd 函数自动将命令指定到命令组。当文档名称空间发出命令时,vlax-add-cmd 将命令添加到组 doc-ID。doc-ID 是标识文档的十六进制值。当独立名称空间 VLX 发出命令时,vlax-add-cmd 将命令添加到组 VLC-Ddoc-ID:VLX-name。这里 VLX-name 是发出 vlax-add-cmd.的应用程序名。<BR>6)不能使用 vlax-add-cmd 显露创建反应器对象的函数,也不能用它来显露反应器的回调函数。<BR>7)参数 global-name 为字符串。<BR>8)参数 func-sym 为符号,指定不带参数的 AutoLISP 函数。<BR>9)参数 local-name 为字符串(默认值为 global-name)。<BR>10)cmd-flags 为整数型(默认值为 ACRX_CMD_MODAL + ACRX_CMD_REDRAW)。<BR> 主要标志有:<BR> ACRX_CMD_MODAL (0) 在使用其他命令时不能调用该命令。<BR> ACRX_CMD_TRANSPARENT (1) 在使用其他命令时可以调用该命令。<BR> 二级标志有:<BR> ACRX_CMD_USEPICKSET (2) 检索选择优先集时,在 AutoCAD 中清除设置。命令能够获取 优先集,但不能检索或设置夹点。<BR> ACRX_CMD_REDRAW (4) 检索选择优先集或夹点集时,不将它们从 AutoCAD 中清除。命令可获取优先集和夹点集。<BR>11)若同时设置了 ACRX_CMD_USEPICKSET 和 ACRX_CMD_REDRAW,那么效果和仅设置 ACRX_CMD_REDRAW 一样。<BR>12)关于标志的详细信息,请参见 ObjectARX Reference 手册中的“Command Stack”。<BR>返回值:如果成功则返回 global-name 参数。如果 acedRegCmds->addCommand(...) 返回错误条件,则函数返回 nil。 8)参数 func-sym 为符号,指定不带参数的 AutoLISP 函数。<BR>能说一下这个参数的格式吗?举个简单例子 有人回答一下吗? 参考:;;;加载汉字-宋体
(defun jzhz ()
(if (null (tblsearch "style" "汉字"))
(command "_style" "汉字" "宋体" "0" "1" "0" "" "")
)
(setvar "textstyle" "汉字")
)
(vlax-add-cmd "jzhz" 'jzhz)用(jzhz)或直接用jzhz均可。 xyp1964 发表于 2005-3-7 20:33 static/image/common/back.gif
vlax-add-cmd 函数语法:(vlax-add-cmd global-name func-sym )功能:将命令添加到...
好函数,收藏了,谢谢 xyp老师的讲解很详细! 讲解很详细,顶起
页:
[1]