分享一个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 *****
改进一下,你可以编辑放在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)
修改了一下,加入了对arx文件的支持 本帖最后由 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))))
)
)
自己顶一次,新人发帖,没啥回复,哈哈哈 看起来操作有些复杂 zzyong00 发表于 2020-2-23 13:40
看起来操作有些复杂
自己用还好,我自己经常要测试新的插件,用这种方式可以快一些。我是初学lisp,分享一种思路
:lol学习一下 学习一下 我下载看看和别的有什么不懂 bai0379 发表于 2020-2-23 15:40
我下载看看和别的有什么不懂
哭啥啊 学习一下!!!!!!
学习一下!!!!!! 看看学习一下