kele99kele 发表于 2015-8-11 13:11:35

请问如何在加载lisp时读取所加载lisp的存放路径

本帖最后由 kele99kele 于 2015-8-11 13:16 编辑

如题
比如我要做的是test.lsp
在将test.lisp采用拖入窗口或append方式加载的时候,
需要做一个support路径,将test.lsp所在目录作为cad
的搜索支持目录,那么我在test.lisp里面采用什么函
数能够将变量x赋值为test.lsp的所在目录呢?将x插
入搜索支持目录的方法见下面代码,我现在的目的是将
“D:\\nice”作为变量赋值给“x”达到能够随意拷贝
不受存放位置限制的目的(defun nice_makpath ()
(setq oldacad (getenv "ACAD")) (princ)
(if (wcmatch oldacad "*D:\\nice\\support*") ()
    (progn
      (vl-load-com)
      (vl-mkdir "D:\\nice")
      (vl-mkdir "D:\\nice\\support")
      (setq path "D:\\nice;D:\\nice\\support")
      (setenv "ACAD" (strcat oldacad ";" path))
    )   
)
(princ)
)

kele99kele 发表于 2015-8-11 20:03:36

没有大神感兴趣么

楚留香 发表于 2015-8-11 21:35:09

(setq lisploadpath1 (vl-registry-read
(strcat "HKEY_CURRENT_USER\\"
                (vlax-product-key)
                "\\Profiles\\"
                (vla-get-activeprofile (vla-get-profiles (vla-get-preferences (vlax-get-acad-object))))
                "\\Dialogs\\Appload"
      )
      "MainDialog"
      ))                  
;取得最后lisp程序加载地址

kele99kele 发表于 2015-8-11 21:49:07

楚留香 发表于 2015-8-11 21:35 static/image/common/back.gif


这个程序我已经该写过了,但是感觉局限有点大,再讨论下通过内存加载的方式加载的lisp或vlx的路径获得(defun c:tt ()
(setq
          nice_path (vl-registry-read
                        (strcat "HKEY_CURRENT_USER\\"
                                (vlax-product-key)
                                "\\Profiles\\"
                                (vla-get-activeprofile (vla-get-profiles (vla-get-preferences (vlax-get-acad-object))))
                                "\\Dialogs\\Appload"
                        )
                        "MainDialog"
    )
                nice_path (strcat nice_path ";" nice_path "nice\\support")
        )
)

楚留香 发表于 2015-8-11 21:56:01

内存方式加载暂时还没有好的办法;遍历注册表或许可以,但是没有深入研究过!

434939575 发表于 2015-8-12 09:50:45

这个好,谢谢!

USER2128 发表于 2015-8-12 14:46:59

同求相关程序,望大神出手

流动的清泉 发表于 2021-4-5 21:39:21

源文件 就不错了,我就满足了
页: [1]
查看完整版本: 请问如何在加载lisp时读取所加载lisp的存放路径