0

現在、いくつかの古い AutoCAD プラグインを VBA から VB.NET に書き直しています。結局のところ、上記のプラグインの (かなり大きな) 一部は LISP で実装されており、そのままにしておくように言われました。そのため、AutoCAD で .NET から LISP コードを実行すると問題が発生しました。現在、そのために必要なプロセスを説明しているオンラインのリソースがいくつかありますが (このようなもの)、それらはすべて、lisp ファイル/関数が既に読み込まれていることを当然のことと考えています。現在、変換方法を理解しようとして頭を悩ませている VBA 関数は"(LOAD ""<file>"")"、.最初から最後まで実行され、それが機能します)。

だから私の質問はです。.NET プラグインから autocad に Lisp ファイルをロード (および実行) するにはどうすればよいですか?

4

1 に答える 1

1

sendcommandわかりました。.NET経由には 2 つの方法があります。

最初に理解する必要があるの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 ( ActiveDocumentVBA とまったく同じように動作する AcadDocument オブジェクト)。このドキュメントは、VBA と同じものをSendCommand持ち、VBA と同じように使用します。

自動実行の部分について詳しく説明していただければ、それもお手伝いできます。

于 2013-07-07T21:45:59.950 に答える