レッスン2:開発環境を理解する

Autodesk Support

2023年3月31日


初めての AutoCAD プラグインの概要 > レッスン 1 > レッスン 2 > レッスン 3 > レッスン 4 > レッスン 5 > レッスン 6 > レッスン 7 >> レッスン 8

前のレッスンでは、少量のVisual Basic .NETコードからビルドしたプラグインを実装することで、AutoCADの生産性を向上させる方法を説明しました。

.NET (または.NET Framework)は、プログラマがソフトウェアアプリケーションを作成および拡張できるようにするMicrosoftによって作成されたテクノロジです。プログラマは、.NET Frameworkを使用して、新しいソフトウェアアプリケーションを最初から作成したり、2つのソフトウェアアプリケーション間の通信や相互運用性を実装したり、プラグインを実装してソフトウェアアプリケーションを拡張することができます(AutoCADの場合は、ここで行います)。詳細については、「追加トピック」セクションを参照してください。

前のレッスンでコードを作成して実行したときの動作を詳しく見てみましょう。

フィードバックを提供する: この AutoCAD トレーニングまたはこのレッスンに関するフィードバックを email:%00a0myfirstplugin@autodesk.com から提供してください

「ビルド」コードとは何ですか?

レッスン1でVisual Studioコミュニティに入力したコードは、コンピュータが理解して実行できるコードに変換する必要のある、人間が読める一連の命令(ソースコード)でした。実行した「ビルド」では、生成された実行コードをAutoCADにロードできるDLL (ダイナミックリンクライブラリ)にパッケージ化しました。

次のスクリーンショットは、レッスン1でVisual Studioコミュニティを使用して作成した、関連するプログラムデバッグデータベース(DLLのトラブルシューティング時に追加情報を提供します)とともに、DLL形式の出力を示しています。DLLがコンパイルされるパスは、Visual Studioコミュニティプロジェクト設定で指定され、既定では、Visual Studioコミュニティプロジェクトフォルダのbin\Releaseまたはbin\Debugサブフォルダに設定されます(DLLのリリースバージョンまたはデバッグバージョンをビルドしている場合に応じて’異なります)。

プログラミング言語と開発ツールを選択する

人間が異なる言語を使用してコミュニケーションを行うように、AutoCADプラグインを作成する際に使用できるさまざまな言語オプションがあります。このガイドでは、強力な汎用プログラミング言語であるVisual Basic .NETを選択しました。Visual Basic .NETは、言語の構文が他の多くの言語(C#やC++など)よりも読みやすいため、プログラムを学習するユーザに特に人気があります。

Visual Basic .NETコードの開発に使用できるツールが多数あります。SharpDevelopやMonoDevelopなどのオープンソースツールから、Microsoftの’主力製品、プロフェッショナル開発環境、Visual Studioまでさまざまなツールがあります。このチュートリアルは、Visual Basic .NETアプリケーショ’ンを作成するための無償バージョンであるVisual Studioコミュニティを使用していることを前提としています。

Visual Studio Community は、コードの作成と管理を容易にする各種のツール、メニュー、ツールバーで構成されているため、統合開発環境(IDE)です。

Visual Studio Community のプロジェクト システムは、ソリューション ファイルとプロジェクト ファイル、およびプロジェクトに属する個々のファイルであるプロジェクト アイテムで構成されます。ソリューションは、1つまたは複数のプロジェクトのコンテナです。各プロジェクトは、ソースファイルやアイコンなどのプロジェクトアイテムのコンテナとみなすことができ、そのほとんどが結果として生成される実行ファイル(EXEまたはDLL)にコンパイルされます。Visual Studioコミュニティには、ロードされたソリューションのコンテンツをツリー表示形式で編成して表示するソリューションエクスプローラがあります。

Visual Studioコミュニティインタフェースには、テキストエディタとインタフェースデザイナも含まれています。これらは、編集するファイルの種類に応じて、メインウィンドウに表示されます。テキストエディタでは、AutoCADプラグインのVisual Basic .NETコードを入力します。このエディタには、IntelliSenseや折りたたみ可能コードセクションなどの高度な機能と、ブックマークや行番号の表示など、よりクラシックなテキスト編集機能が用意されています。

IntelliSense は、プログラマの生産性を大幅に向上させる Visual Studio ファミリの非常に重要な機能です。使用可能なオブジェクトと入力した文字に基づいて書き込まれるコードの候補を自動的に提供します。レッスン1のコードを入力した場合は、IntelliSenseが動作していることがわかります。そのため、コピーして貼り付けないようにすることをお勧めします。

Visual Studioコミュニティの主な機能の1つは、Visual Basic .NETコードを実行可能ファイルにビルドできることです。ビルドプロセス中に、言語コンパイラはコードに対してさまざまなチェックと解析を実行します。このようなチェックの1つは、コードがVisual Basic .NET言語の構文ルールに準拠していることを確認することです。コンパイラは、変数が適切に定義されているかどうかなど、その他のさまざまなチェックも実行します。検出されたエラーは、メインウィンドウの下部にあるエラーリストウィンドウを介して報告されます。レッスン1のコードの入力に誤りがある場合は、プラグインをビルドしようとしたときに既にこの問題が発生している可能性があります。

 Visual Studioコミュニティの使用を確認する

このセクションでは、前のレッスンで使用したVisual Studio Communityを使用して実行した手順を確認します。ただし、これらの関数は、ユーザが一般的なプログラミングについて学習し、コードを作成した内容に基づいて配置します。

1.最初の手順では、Visual Studioコミュニティを起動しました。 

2.次に、AutoCAD プラグインタイプの新しい Visual Basic .NET プロジェクトを作成します。このプロジェクトテンプレートは、AutoCAD .NETウィザードをインストールしたときに追加されました。

このガイドで使用する開発言語は Visual Basic .NET であるため、Visual Studio Community で Visual Basic を使用しているため、[新規プロジェクト]ダイアログの[インストールされたテンプレート]の下に Visual Basic が表示されます。AutoCAD プラグイン テンプレートは、基本的にはクラス ライブラリ テンプレートですが、いくつかの追加設定があります。

このダイアログボックスの中央のセクションでは、作成できるさまざまなタイプのアプリケーションを確認しました。作成するアプリケーションのタイプに応じてテンプレートを選択します。

ダイアログの下部に入力した名前は、ソリューション内のプロジェクトを識別するために使用されます。

3.空のプロジェクトが作成され、コア.NETコンポーネントへの標準プロジェクト参照がいくつか含まれ、AutoCAD API (AcCoreMgd.dll、AcMgd.dll、およびAcDbMgd.dll)を定義する3つのファイルへの参照も含まれます。プロジェクトには、2 つの Visual Basic .NET クラス ファイル(MyCommands.vb および MyPlugin.vb)も含まれます。このチュートリアルでは必要ないため、必要に応じて MyPlugin.vb ファイルをプロジェクトから削除した可能性がありま’す。これらのファイルには、単純なボイラープレートコードが含まれています。ソリューションエクスプローラでいずれかのファイルをクリックすると、テキストエディタウィンドウに含まれるコードが表示されます。

4.マイ プロジェクト設定の[参照]セクションを確認し‘、AcCoreMgd.dll、AcDbMgd.dll、および AcMgd.dll が正しく参照されていることを確認しました(注: AcCoreMdg.dll は、AutoCAD 2013 以降のバージョンのものです)。


5.ソリューションを保存すると、プロジェクトの内容を表す物理ファイルがコンピュータのハードドライブに作成され’、後で開いて編集できるようになります。プロジェクトを閉じてから再度開き、Visual Studioコミュニティでプロジェクトファイルが正しく解析されたことを確認しました。

6. AcCoreMgd.dllAcMgd.dll、および AcDbMgd.dll には、プラグインで最も一般的に使用する AutoCAD API の定義が含まれています。これらのファイルは、常にAutoCADプラグインプロジェクトで参照します。他の人も参照することもあります。

  • AcMgd.dll には、AutoCAD アプリケーション自体をコントロールするための API が含まれています。これにより、ドキュメントを開く、閉じる、印刷などのカスタム コマンドを定義できます。
  • AcDbMgd.dll には、DWG ファイルの内容を作成、編集、照会するための API が含まれています。
  • AutoCAD 2013から、AcMdg.dllのAPIは、AcMgd.dllとAcCoreMgd.dllの間で分割されていました。AcCoreMgd.dllにはAutoCADアプリケーションのログインに関連するAPI (選択セット、コマンド、キーワードなど)が含まれ、AcMgd.dllには‘、ダイアログなどユーザインタフェー’ス関連のAPIが含まれます。

AutoCADプラグインプロジェクトを作成すると、AutoCAD .NETウィザードコンフィギュレータダイアログで、既定でこれらのオプションが選択されています(選択を解除することはできま’せん)。無視した他のAPI定義ファイルを含めるオプションがありました。

7. 次に、AutoCAD APIを使用してVisual Basic .NETコードをプロジェクトに追加しました。つまり、ブロック属性を回転したときの動作を修正する手順をAutoCADに指示します。

コードを開発する際’は、時々ソリューションを構築し、コードにエラーが発生していないかどうかを確認することをお勧めします。ソリューションを構築する際に、必ずしもコードが完全でなくても機能するとは限りません。この方法は、コードが完了した後にトラブルシューティングに時間がかかる可能性を回避するのに役立ち、ビルドが開始する前に編集したソースファイルを自動的に保存するという利点もあります。

Visual Studio コミュニティ内でソリューションをビルドするには、[ビルド]プルダウン メニューから[ソリューションをビルド]を選択します。

ビルド プロセスが成功した場合、Visual Studio Community アプリケーション フレームの左下隅にビルド成功ステータスが表示されます。コードにエラーがあった場合、Visual Studio Communityには、検出されたエラーを説明するエラーリストが表示されます。また、コード内のエラーに青色で下線が付けられます。次’に、レッスン1で入力したコードに誤りを意図的に追加した例を示します。

このレッスンでは、プロジェクトを作成したときの動作と、Visual Basic .NETおよびVisual Studioコミュニティの背景情報について簡単に説明しました。前のレッスンで学習した基本的なAutoCADプラグインの作成手順を復習し、プログラミングについて学習した内容のコンテキストに置きました。

追加トピック

Visual StudioコミュニティとVisual Studio Professional
このガイドでは、Visual Studioコミュニティを使用しています。これはVisual Studioの無償版であるため、学習を開始する’には優れたツールです。Microsoftは、学生、趣味、その他のパートタイムのプログラマを対象に、Visual Studioのコミュニティエディションを開発しました。IntelliSenseなど、Visual Studio Professionalのほとんどの機能を使用できますが、特定の制限があります。たとえば、プロジェクトテンプレートの数が少なく、コードのデバッグやトラブルシューティングに関するオプションが制限されています。この入門ガイドを超えてプラグイン開発に真剣に取り組んでいる場合、特に市販のプラグインの開発を開始する場合は、Visual Studio製品ファミリの最も機能の強いメンバーの1つに投資することをお勧めします。

*Visual Studioには複数の‘プロ’フェッショナル版があります。詳細については、Microsoft Visual Studio の Web サイトを参照してください。

.NETとは
このレッスンの残りの部分には、かなりの専門用語が含まれています。初めて’読むとき’に、完全に理解できなくても心配しないでください。独自のプラグインをいくつか作成した後’で.NETに慣れると、より意味が深くなります。

.NET Frameworkは、Microsoft® Windows®オペレーティングシステム*上に配置され、すべての.NETアプリケーションの基盤となるプラットフォーム、ライブラリ、およびサービスを提供するソフトウェアフレームワークです。このサービスには、メモリ管理、ガベージコレクション、共通タイプシステム、クラスライブラリなどが含まれます。

* .NETのサブセットは、オープンソースのMonoプロジェクトを介してもMicrosoft® Silverlight®を介しても、他のオペレーティングシステムでも使用できますが、このガイドのトピックではありません。Microsoft Windowsでは、.NETの使用だけに焦点を当てます。

.NET Frameworkには何が含まれていますか?
フレームワークには、次の2つの主要なコンポーネントが含まれています。

1.共通言語ランタイム(CLR): これは、コードの実行を管理する .NET Framework のエージェント(または実行エンジン)です。このため、このランタイムをターゲットに書き込まれるコードはマネージコードとも呼ばれます。マネージコードはすべてCLRの監督下で実行されますが、これはどういう意味ですか?CLRは、メモリ管理(不要になった場合に他のタスクで再利用するためにコンピュータのメモリを自動的に解放する’)、エラー(または例外)処理、複数の実行スレッドの使用を管理し、異なるタイプのオブジェクトの使用に関するルールを順守するなどのコアサービスを提供することにより、コードを管理します。CLRは、実際には.NET Frameworkの基礎です。 

2. .NET Framework クラス ライブラリ - 名前の通り、これはユーザ独自のコードから .NET アプリケーションを開発するときに使用できるオブジェクト タイプのライブラリまたはコレクションです。これらの.NETアプリケーションは、Windows (コマンドプロンプトベースでもグラフィカルユーザインタフェースを使用しても)、Webまたはモバイルデバイスを対象としています。このライブラリは、.NET Frameworkを使用するすべての言語で使用できます。

前述のように、CLRは、実行コードが共通型システム(CTS)に準拠していることを確認することによって、コードの堅牢性を向上させます。CTSによって、言語に関係なく、すべての.NET (またはマネージド)コードが同じオブジェクトタイプのセットを使用し、同じ環境で連携できるようになります。この機能により、任意の開発言語でアプリケーションを記述し、他の.NET言語を使用するプログラマが記述したコンポーネントやコードを使用できるようになります。

実行可能ファイルを作成する
EXEにコードをビルドすると、言語固有のコンパイラを使用して共通中間言語(CIL、MSILとも呼ばれる)コードにコンパイルされていました。CILはCPUに依存しない命令のセットで、Windowsオペレーティングシステム上のCLRによって実行できます。CILは通常、32ビットシステムと64ビットシステム間で移植することができ、さらに、Windows以外のオペレーティングシステムとの互換性も備えています。VBソースコードから生成されたCILコードは、.NETアセンブリにパッケージ化されました。このようなアセンブリは、CILコードのライブラリで、ポータブル実行可能(PE)フォーマット(CILとその関連メタデータの両方を含む)に格納されています。アセンブリは、プロセスアセンブリ(EXE)またはライブラリアセンブリ(DLL)のいずれかです。

このガイドのコースでは、AutoCADと通信するプロセスアセンブリ(EXE)という特定のタイプのAutoCADプラグインの開発に焦点を当てます。開発に伴うオーバーヘッドのため、AutoCADのメモリスペース内でロードおよび実行される通常のライブラリアセンブリ(DLL)であるAutoCADアドインを見ても時間は費やすことになりません。AutoCADで動作するEXEを実装する方が、アドインを開発する場合よりも簡単なのは、そのユーザインタフェースに関連する理由の1つです。たとえば、リボンボタンを追加して実行ファイルをAutoCADのユーザインタフェースとシームレスに統合する必要はありません。

実行ファイルを実行する

.NETアセンブリの実行中に、CIL (アセンブリ内に常駐)がCLR s just-in-time (JIT)コンパイラを介して渡され、ネイティブ(またはマシン)コードが生成されます’。CILのネイティブコードへのJITコンパイルは、アプリケーションの実行時に発生します。実行中にすべてのコードが必要なわけではないため、JITコンパイラは必要な場合にのみCILを変換するため、時間とメモリを節約できます。また、生成されたコードはメモリに格納されるため、再コンパイルしなくても後で使用することができます。

このプロセスの最後の手順では、コンピュータのプロセッサによってネイティブコードが実’行されます。

.NET アプリケーションの構築プロセスの詳細については、MSDN ライブラリを参照してください。

初めての AutoCAD プラグインの概要 > レッスン 1 > レッスン 2 > レッスン 3 > レッスン 4 > レッスン 5 > レッスン 6 > レッスン 7 >> レッスン 8



この情報は役に立ちましたか?


サポートが必要な場合は、Autodesk Assistant にお問い合わせください!

Assistant が回答を見つけたり、担当者に連絡するお手伝いをします。


オートデスクではどのようなサポートが提供されますか?

ご利用可能なサポートの種類は、サブスクリプションのプランによって異なります。現在のプランでご利用可能なサポート レベルをご確認ください。

サポート レベルを確認