hosyn 发表于 2022-7-5 15:11:58

如何根据c修改

嗨,伙计们
如何将以下代码修改为当前文件夹
 

(load "d:\\0001-lis\\01-akjder 2.lsp" "MyLISP Failed to Load")

 
类似这样:
 

(load "#current folder#\\01-akjder 2.lsp" "MyLISP Failed to Load")

hanhphuc 发表于 2022-7-5 15:22:48

 
您好,不确定#当前文件夹#?
(setq folder (getvar 'dwgprefix) )
(setq folder(getenv 'userprofile) )
(setq folder(acet-ui-pickdir) )
;check
(findfile "01-akjder 2.lsp")
 
(strcat folder "\\01-akjder 2.lsp")

hosyn 发表于 2022-7-5 15:36:12

hanhphuc公司
没关系,但当dwg和lisp在同一位置时也没关系,如果我们想独立于dwg位置修改代码,我们能做什么?

(load "d:\\0001-lis\\01-akjder 2.lsp" "MyLISP Failed to Load")
Something like this :
(load "#current folder#\\01-akjder 2.lsp" "MyLISP Failed to Load")

有更好的方法吗??我想从闪存盘运行lisp,正如我们所知,当将闪存盘连接到任何计算机时,其驱动器的名称在任何其他计算机中都会不同。因此,它需要编写与驱动器名称无关的代码,或者考虑到驱动器本身的名称,自动编写lisp代码

ronjonp 发表于 2022-7-5 15:44:37

你可以试试这样的。它将获取所有映射的驱动器,并尝试加载lisp(如果找到)。
(defun _loadlispfromunknowndrive (pathtolisp / f r sfso)
(and (not (wcmatch pathtolisp ":*")) (setq pathtolisp (substr pathtolisp 2)))
(cond        ((setq sfso (vlax-create-object "Scripting.FilesystemObject"))
(vlax-for x (vlax-get-property sfso 'drives)
   (and (findfile (setq f (strcat (vlax-get x 'driveletter) pathtolisp))) (setq r f))
)
(vlax-release-object sfso)
(and r (load r))
)
)
)
(vl-load-com)
;; Usage
(_loadlispfromunknowndrive "X:\\MyLispFolder\\file.lsp")

hanhphuc 发表于 2022-7-5 15:54:47

 
附加支持路径如何?
 
 
@ronjonp智能方式

hosyn 发表于 2022-7-5 16:00:09

 
需要是驱动器根目录中的路径,否则不管?

ronjonp 发表于 2022-7-5 16:07:54

 
谢谢

ronjonp 发表于 2022-7-5 16:14:40

 
你只需要一条路。
 
我更新了上面的代码,因为如果最后检查的驱动器返回nil,它将无法到达加载部分。
页: [1]
查看完整版本: 如何根据c修改