cqu20104225 发表于 2020-2-23 11:36

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

本帖最后由 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、插件的支持类型,可以自行去源码中修改


**** Hidden Message *****







wzg356 发表于 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)

wang_cn10 发表于 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))))
   )
)

cqu20104225 发表于 2020-2-23 11:37

自己顶一次,新人发帖,没啥回复,哈哈哈

zzyong00 发表于 2020-2-23 13:40

看起来操作有些复杂

cqu20104225 发表于 2020-2-23 13:45

zzyong00 发表于 2020-2-23 13:40
看起来操作有些复杂
自己用还好,我自己经常要测试新的插件,用这种方式可以快一些。我是初学lisp,分享一种思路

zxvy 发表于 2020-2-23 14:28

:lol学习一下   学习一下

bai0379 发表于 2020-2-23 15:40

我下载看看和别的有什么不懂

cqu20104225 发表于 2020-2-23 15:44

bai0379 发表于 2020-2-23 15:40
我下载看看和别的有什么不懂

哭啥啊

yoyoho 发表于 2020-2-23 16:26

学习一下!!!!!!

1993063 发表于 2020-2-23 16:46

学习一下!!!!!!

广易精通 发表于 2020-2-23 17:31

看看学习一下
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 分享一个CAD插件自动加载的源码