一句代码加载文件夹下所有的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 "坏蛋"))
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 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 "成功加载"))
muwind 发表于 2020-7-12 11:50
嗯 对哦 ,多谢指点,确实有您说的说的问题,我这有前头增加支持支持路径的函数, 所有忘了这茬了。
用v ...
能不能来一个完整版的 muwind 发表于 2020-7-12 11:50
嗯 对哦 ,多谢指点,确实有您说的说的问题,我这有前头增加支持支持路径的函数, 所有忘了这茬了。
用v ...
能不能来一个完整版的 改成下面的了,这样即可看到哪些加载失败,即使加载失败也会继续执行后面的加载了
(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 muwind 发表于 2020-7-12 23:44
改成下面的了,这样即可看到哪些加载失败,即使加载失败也会继续执行后面的加载了
(foreach n (vl-remove...
兄弟代码能不能加注释,然后完整的代码来一个啊 大神:感觉这个程序像臨時加載所有程序,新建一个窗口就没有用了,又需要重新加载一次。可以像启动组一样吗,永久的加进来,除非我手动删除 名贴标记。 这个省事了,,多谢分享
页:
[1]