GWelch 发表于 2022-7-6 07:15:39

Lisp例程加载问题u

我对Lisp程序完全一无所知。不幸的是,我们办公室里那个让事情继续发展的家伙跑掉了,加入了马戏团,带走了他所有的玩具,我们中的一些人正在尝试升级,同时仍在维护我们的宏。如果您能提供任何帮助,我们将不胜感激。
 
之前在2007年Acad2007中,他让我们使用复制此Acaddoc。lsp文件到我们所有的支持目录(Acad、Land Desktop、Civil3d)。我们还将所有lisp例程复制到桌面/笔记本电脑。当时的想法是,网络驱动器将始终是最新的和更新的,但如果我们远离网络,我们仍然可以从我们的电台运行东西。
 
不幸的是,在升级到Acad2009和Acad2011 Civil3D后,我一直无法使其工作,我不知道我做错了什么。
 
这是阿卡多克。我们使用的lsp:
 
;;;    ACADDOC.LSP Created to Load Earth Tech Routines
;;;

(setq S::STARTUP (append S::STARTUP AecCStartup))
(princ "Starting Load")
(princ "Network Check...");
(if (findfile "L:/library/cadmasters/acadsta/acad/lisp/network.up")
   (progn
   (princ "OK.\n")
   (defun ETload (parm / full_filename)
       (setq full_filename (strcat "L:/library/cadmasters/ACADSTA/ACAD/LISP/" parm))
       (if (findfile (strcat full_filename ".lsp"))
         (load full_filename)
         (princ (strcat "AutoLISP File (" full_filename ") Not Found\n"))
       );End if
       (princ)
   );End def
   );Pend
   (progn
   (princ "\nServer DOWN...Resetting LISP To C: Drive...")
   (getstring "Press <RETURN> To Acknowledge Problem: ")
   (defun whload (parm / full_filename)
       (setq full_filename (strcat "C:/ACAD/LISP/" parm))
       (if (findfile (strcat full_filename ".lsp"))
         (load full_filename)
         (princ (strcat "AutoLISP File (" full_filename ") Not Found\n"))
       );End if
       (princ)
   );End def
   );Pend
);End if
;--Load Earth Tech Standard LISP Routines
   (ETload "Earth-Tech")

;--Set All Default Variables
(setvar "UCSICON" 0)
(setvar "CMDECHO" 0)
(princ)

 
我知道它正在寻找Earth-Tech.lsp。它在C:/Acad/Lisp处加载。如果需要的话,我可以把它打印出来。
 
下面是我得到的错误:
 
; error: no function definition: ETLOAD
AutoCAD menu utilities loaded.Starting LoadNetwork Check...
Server DOWN...Resetting LISP To C: Drive...Press <RETURN> To Acknowledge
Problem: *Cancel*
; error: Function cancelled
 
宏无法工作。我怀疑我在错误的位置归档了一些东西,但我不知道是什么或在哪里。
 
坦率地说,我真的不需要在网络上查找例程,我很乐意只在我的笔记本电脑上运行它,所以如果你想建议取消网络检查,以及如何摆脱它,这对我来说是可行的。我们中的大多数人现在都在笔记本电脑上,可以在远离网络的情况下工作,所以现在这并不那么重要。
 
我很乐意接受任何建议,并且可以尝试回答任何关于文件位置或其内容的问题。
 
非常感谢。

Lee Mac 发表于 2022-7-6 07:19:20

你好,GWelch,
 
如果您只想从笔记本电脑上的已知位置加载LISP文件,这样就足够了:
 
(load "C:\\YourFolder\\YourLISP.lsp" "Failed to Load YourLISP")

Lee Mac 发表于 2022-7-6 07:24:48

这些也可能有帮助:
 
http://lee-mac.com/autoloading.html
 
http://lee-mac.com/autoloader.html
 
http://lee-mac.com/acaddoccreator.html

resullins 发表于 2022-7-6 07:27:14

(ETload“Earth Tech”)
 
据我所知,那句话没有任何意义。有人告诉我,如果我错了。但据我所知,错误是告诉您要“ETLoad”一些东西,但这不是一个有效的LISP命令。
 
尝试将该行更改为(加载“Earth Tech”)
 
重新加载,重新启动AC,然后重试。

Ahankhah 发表于 2022-7-6 07:31:15

格韦尔奇,
显然,此位置中没有名为“network.up”的文件:“L:/library/cadmasters/acadsta/acad/lisp/”。它指示程序不要定义“ETLOAD”函数。
我认为线索是找到提到的文件并将其放在相应的文件夹中。

Ahankhah 发表于 2022-7-6 07:32:55

 
结果,ETLoad在代码中以条件方式定义。问题是由于缺少以下积极条件造成的:(if(findfile“L:/library/cadmasters/acadsta/acad/lisp/network.up”)。。。

KJB 发表于 2022-7-6 07:35:48

一旦确定了所需的LSP文件,请使用APPLOAD和Startup Suite为每个AutoCAD会话自动加载它们。

resullins 发表于 2022-7-6 07:40:41

啊。。。。我明白你在说什么。现在这里有一个问题,在错误中,GWelch似乎没有连接到服务器。它试图在C盘上寻找lsp。。。。
 
我看你是对的,没有找到合适的文件来加载ETload命令。。。。但可能是因为没有连接到服务器?
 
@格沃奇:我同意你需要找到那个文件。。。我只是想理解其余的代码。

Lee Mac 发表于 2022-7-6 07:43:46

 
众所周知,StartupSuite在某些版本中存在漏洞——使用ACADDOC要可靠得多。lsp在启动时加载程序。
 
 
结果,以下是代码流程的简短说明:
 
通过将“whload”函数重命名为“ETload”,可以解决该问题。

GWelch 发表于 2022-7-6 07:45:36

 
我试试看。
 
 
 
如果我的无俱乐部感现在还没有完全显现出来,那么如何重新载入《阿卡多克》。lsp?只有重启Acad才能解决这个问题吗?
页: [1] 2
查看完整版本: Lisp例程加载问题u