mstg007 发表于 2017-2-20 11:11:08

在支持路径的子文件夹中调用例程

我正在尝试创建一个宏来运行一个lisp程序,这个程序我已经放了几个文件夹了。
(load "Support Folder\\2\\3\\4\\Z2S - Zoom to Structure.LSP")(C:z2s)
我知道如果我添加完整的地址,我可以让它工作,但不知道它是否会像上面那样工作。
谢谢你的帮助。
**** Hidden Message *****

mstg007 发表于 2017-2-20 12:34:17

据我所知,如果文件不驻留在支持路径中或提供文件的完整路径,则不可能。

Roy_043 发表于 2017-2-20 12:36:30

还行。这回答了这个问题。谢谢你的信息李。这只是一个想法,看看它是否会。

mstg007 发表于 2017-2-20 14:13:46

这表明findfile函数可以在搜索路径的子文件夹中找到文件。在BricsCAD中,这也适用于加载函数。

mstg007 发表于 2017-2-20 14:46:08

有趣。。。我必须尝试一下。谢谢

dgorsman 发表于 2017-2-20 15:14:52

我测试了它,它做了我需要它做的事情
(findfile "_Routine_Library\\Z2S - Zoom to Structure\\Z2S - Zoom to Structure.LSP")(load "Z2S - Zoom to Structure")(C:z2s)
我加载了主支持路径,然后在该路径下有带有例程的文件夹。谢谢你的帮助
我的下一步是尝试通过CUI或工具选项板按钮激活它,但无论哪种情况,我都会得到以下结果:
Command:
(findfile "_Routine_Library
不知道为什么会这样
如果复制并粘贴到命令提示;它可以工作。
(findfile "_Routine_Library\\Z2S - Zoom to Structure\\Z2S - Zoom to Structure.LSP")(load "Z2S - Zoom to Structure")(C:z2s)

Roy_043 发表于 2017-2-21 10:27:53

我的建议 - 在LISP中编写自己的嵌套搜索函数。 这样,如果您不希望文件位置发生巨大变化,则还可以包括搜索缓存(在找到相同的内容后,一遍又一遍地搜索相同的内容是没有意义的)。

mstg007 发表于 2017-2-21 12:57:03

@MSTG007:
这段代码让我感到惊讶:
要么这个工作:
(load "_Routine_Library\\Z2S - Zoom to Structure\\Z2S - Zoom to Structure.LSP")(C:z2s)
要么你必须使用这个:
(load (findfile "_Routine_Library\\Z2S - Zoom to Structure\\Z2S - Zoom to Structure.LSP"))(C:z2s)
我不确定为什么从CUI调用它失败。尝试切换到正斜杠。

Roy_043 发表于 2017-2-21 13:38:09

我尝试了正斜杠。没有这样的运气。
Command: (load (findfile "_Routine_Library/Z2S - Zoom to Structure/Z2S - Zoom to Structure.LSP"))(C:z2s) ; error: bad argument type: stringp nil

mstg007 发表于 2017-2-22 03:59:24

如果文件夹A在搜索路径文件夹中,所有这些都在BricsCAD中起作用:
命令栏条目:
(findfile "A\\B\\Name with spaces.lsp")
(findfile "A/B/Name with spaces.lsp")
(load "A\\B\\Name with spaces.lsp")
(load "A/B/Name with spaces.lsp")
崔宏的代码8]
我不知道为什么这在AutoCAD中不起作用。
页: [1] 2
查看完整版本: 在支持路径的子文件夹中调用例程