muwind 发表于 2020-7-11 22:53:01

一句代码加载文件夹下所有的lsp

本帖最后由 muwind 于 2020-7-11 22:55 编辑

一句代码加载文件夹下除本身外的所有vlx,自家偷懒用的,如果文件名刚好是命令名,可以用autoload,不过代码更长一点
(foreach n (vl-remove-if '(lambda(a)(= a "fycad.lsp"))(vl-directory-files"d:\\FYCAD""*.lsp"))(load n "坏蛋"))

tryhi 发表于 2020-7-12 00:02:59

vl-directory-files返回值不带路径,所以如果该目录不在搜索目录下将加载失败,另外剔除本身vl-remove就行了,vl-remove-if多此一举

(foreach n (vl-remove "fycad.lsp"(vl-directory-files"d:\\FYCAD""*.lsp"))(load (strcat "d:\\FYCAD\\" n) "坏蛋"))

muwind 发表于 2020-7-12 11:50:46

本帖最后由 muwind 于 2020-7-12 12:15 编辑

tryhi 发表于 2020-7-12 00:02
vl-directory-files返回值不带路径,所以如果该目录不在搜索目录下将加载失败,另外剔除本身vl-remove就行 ...
嗯 对哦 ,多谢指点,确实有您说的说的问题,我这有前头增加支持支持路径的函数, 所有忘了这茬了。
用vl-remove-if主要当时是用 这个 排除了几个文件fy*开头的文件不加载 ,也没花什么时间取研究过。
vl函数我用得少,基本用的纯lisp干的(主要还是考虑用R14的那些前辈),最近才开始用vl函数改写以前的一些代码
另外 加载我用的progn,可以看到哪些加载成功了,主要是用了vscode后编码有时候被改成UTF-8,就出现各种问题lsp加载不了
(progn (load n "bad") (princ (strcat "\n" n "成功加载"))



664571221 发表于 2020-7-12 14:31:43

muwind 发表于 2020-7-12 11:50
嗯 对哦 ,多谢指点,确实有您说的说的问题,我这有前头增加支持支持路径的函数, 所有忘了这茬了。
用v ...

能不能来一个完整版的

664571221 发表于 2020-7-12 14:31:57

muwind 发表于 2020-7-12 11:50
嗯 对哦 ,多谢指点,确实有您说的说的问题,我这有前头增加支持支持路径的函数, 所有忘了这茬了。
用v ...

能不能来一个完整版的

muwind 发表于 2020-7-12 23:44:12

改成下面的了,这样即可看到哪些加载失败,即使加载失败也会继续执行后面的加载了
(foreach n (vl-remove "fycad.lsp" (vl-directory-files "d:\\FYCAD" "*.lsp"))
(if (vl-catch-all-error-p (vl-catch-all-apply'load   (list (strcat "d:\\FYCAD\\" n)) ))
    (princ (strcat "\n" n "加载失败"))
    (princ (strcat "\n" n "加载成功"))
);end if
);end foreach

664571221 发表于 2020-7-13 10:36:32

muwind 发表于 2020-7-12 23:44
改成下面的了,这样即可看到哪些加载失败,即使加载失败也会继续执行后面的加载了
(foreach n (vl-remove...

兄弟代码能不能加注释,然后完整的代码来一个啊

w245272914 发表于 2020-10-30 10:59:14

大神:感觉这个程序像臨時加載所有程序,新建一个窗口就没有用了,又需要重新加载一次。可以像启动组一样吗,永久的加进来,除非我手动删除

panliang9 发表于 2020-10-30 20:54:19

名贴标记。

f4800 发表于 2020-11-2 06:46:14

这个省事了,,多谢分享
页: [1]
查看完整版本: 一句代码加载文件夹下所有的lsp