自定义Lisp透明命令

我们知道在CAD中,如果我们在命令前面加一个单引号,则为透明命令。透明命令就是一个命令还没结束,中间插入另一个命令,然后继续完成前一个命令。插入的命令即透明命令,插入透明命令是为了更方便的完成第一个命令。如"about"命令,可打开"关于对话",但如果我正在画线(还没有结束),突然想打开"关于对话",则输入"'about "命令即可。

我们在实际写代码的过程中,也可能用到透明命令,自定义透明命令最关键的是vlax-add-cmd函数。下面是一个示例程序:

我先定义了一个函数exam,其主要作用是输出一句话;然后调用vlax-add-cmd函数,将调用exam函数,并设置为透明命令。来看一下vlax-add-cmd函数的语法。

函数:vlax-add-cmd

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

功能:可以将函数定义为 AutoCAD 命令,而无需在函数名中使用 c: 前缀;也可以定义透明 AutoLISP 命令,而对于 c: 函数,不能使用此函数来定义。

参数

global-name必选,字符串,命令名;

func-sym必选,符号,函数名;

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 中清除。命令可获取优先集和夹点集。

参考:http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-42392DA4-4A2B-4D34-AA7B-A5ACAF727E54

http://www.mjtd.com/helpcenter/autolisp/ALR.default.321.htm

原文地址:https://www.cnblogs.com/liweis/p/4371068.html