网络重置后 Autocad 启动 LISP 代码损坏

网络重置后 Autocad 启动 LISP 代码损坏

我有一个网络上有几个不同的驱动器,本地安装了 AutoCAD。

我有一个用于 AutoCAD 的启动 LISP 例程,它可以加载各种其他 .lsp 文件,这些文件由位于网络各个驱动器中的 AutoCAD 中的自定义命令调用。

直到昨天,一切都运行正常,没有错误,始终加载所有 .lsp 文件。但在我重置网络上的几个驱动器后,位于这些驱动器中的 .lsp 文件不再被识别。

编程上没有任何变化。我已将所有网络位置重新添加到 AutoCAD 选项中的“受信任”和“支持文件”路径,并确保在 APPLOAD 菜单中加载了启动 LISP。

有任何想法吗?

答案1

假设您使用启动套件作为命令对话框的一部分APPLOAD来自动加载您的“启动”LISP 程序(然后随后加载其他程序文件),我建议使用该acaddoc.lsp文件来自动加载您的程序,因为这是一种更可靠的加载方法。

要使用 加载程序acaddoc.lsp,请执行以下步骤:

  1. 检查是否已acaddoc.lsp存在。为此,请打开 AutoCAD 到一个新的空白图形,然后在 AutoCAD 命令行中输入:

    (findfile "acaddoc.lsp")
    
    • 如果返回有效的文件路径,则在接下来的步骤中导航到该文件路径并acaddoc.lsp使用 Windows 记事本或其他纯文本编辑器打开并修改现有的文件。

    • 如果上述表达式返回nil,请打开 Windows 记事本(或其他纯文本/代码编辑器),并acaddoc.lsp在受信任的 AutoCAD 支持文件搜索路径中创建一个新的。

  2. 在 新行中acaddoc.lsp,输入所需的loadautoload表达式来加载您的自定义程序,例如:

    (load "MyProgram.lsp" "MyProgram.lsp failed to load.")
    
    (autoload "MyProgram.lsp" '("MyCommand"))
    
  3. 保存新的/修改的文件并在 AutoCAD 中打开新图形以自动加载它。


acaddoc.lsp该文件的一些背景信息

提供一些关于acaddoc.lspAutoCAD 中文件的性质和行为的背景信息:打开图形时,AutoCAD 将在工作目录(即活动图形所在的目录)和所有支持文件搜索路径(对话框选项卡中列出的路径FilesOptions中搜索文件名为acaddoc.lsp.

在存在系统变量的较新的 AutoCAD 版本中,此搜索1SECURELOAD才会考虑同样被列为受信任路径的路径。

找到这样的文件后,AutoCAD 将停止搜索并继续将 acaddoc.lsp 文件加载到活动图形命名空间中。

加载 LISP 文件的操作仅仅意味着读取文件的内容并且其中找到的任何 LISP 表达式都由 LISP 解释器进行评估。

这样,大多数用户会利用acaddoc.lsp在打开绘图时自动加载自定义程序,以便在绘图期间可以使用这些程序。与使用 Startup Suite 实现相同目的相比,这是一种更可靠、更可迁移的方法。


类似的自动加载文件

此外,请注意,这acaddoc.lsp不是唯一一个自动搜索并加载到活动绘图中的文件......

首次打开 AutoCAD 应用程序时,会自动加载一些文件,此后每次打开图形时都会重新加载其他文件。

这些文件中的大部分是应用程序本身的一部分,因此不应修改,但其他文件则保留供用户定制,如果它们尚不存在,则可以进行修改和创建。

以下是自动加载到 AutoCAD 中的各种文件的加载顺序,以及每个项目的简要说明:

  • acad.rx
    当 AutoCAD 启动时,此文件会加载各种 ObjectARX 应用程序。

  • acad20##.lsp
    此文件acad20##doc.lsp在不自动加载此类文件的版本中加载该文件。此文件应该不是被修改。

  • acad.lsp
    该文件的加载取决于 ACADLSPASDOC系统变量的设置:

    • ACADLSPASDOC = 0(默认)acad.lsp仅加载到 AutoCAD 会话中打开的第一个图形中,而不会加载随后打开的每个图形。

    • ACADLSPASDOC = 1加载acad.lsp到每个打开的图纸中。

    该文件保留供用户定制,旨在用于特定于应用程序的启动例程,因为文件中定义的所有函数和变量 acad.lsp仅在第一个绘图中可用。

    ACADLSPASDOC如果所有图纸都需要函数,则应该将函数和程序从acad.lsp文件移到文件中,而不是改变的值 acaddoc.lsp

  • acad20##doc.lsp
    每次打开图形时都会自动加载此文件,并加载autoloadAutoCAD 所需的函数定义和其他实用函数。此文件应该不是被修改。

  • acaddoc.lsp
    如上所述,如果找到,则此文件将自动加载到 AutoCAD 会话中打开的每个图形中。此文件对于加载 AutoLISP 函数库非常有用,每次打开图形时都可以使用。

    无论系统变量acaddoc.lsp的设置如何,该文件始终会随每个图形一起加载。ACADLSPASDOC

    由于 AutoCAD 将在支持文件搜索路径之前搜索工作目录并加载找到的第一个文件,因此用户可以在每个图形目录中acaddoc.lsp拥有不同的文件,这将为某些类型的图形或作业加载特定的 AutoLISP 例程。2acaddoc.lsp

  • acad.dvb
    对于启用 VBA 的版本,此文件将自动加载 VBA 项目。

  • 主要 CUI/CUIX 和相关文件
    一个CUIx文件包含多个基于 XML 的文件和图像文件,每个文件都包含可定制的用户界面元素的数据。CUIx文件取代了以前版本中用于定义菜单的CUIMNUMNS和文件。MNC

    主 CUIx 文件定义了 AutoCAD 中的大多数界面元素。

  • 企业 CUI/CUIX 和相关文件
    企业CUIx文件通常由 CAD 管理员控制,并可由许多用户从共享网络位置访问。

    此文件对用户而言是只读的,以防止文件中的数据被更改。CAD 管理员可以CUIx通过修改主CUIx文件然后将文件保存到共享网络位置来创建企业文件。

  • acetmain.mnl
    该文件加载 Express Tools 菜单组。

  • Express Tools LISP 和 MNL 文件
    Express Tools 程序所需的各种 LISP 和菜单文件都在这里加载。

  • 启动套件程序
    现在按照对话框中出现的顺序加载启动套件中的程序文​​件APPLOAD

    如上所述,在某些版本的 AutoCAD 中,启动套件会出现问题,因此我建议使用它acaddoc.lsp来加载绘图会话期间所需的功能和程序。

  • (S::STARTUP)
    该后初始化函数可用于在绘图编辑器中初始化绘图后执行操作。

    由于acad.lspacaddoc.lsp文件是在绘图初始化过程的早期加载的,因此从这些文件在运行时发出的命令可能会失败,因为命令行可能未在绘图中初始化。

  • acad.exe命令行开关/b
    命令行开关/b可用于在启动 AutoCAD 应用程序时运行脚本。以这种方式调用的任何脚本操作都将在绘图初始化完成后执行。

    可以在 AutoCAD 应用程序快捷方式图标的属性中的目标编辑框内设置命令行开关。


脚注

1引入此功能是为了防范 AutoCAD“病毒”,在这种病毒中,图形文件会与驻留在同一文件夹中的恶意文件一起发送给第三方acaddoc.lsp,这样当打开该图形文件时,AutoCAD 就会自动评估恶意acaddoc.lsp文件。

2SECURELOAD仅当系统变量设置为 时才有可能0

相关内容