明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 712|回复: 11

[提问] 请大佬帮助:拼凑个自动加载程序,不知道哪里出问题了??

[复制链接]
发表于 2024-9-4 00:31:57 | 显示全部楼层 |阅读模式
本帖最后由 fengyu6913 于 2024-9-4 12:35 编辑


从网上找的加载子函数,想拼凑个自动加载程序,卡住了,也不知道哪里出问题了

请大佬帮忙看下问题出在哪里了?



(defun c:tt () (c:lispautoload))  ;;  长命令简化“调用”方法

(defun c:lispautoload ( / x )

  (setq path_root  "H:\\00. CAD相关\\1.加载\\")  ;;设置根路径

  (setq path0     (strcat  path_root     "0. 快捷"))
  (setq path1     (strcat  path_root     "1. 绘图"))
  (setq path2     (strcat  path_root     "2. 变量"))
  (setq path3     (strcat  path_root     "3. 标注"))
  (setq path4     (strcat  path_root     "4. 方字"))
  (setq path5     (strcat  path_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   )      
)





"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-9-4 13:54:03 | 显示全部楼层
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   ))   

当然了,删掉后,可以在清理一下这个函数的废弃变量名。
发表于 2024-9-5 13:49:37 | 显示全部楼层
本帖最后由 xyp1964 于 2024-9-6 08:15 编辑

  1. (defun c:tt () (c:lispAutoLoad)) ; 长命令简化“调用”方法
  2. (defun c:lispAutoLoad (/ root)
  3.   (defun autoloadfile (path / lst)
  4.     (setq lst (mapcar '(lambda (x) (vl-directory-files path x 1))'("*.vlx" "*.fas" "*.lsp")))
  5.     (mapcar '(lambda (x) (load (strcat path "\\" x))) (apply 'append lst))
  6.   )
  7.   (setq root "H:\\00.CAD相关\\1.加载\\") ;设置根路径
  8.   (foreach a '("0.快捷" "1.绘图" "2.变量" "3.标注" "4.方字" "5.座标");子目录
  9.     (autoloadfile (strcat root a))
  10.   )
  11.   (princ)
  12. )

评分

参与人数 1明经币 +1 收起 理由
zhoupeng220 + 1 很给力!

查看全部评分

发表于 2024-9-6 11:20:58 | 显示全部楼层
本帖最后由 xxyyzzlg 于 2024-9-6 11:43 编辑

本想取代之前的自动加载加载程序,遇到了些问题。
之前能正常加载部分函数,如黄大师之前分享的,
用这个方法加载会出现出错提示。
错误: LOAD 失败: D:\11\1.绘图\21.绘图\明经常用函数.lsp

而同路径下的某些程序却能正常加载。  想不通哪里出了问题。
发表于 2024-9-4 02:58:44 | 显示全部楼层
想自动加载插件?你只要把代码复制到acad20**.lsp文件里,启动CAD就可以自动加载了。20**是你的CAD版本号。
发表于 2024-9-4 09:48:02 | 显示全部楼层
用别人写好的就可以吧,kk开头那个挺好用
 楼主| 发表于 2024-9-4 12:33:43 | 显示全部楼层
插件经常有变动,几台机子要同步挺麻烦的,就想着放移动硬盘里
用时直接能把整个文件夹里的自动加载
发表于 2024-9-4 13:39:57 | 显示全部楼层
fengyu6913 发表于 2024-9-4 12:33
插件经常有变动,几台机子要同步挺麻烦的,就想着放移动硬盘里
用时直接能把整个文件夹里的自动加载

要多台电脑都同步,不如直接全部从web加载,将来只需要更新web上的lsp,保证每次加载的都是最新的
 楼主| 发表于 2024-9-5 10:35:21 | 显示全部楼层
问题已解决,感谢大佬们相助
 楼主| 发表于 2024-9-5 20:41:10 | 显示全部楼层


xyp1964 大神出现了,这个代码好精简

学习了!
发表于 2024-9-5 21:45:12 | 显示全部楼层
膜拜大神了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 06:54 , Processed in 0.175238 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表