明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2126|回复: 5

[求助]如何自动添加所加载的LISP程序所在目录到搜索目录下!

[复制链接]
发表于 2010-8-6 18:17:00 | 显示全部楼层 |阅读模式

论坛找了很久也没找到。有一种可以,但是要LSP格式才行,如果是VLX格式就不行!

发表于 2010-8-9 12:52:00 | 显示全部楼层
请问楼主,LSP的怎么添加呢??
发表于 2010-8-10 13:05:00 | 显示全部楼层
有人知道的吗??
发表于 2018-5-23 08:15:35 | 显示全部楼层
顶起来,同求啊。。。。。。。。。。。。。。。
发表于 2018-5-23 16:25:41 | 显示全部楼层
本帖最后由 yxp 于 2018-5-23 16:41 编辑

测试了一下,lisp 加载的办法太多,还真没有统一的办法
1 lisp文件拖入绘图区加载
2 点击菜单工具加载
3 用第三方vbs代码加载
4 直接粘贴 lisp 代码到命令行加载

第一种可以读系统变量获取加载路径;
  1. (getvar "lastprompt")


第一、第二种可以读 注册表获取路径;
  1. (defun Auto_get_path( / ss)
  2. (setq reg (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\Profiles\\"
  3.     (getvar "CPROFILE") "\\Dialogs\\Appload")
  4.   paths (getenv "ACAD"))
  5. (if (= "0" (vl-registry-read reg "SaveHistory"))
  6.   (progn
  7.     (vl-registry-write reg "SaveHistory" "1")
  8.     (princ "\n加载路径获取失败,请重新加载")
  9.     (princ)
  10.   )
  11.   (setq sr (strcat reg "\\History")
  12.     n (atoi (vl-registry-read sr "NumHistory"))
  13.     ss (vl-registry-read sr (strcat (itoa n) "History"))
  14.   )
  15. )
  16. )


第三种可以用 vbs 获取路径
  1. Dim STR , ARR
  2.   SET ARR = WScript.Arguments
  3.     For Each S1 In ARR
  4.        STR = STR & "" & S1
  5.     Next
  6. Set objCAD = GetObject(, "AutoCAD.Application")
  7. If Err Then '如果AutoCAD应用程序没有启动
  8.     Err.Clear
  9.     MsgBox " 未打开CAD程序:"
  10.         Else
  11.                 Set ThisDrawing = objCAD.activedocument
  12.                 Set ws = CreateObject("WScript.Shell")
  13.                 ws.appactivate "AutoCAD" '此处改为窗口标题固定的前缀
  14.                 Set WS = Nothing
  15.                 STR = replace (STR , "\" ,"/")
  16.                 ThisDrawing.SendCommand ("(load """ & STR & """)" & vbCr)
  17.                 Set ARR = Nothing
  18.                 Set STR = Nothing
  19.                 Set ThisDrawing = Nothing
  20.                 Set objCAD = Nothing
  21. End If


第四种本身就没有路径,因为它不是一个文件。

发表于 2023-8-10 11:17:54 | 显示全部楼层
(vl-load-com)
(defun set_path (/ str n1 n2)
(while (/= 0 (getvar "cmdactive")) (command))
(princ "\n")
(setq str (getvar "lastprompt"))
(if (wcmatch (strcase str) "*(LOAD \"*")
(setq n1 (vl-string-search "(LOAD \"" str)
n2 (vl-string-search "\")" str)
str (substr str (+ n1 8) (- n2 n1 7))
)
(setq str
(vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\*"
(substr (vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\*" "MRUList") 1 1)
)
)
)
(setenv "ACAD" (strcat (getenv "ACAD") ";" (vl-filename-directory str)))
)
(set_path)
(setq set_path nil)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 00:39 , Processed in 0.183917 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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