使用.NET在autocad中加载(并执行)lisp文件

时间:2013-07-03 13:14:05

标签: vb.net autocad autocad-plugin autolisp

我目前正在将一些旧的AutoCAD插件从VBA重写为VB.NET。事实证明,所述插件的一个(相当大的)部分是在LISP中实现的,我被告知要离开它。因此问题变成了从.NET运行AutoCAD中的LISP代码。现在,有一些在线资源解释了这样做的必要过程(如this one),但所有这些资源都理所当然地认为已经加载了lisp文件/函数。我正在试图弄清楚如何转换的VBA函数是"(LOAD ""<file>"")",并且脚本的构建方式是它在加载时自动执行(这是一个简单的脚本,没有' t寄存器功能,只是从头到尾运行并且确实是这样。)

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

1 个答案:

答案 0 :(得分:1)

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

您需要了解的第一件事是.NET中不存在ThisDocumentThisDocument是编写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

AcadApplicationActiveDocument(一个行为与VBA完全相同的AcadDocument对象)。 本文档与您的VBA具有相同的SendCommand,使用它与在VBA中完成的方式相同。

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