0

我目前正在将一些旧的 AutoCAD 插件从 VBA 重写为 VB.NET。事实证明,所述插件的(相当大的)部分是在 LISP 中实现的,我被告知不要这样做。所以问题变成了在 .NET 的 AutoCAD 中运行 LISP 代码。现在,网上有一些资源解释了这样做的必要过程(比如这个),但他们都理所当然地认为 lisp-files/functions 已经加载。我目前正在挠头试图弄清楚如何转换的 VBA 函数是 a "(LOAD ""<file>"")",并且脚本的构建方式是它在加载时自动执行(它是一个简单的脚本,不注册函数,只是从头到尾运行并做到这一点)。

所以我的问题是。如何从 .NET 插件加载(并因此执行)AutoCAD 中的 lisp 文件?

4

1 回答 1

1

好的,有两种方法可以sendcommand通过 .NET。

您需要了解的第一件事是ThisDocument.NET 中不存在。 ThisDocument是编写 VBA 代码的文档,但由于您的插件与文档无关,因此它是独立的,您必须从Application对象中获取文档。

您可以通过以下方式访问应用程序:

Autodesk.AutoCAD.ApplicationServices.Application

如果要将其转换为与 VBA 中相同的 Application 对象,具有相同的方法和功能

using Autodesk.Autocad.Interop;
using Autodesk.Autocad.Interop.Common;

AcadApplication App = (AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication;

第一个应用程序有MdiActiveDocument,您可以从中调用Editor并发送书面命令,或者SendStringToExecute按照其他答案中的说明调用 。

AcadApplicationhas (行为与 VBA 中完全相同的ActiveDocumentAcadDocument 对象)。本文档与SendCommand您的 VBA 相同,使用方式与在 VBA 中相同。

如果您可以更好地解释自动执行部分,我也可以提供帮助。

于 2013-07-07T21:45:59.950 回答