从中删除引号
谈到Lisp函数,我有点生疏了。是否有一个函数可以从变量中去掉引号?
我有一个rountine,变量设置为“C:NAME”。要在Lisp例程中使用该变量,需要删除引号。
有没有简单的方法(与AutoCAD14兼容)?
谢谢
拉祖 你好
读取功能?
(读取“C:NAME”)返回C:NAME
啊,是的,我现在想起来了
谢谢你的快速回复。
拉祖 嗯,现在还不能用!
我试图定义一个例程,用于按需加载lisp例程。
基本上,当从菜单中调用lisp例程时,会检查例程是否已加载。如果是,则只调用命令名。如果不是,则首先加载lisp文件,然后调用命令名。
(如果(不是C:名称)(加载“名称”)。。。等
名称存储为变量fn中的“NAME”
我狡猾的计划是使用:
(如果(不是(读取(strcat“C:”fn))(加载fn)。。。。
但它不起作用,(not(读取(strcat“C:”fn))总是返回nil。
(read(strcat“C:”fn))正确返回C:NAME
有什么想法吗?
拉祖 试试这个:
(if (not (read (strcat "(C:" fn ")")))
(load fn)
)
或者类似的东西。。
李 你好
这些是LISP基础知识(不仅仅是AutoLISP,所有LISP语言)。
eval返回一个符号,如果您想知道此符号是否绑定到函数,可以使用eval函数:
(if (not (eval (read (strcat "c:" fn))))
(load fn)
) 谢谢李和吉尔,我会试试你的建议。
当做
拉祖 李,
(not(read(strcat)(c:“fn”))应始终返回nil,无论fn是什么,因为(read(strcat)(c:“fn”))始终返回包含符号(也未评估)的列表(未评估)。
Razoo,
也可以使用boundp代替eval
如果符号(c:+fn值)有界于某个值,则(boundp(read(strcat“c:”fn)))应返回T,否则返回nil。 感谢Gile的澄清
正在取得进展(缓慢)!
其中fn设置为“NAME”:
(boundp(read(strcat“C:”fn)))在未加载Lisp例程(返回nil)和加载Lisp例程(返回t)时都可以正常工作。
(eval(read(strcat“C:”fn)))仅在未加载Lisp例程时有效(返回nil)。加载Lisp例程时,它似乎会回显大部分Lisp文件。
我现在在加载后运行Lisp例程时遇到了类似的问题。通常(C:NAME)将运行NAME。LSP
不幸的是,(read(strcat“C:”fn))没有运行Lisp例程,即使它返回C:NAME
知道如何使用变量fn中存储的“NAME”启动Lisp例程吗?
谢谢
Razoo(谁认为这个Lisp例程写起来很难!)
页:
[1]
2