(eval (read (strcat "(C:" fn ")")))
Razoo,
您首先要求删除报价表。
我认为,read函数是正确的回答。
然后,您似乎想要评估是否加载了LISP函数
eval和boundp都按您想要的方式使用,请尝试:
(if (not (eval (read (strcat "c:" fn))))
(alert "Not loaded !")
(alert "Already loaded !")
)和
它们的工作原理相同,因为if语句不需要条件来返回t,而是一个非nil值。
要运行该命令,问题是相同的,您必须强制评估:
(eval (read (strcat "(c:" fn ")")))(strcat“(c:“fn”))返回“(c:名称)”
(read“(c:NAME)”)返回(c:NAME)
(eval(c:NAME))将运行该函数。
PS:如果你从一开始就解释了你想做的一切,我一定会回复你:
“你看过自动加载功能吗?”
(autoload fn '(fn))
是的。
同意(在“如果”声明中)。我正在使用boundp。
我确实知道这一点,但出现了引导错误,导致我的测试代码失败。见我对李的回复。
当fn设置为“NAME”(autoload fn’(fn))时,返回“错误:参数类型错误”。
我希望这是可以解决的,但我更喜欢我编写的“按需加载”Lisp例程,因为它给了我更多的控制,并允许我指定任何错误消息。
一开始我没有解释全部任务,因为:
1.我没想到会有这么多麻烦,我想我唯一的问题是记住哪个函数去掉了引号(我在过去3年左右没有写过任何Lisp,我的Lisp圣经已经擅离职守了)。
我喜欢自己尽可能多地练习Lisp程序。
3.我当时正想让你和李看看谁跑得最快(我想李赢了!)眨眼:
谢谢
拉祖
我不同意,吉尔比我知识渊博得多。 对于自动加载,这应该可以工作:
7
由于撇号(')表示未计算列表,因此“fn”是无效的参数类型。
谢谢李,
我想发回我已经试过了那个代码,但它不起作用——然后我意识到我直接从命令行尝试了它,而没有首先将变量fn设置为“NAME”(当lisp例程终止时,fn重置为nil)。
我的“按需加载”Lisp例程现在运行得很好。
感谢所有提供指导的人。
直到下一次!
当做
拉祖
我指的是回复的速度,而不是知识的深度
拉祖
是的,修订后的代码运行良好。
我有许多Lisp例程,但从未在AutoCAD会话期间全部运行过。
我更喜欢使用预定义的(在Acad.lsp中)“按需加载”Lisp函数(C:Runlsp)。
如果我向菜单或工具栏添加新的Lisp命令,我所要做的就是键入宏:
如果“文件名”=“命令名”,或:
否则。
拉祖 我想每个人都有自己的
页:
1
[2]