UI ツール .NET コントロールを使用して Inventor UI を作成する

このセクションでは、Visual Studio を使用して、Inventor アドインの内部で実行される単純な Windows フォームのユーザ インタフェースを作成する方法を示します。Inventor アドインを作成した経験があることを前提とし、UI ツール コントロールを使用することに焦点を当てています。実際の Inventor アドインには、さまざまな UI ツール コントロールを含むフォームが表示される[UI を表示]ボタンが含まれています。

UI ツールへの参照を追加する

UI ツール コントロールをアドイン フォームに追加する前に、最初に Visual Studio プロジェクトに UI ツール アセンブリへの参照を追加します。UI ツールを使用する必要がある 2 つの DLL 参照、Autodesk.ETO.UI.dll、Autodesk.ETO.UI.Intent.dll があります。コア Intent Autodesk.Intent.API.dll、および Autodesk.IntentBase.dll アセンブリへの参照も必要です。最後に、この UI は Inventor のアドインとして実行されるため、Autodesk.Inventor.Interop.dll への参照が必要です。

これらの DLL の参照を追加したら、Visual Studio ツールボックスからさまざまな UI ツール コントロールを追加します。これらのコントロールは、[ETO Series Studio コントロール]という名前のタブのツール ボックスにあります。

IntentUIProject

IntentUIProject コントロールは、UI ツールのコントローラとして使用されます。プロジェクト レベルのすべての情報が格納され、すべての UIParts を管理します。他の UI ツール コントロールを機能させるには、IntentUIProject をツールボックスからフォームにドラッグして UI に追加します。

既定では、IntentUIProject は、Intent モデルへの変更が行われたときに自動的に更新するためのグラフィックスを発生しません。この動作は、時間がかかる 1 つずつのグラフィックスの更新を待たずに一連の変更を実行できるようにします。ただし、サンプル プロジェクトはシンプルなため、著しいパフォーマンス負荷をもたらさずに自動更新可能です。フォームに追加した IntentUIProject に移動して、[プロパティ]で[グラフィックスを自動的に更新しますか ?]をTrue に設定します。

UIPartTree、UIPropertyGrid、UIMessages

3 つの残りのコントロールを UI に追加する前に、いくつかの SplitterPanels を追加します。フォーム内で簡単に配置やサイズの変更をすることができます。UIPartTree は左側になり、UIPropertyGrid と UIMessages は右側に縦にスタックされます。

ここで、対応するコントロールを SplitterPanels 内のそれらの場所にドラッグし、ドッキング プロパティを[塗り潰し]に設定します。

これで、コントロールは希望するフォーム上にあります。次に、これらを最初に追加した IntentUIProject コンポーネントに繋ぎます。PartProvider プロパティを設定する最も簡単な方法は、Visual Studio デザイナー内から行うことです。UIMessages コントロールおよび UIPropertyGrid コントロールのパーツ プロバイダを UIPartTree のコントロールに設定します。

UIPartTree コントロールのパーツ プロバイダをコードの UIProject コントロールに設定します。

PartProviders

PartProviders は、Autodesk.ETO.UI.dll からの IPartProvider インタフェースを実装しているすべてのコンポーネントです。このインタフェースは、そのコンポーネント内の現在選択している UIPart を追跡します。たとえば、UIPartTree は IPartProvider を実装し、その選択された UIPart は、ツリーで選択された UIPart のいずれかです。IntentUIProject は、PartProvider でもあります。ただし、その選択された UIPart は常にモデルのルート パーツです。このため、Intent モデルのルート パーツは UIPartMixin にミックスする必要があります。

多くのコンポーネントは、パラメータとして PartProviders を受け入れます。これらは、参照される PartProvider 内で現在選択されているパーツに関する最新情報を保持することができます。UIPropertyGrid は、PartProvider を受け入れるコントロールの例です。UIPropertyGrid PartProvider プロパティを UIPartTree に設定することができます。ツリー内の新しい UIPart を選択するたびに、UIPropertyGrid は新しく選択されたパーツのプロパティでそれ自体を自動的に更新します。

いくつかのコントロールは、IPartProvider を実装し、また PartProvider をプロパティとして受け入れます。UIPartTree はその一例です。PartProvider プロパティを設定することにより、UIPartTree のルート ノードを設定します。この場合は、UIPartTree をモデル全体にするために、以前追加した IntentUIProject に PartProvider プロパティを設定します。UIPartTree のルートはモデルのルート UIPart であるため、選択した IntentUIProject の UIPart は常にルートになります。

次のイメージは、UI 内のさまざまなコントロール間の PartProvider リレーションシップを示します。

UIPropertyGrid と UIMessages は両方とも PartProvider プロパティを UIPartTree に設定されています。UIPartTree は、PartProvider を IntentUIProject に設定されています。

Inventor UI アドインを実行する

最初に、Inventor アドインの UI のフォームを作成し、PartProviders 使用してすべての UI ツール コントロールを Intent モデルに配置して繋ぎます。アドインをビルドし、Inventor を実行することができます。テーブル アセンブリ("Table.iam")を開くと、1 つの[UI を表示]ボタンが含まれている[Autodesk ETO UI]リボン タブがあります。このボタンは、作成したフォームが表示され、Intent デザインに基づいて UI ツール コントロールが設定されます。サンプルには、アドインを登録して正しい場所にコピーするためのビルド後の手順が含まれています。トラブル シューティングが必要な場合、詳細についてはサンプルの Readme ファイルを参照してください。