Lisp功能存在或不检查

时间:2018-08-07 06:36:38

标签: function if-statement autolisp

我要检查lisp程序中是否存在函数定义,或者不决定运行哪个程序块。 函数定义是用.Net写在另一个文件上的,而我正在使用AutoCAD。 请帮忙。

2 个答案:

答案 0 :(得分:1)

执行此操作的方法有很多,但是最终您需要检查与函数名称相对应的符号是否具有值(例如,使用boundp函数),也许还需要检查该值是否为{ {1}},SUBRUSUBR数据类型(使用EXRXSUBR函数)。

例如:

type

在这种情况下,如果符号(member (type YourFunctionName) '(subr usubr exrxsubr)) 为空,则YourFunctionName将返回(type YourFunctionName),这将导致nil表达式返回member。同样,如果nil符号保留的值不是函数,则YourFunctionName函数将返回member

由于AutoLISP中的任何非nil值都被解释为True,因此即使nil没有明确返回布尔值,使用member也会验证if测试表达式。

答案 1 :(得分:0)

李的回答很好,很多次检查功能是否已加载我正在使用(and functionName),如果存在则返回T,否则返回Nil