请大佬帮助:拼凑个自动加载程序,不知道哪里出问题了??
本帖最后由 fengyu6913 于 2024-9-4 12:35 编辑从网上找的加载子函数,想拼凑个自动加载程序,卡住了,也不知道哪里出问题了
请大佬帮忙看下问题出在哪里了?
(defun c:tt () (c:lispautoload));;长命令简化“调用”方法
(defun c:lispautoload ( / x )
(setq path_root"H:\\00. CAD相关\\1.加载\\");;设置根路径
(setq path0 (strcatpath_root "0. 快捷"))
(setq path1 (strcatpath_root "1. 绘图"))
(setq path2 (strcatpath_root "2. 变量"))
(setq path3 (strcatpath_root "3. 标注"))
(setq path4 (strcatpath_root "4. 方字"))
(setq path5 (strcatpath_root "5. 座标"))
(CQ-AUTOLOADFILE path0)
(CQ-AUTOLOADFILE path1)
(CQ-AUTOLOADFILE path2)
(CQ-AUTOLOADFILE path3)
(CQ-AUTOLOADFILE path4)
(CQ-AUTOLOADFILE path5)
)
;;以下子程序是是论坛还是群里找到的
(DEFUN CQ-AUTOLOADFILE( PATH / FILENAME I INF SELF )
(setq FILENAME (MAPCAR 'STRCASE (APPLY 'APPEND (MAPCAR '(LAMBDA (X )
(VL-DIRECTORY-FILES PATH X ) ) '("*.VLX" "*.FAS" "*.LSP" ) ) ) ))
(setq SELF (STRCASE (STRCAT (VL-FILENAME-BASE (VL-BB-REF 'FILEPATH ) )
(VL-FILENAME-EXTENSION (VL-BB-REF 'FILEPATH ) ) ) ))
(setq FILENAME (VL-REMOVE SELF FILENAME ))
(setq I 0)
(FOREACH X FILENAME
(if (VL-CATCH-ALL-ERROR-P (setq INF
(VL-CATCH-ALL-APPLY 'LOAD (LIST (STRCAT PATH "/" X ) ) )) )
(PROGN
(setq I (1+ I ))
(PRINC (STRCAT "\n(" (ITOA I ) ") " X " 加载失败! " (VL-CATCH-ALL-ERROR-MESSAGE INF ) ) )
)
)
(PRINC )
)
(PRINC )
)
CQ-AUTOLOADFILE那个不明白为什么会写的这么复杂。
第1步是找到了路径下所有的程序文件;
第2步和第3步完全没看明白是想干嘛,另外出错就是在第2步,第3步没测试。
后面是加载程序文件。
简单来说,把第2步和第3步删掉,程序就能用了,也就是下面这些删掉
(setq SELF (STRCASE (STRCAT (VL-FILENAME-BASE (VL-BB-REF 'FILEPATH ) )
(VL-FILENAME-EXTENSION (VL-BB-REF 'FILEPATH ) ) ) ))
(setq FILENAME (VL-REMOVE SELF FILENAME ))
当然了,删掉后,可以在清理一下这个函数的废弃变量名。
本帖最后由 xyp1964 于 2024-9-6 08:15 编辑
(defun c:tt () (c:lispAutoLoad)) ; 长命令简化“调用”方法
(defun c:lispAutoLoad (/ root)
(defun autoloadfile (path / lst)
(setq lst (mapcar '(lambda (x) (vl-directory-files path x 1))'("*.vlx" "*.fas" "*.lsp")))
(mapcar '(lambda (x) (load (strcat path "\\" x))) (apply 'append lst))
)
(setq root "H:\\00.CAD相关\\1.加载\\") ;设置根路径
(foreach a '("0.快捷" "1.绘图" "2.变量" "3.标注" "4.方字" "5.座标");子目录
(autoloadfile (strcat root a))
)
(princ)
) 本帖最后由 xxyyzzlg 于 2024-9-6 11:43 编辑
本想取代之前的自动加载加载程序,遇到了些问题。
之前能正常加载部分函数,如黄大师之前分享的,
用这个方法加载会出现出错提示。
错误: LOAD 失败: D:\11\1.绘图\21.绘图\明经常用函数.lsp
而同路径下的某些程序却能正常加载。想不通哪里出了问题。 想自动加载插件?你只要把代码复制到acad20**.lsp文件里,启动CAD就可以自动加载了。20**是你的CAD版本号。 用别人写好的就可以吧,kk开头那个挺好用 插件经常有变动,几台机子要同步挺麻烦的,就想着放移动硬盘里
用时直接能把整个文件夹里的自动加载 fengyu6913 发表于 2024-9-4 12:33
插件经常有变动,几台机子要同步挺麻烦的,就想着放移动硬盘里
用时直接能把整个文件夹里的自动加载
要多台电脑都同步,不如直接全部从web加载,将来只需要更新web上的lsp,保证每次加载的都是最新的 问题已解决,感谢大佬们相助 xyp1964 发表于 2024-9-5 13:49
xyp1964 大神出现了,这个代码好精简
学习了! 膜拜大神了
页:
[1]
2