明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 17918|回复: 142

分享一个CAD插件自动加载的源码

    [复制链接]
发表于 2020-2-23 11:36 | 显示全部楼层 |阅读模式
本帖最后由 cqu20104225 于 2020-2-23 13:57 编辑

优点:不用将常用插件加入CAD启动组,这样在常用插件修改以后,不用去启动组做修改!

使用方法:
1、在D盘根目录新建一个“@CAD插件自动加载”的文件夹
2、在上述文件夹中新建一个“@禁删改”的子文件夹
3、在“CAD插件自动加载.lsp”文件放到“@禁删改”文件夹中
4、将“CAD插件自动加载.lsp”添加到CAD的启动组中
5、将其余需要自动加载的插件放到“@CAD插件自动加载”文件夹的根目录中
6、以后启动CAD过程中,就会自动加载所需要的所有插件了

说明:
1、上述1和2中的文件夹,可以自行修改,对应修改源码即可
2、插件的支持类型,可以自行去源码中修改










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

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

查看全部评分

发表于 2020-9-7 09:58 | 显示全部楼层
改进一下,你可以编辑放在0楼,拖拽加载,放在那儿都行,不用写路径了



;lsp文件拖入cad绘图区域.能获取 lsp 自身路径
;cad有(command "_.copyhist")同样可以获取加载lsp文件自身路径.而且.路径很长或有空格时同样正确.
;;;xshrimp 2011.7
(vl-load-com)
(OR
xzj-clip-gettxt
(defun xzj-clip-gettxt (/ html result)
    (if (setq html   (vlax-create-object "htmlfile"))   
        (progn
          (setq result
                 (vlax-invoke-method
                       (vlax-get
                          (vlax-get html 'parentwindow)
                          'clipboarddata
                        )
                       'getdata
                       "text"                  
                  )
           )
          (vlax-release-object html)     
          (if (= (type result) 'variant) (vlax-variant-value result)result) ;add
         )
     );end if
    )
)
(defun xzj-CurrentDirectory( / key len nn str str2)  
(while (= (logand (getvar "CmdActive") 1) 1)(command))
(princ "\n")(command "_.copyhist")
(if (setq str(xzj-clip-gettxt))
  (progn
    (setq str2 (strcase str))   
    (setq len (strlen str) nn (- len 2))
    (while        
            (progn
             (setq key (substr str nn 1) nn (1- nn))
             (and (> nn 0)(/= "\"" key))
             )
    )
      (setq str (substr str (+ nn 2) (- len nn 3)))
      (while (vl-string-search "/" str)     (setq str (vl-string-subst "\\" "/" str) ))
      (while (vl-string-search "\r\n" str)  (setq str (vl-string-subst "" "\r\n" str)))      
      ;(alert (strcat "加载文件路径为: " str))
  )
)str
)
;自动加载CAD插件
(defun ll_lsp_autoload ( / str1 str2 ll_lsp_file ll_vlx_file ll_fas_file ll_arx_file i)
  (setvar "cmdecho" 0)
  (setq str1(car(fnsplitl(xzj-CurrentDirectory))))
  (setq str2(vl-string-right-trim "\\" str1))
  (setq ll_lsp_file (vl-directory-files str2 "*.lsp" 1))
  (setq ll_vlx_file (vl-directory-files str2 "*.vlx" 1))
  (setq ll_fas_file (vl-directory-files str2 "*.fas" 1))
  (setq ll_arx_file (vl-directory-files str2 "*.arx" 1))
  (if (or  (/= ll_lsp_file nil) (/= ll_vlx_file nil) (/= ll_fas_file nil) (/= ll_arx_file nil))
    (progn
      (setq ll_lspfile (append ll_lsp_file ll_vlx_file ll_fas_file ll_arx_file))
      (foreach i ll_lspfile (vl-catch-all-apply 'load (list (strcat str1 i))))
    )
  )
  (setvar "cmdecho" 1)
)
(ll_lsp_autoload)
(setq xzj-CurrentDirectory nil)
(princ)
  

评分

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

查看全部评分

回复 支持 3 反对 0

使用道具 举报

发表于 2020-2-24 22:56 | 显示全部楼层
本帖最后由 wang_cn10 于 2020-2-24 23:53 编辑

楼主的太长,这个简短点

(defun lispautoload ( / x )
  (setq path "D:\\CAD插件自动加载")  ;;设置路径
  (foreach x (vl-remove "." (vl-remove ".." (vl-directory-files path)))
    (if (member (vl-filename-extension x) (list ".lsp" ".fas" ".VLX"))
      (load (findfile (strcat path "\\" x))))
   )
)

评分

参与人数 1明经币 +1 收起 理由
tomonkey239 + 1 赞一个!

查看全部评分

回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2020-2-23 11:37 | 显示全部楼层
自己顶一次,新人发帖,没啥回复,哈哈哈
发表于 2020-2-23 13:40 | 显示全部楼层
看起来操作有些复杂
 楼主| 发表于 2020-2-23 13:45 | 显示全部楼层
zzyong00 发表于 2020-2-23 13:40
看起来操作有些复杂

自己用还好,我自己经常要测试新的插件,用这种方式可以快一些。我是初学lisp,分享一种思路
发表于 2020-2-23 14:28 | 显示全部楼层
学习一下   学习一下
发表于 2020-2-23 15:40 | 显示全部楼层
我下载看看和别的有什么不懂
 楼主| 发表于 2020-2-23 15:44 | 显示全部楼层
bai0379 发表于 2020-2-23 15:40
我下载看看和别的有什么不懂

哭啥啊
发表于 2020-2-23 17:31 | 显示全部楼层
看看学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 00:23 , Processed in 0.470417 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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