hosyn 发表于 2022-7-5 15:04:44

再次加载最新的lisp fil

嘿伙计们
是否有重新加载从某个lsp文件加载的最新lisp文件的方法??

Emmanuel Delay 发表于 2022-7-5 15:23:14

我有一个。我桌面上加载其他有用lisp文件的lsp文件。
 

(defun openuseful ( / )
(load "...\\lisp\\cabling\\movetofrom.lsp")
(load "...\\lisp\\alp\\alp3.lsp")
(load "...\\lisp\\furn\\furn_v5.lsp")
...
)
(openuseful)

 
也可以使Autocad自动加载您提供的文件列表。
 
但是lisp不记得哪个函数在哪个文件上。
就像你不能写函数一样
(defun detecttcurrentlispfile(/)…)。这个问题对lisp来说没有意义。

rkmcswain 发表于 2022-7-5 15:27:29

 
你到底是什么意思?
 
您是否正在加载lisp文件,然后在您工作时,有人正在更新代码,您希望在文件更新后立即加载它?

hosyn 发表于 2022-7-5 15:40:57

 
是的,这正是我需要的。(更新代码后)

rkmcswain 发表于 2022-7-5 15:51:06

你想让它自动做到这一点,没有人机交互?
 
我想你需要一个反应器和一个可以读取文件日期的函数。(这里可能有一些例子)
 
1、加载函数,读取/存储文件上的文件日期。
2、让反应堆每隔一段时间(30秒?)检查一次文件,如果文件日期/时间较新,请重复步骤1。

Steven P 发表于 2022-7-5 15:56:43

我用这个:
 
 

(defun c:appreload ()
;;Re-load named LISP files

(setq mylispfolder "c:\\Users\\.....\\......\\")

(setq myfiles (vl-directory-files mylispfolder "*.lsp" nil)) ;;myfiles is list of files in mylispfolder location
(setq mylistlength (length myfiles)) ;;count of number of lsp files

(setq acount -1)
(repeat mylistlength
   (setq acount (1+ acount))
   (setq FailedtoLoad (strcat (nth acount myfiles) " failed to load"))
   (load (strcat mylispfolder (nth acount myfiles)) FailedtoLoad) ;;Loads each LISP file
)
)
 
 
它将加载一个位置内的所有LISP文件。我在更新LIPS“appeload”及其重新加载时使用它(我有一个文件夹,里面有我所有的lisp)
 
但是,它不会在LISP文件更新后立即重新加载。您仍然需要键入命令。对于所有需要的时间和将需要的时间来研究和编写一个代码来自动做到这一点,这是值得的努力?

BIGAL 发表于 2022-7-5 16:07:45

如果你的写作和测试只是做一个临时的defun大约需要30秒。
 

(defun c:aaa ()(load "mynewprogram"))
页: [1]
查看完整版本: 再次加载最新的lisp fil