【函数】判断命令是否存在
本帖最后由 叶曲冰寒 于 2015-6-7 21:33 编辑关于命令是否存在的问题之前在网上找了很多地方都没完全搞定。关于命令是否存在的判断结合众牛人的看法,和自己的总结写出来供各位看官瞅瞅。此函数能够判断CAD内置命令和用户定义的命令。
;;功能:命令是否存在
;;参数:命令字符串
;;返回值:存在为T,否则为nil
(defun isCommandExist(commandstr / cAndCommandStr isexist myvalue)
(setq cAndCommandStr (strcat "c:" commandStr))
(if (equal (type (eval (read cAndCommandStr))) 'subr)
;;说明是用lisp的defun定义的命令
(progn
(setq isExist T)
(print "命令存在!")
)
;;不是lisp中defun定义的命令
(progn
(if
;;if判断的条件
(not
;;捕捉错误,错误存在为T,不存在为FALSE
(vl-catch-all-error-p
(setq myvalue
;;执行语句,并且用vl-catch-all-apply捕捉错误
(vl-catch-all-apply '(lambda (x) (progn (command x) (setq lastCommand (getvar "LASTPROMPT")) (if (not (wcmatch lastCommand "*未知命令*")) (command "ESC")))) (list commandStr))
)
)
)
;;if条件后的第一条语句
;;如果执行出错就执行下面这句
(progn
(setq isExist nil)
(print "命令不存在!")
)
;;if条件后的第二条语句
;;如果执行出错,就捕捉错误,执行下面这句
(progn
(setq isExist T)
(print "命令存在!")
)
);;end if
;;取消命令操作
(if isExist
(progn
(command)
)
);;end if
);;end progn
);;end if
;;输出值,命令存在时是T,否则是nil
isExist
)
本帖最后由 USER2128 于 2015-6-8 08:18 编辑
可以参考我的贴子:
判断是否为CAD命令的简写
可以判断出:
1、是否为CAD命令的简写;
2、是否为CAD系统内置命令;
3、是否为CAD系统内置函数;
页:
[1]