外部コマンド

技術的には、外部コマンドは外部公開された .NET オブジェクトであり、Autodesk.Revit.UI.IExternalCommand インタフェースをサポートしています。さらに、Revit がコマンドを「認識」して使用するには、そのようなオブジェクトごとに 1 つのエントリを持つ .addin マニフェスト ファイルを適切なフォルダ内に配置する必要があります。

IExternalCommand インタフェース

インタフェースの宣言(VB.NET)は次のとおりです。

コード領域: VB.NET IExternalCommand インタフェース
Function Execute(ByVal commandData As Autodesk.Revit.UI.ExternalCommandData,
ByRef message As String,
ByVal elements As Autodesk.Revit.DB.ElementSet)
As Result

パラメータ

  • commandData: このパラメータで渡されるオブジェクトであり、実行されるコマンドに重要な情報を含みます。このデータには Autodesk Revit Application オブジェクトと現在アクティブなウィンドウが含まれます。
  • message: message 文字列を設定すると、コマンド終了時にユーザに特定のメッセージを表示することができます。このメッセージの表示方法は、関数の戻り値によって異なります。詳細については、備考セクションを参照してください。
  • elements: 最初は空に設定されており、Autodesk Revit 要素を含めることができます。コマンドが終了したときに、戻り値に応じて、この中の要素を表示できます。詳細については、備考セクションを参照してください。

戻り値

result: 戻り値は次のいずれかになります。

  • Success : 未処理のエラー条件なしに、予想通りにコマンドが成功した場合に返されます。Autodesk Revit ユーザ インタフェースでは、外部コマンドは、元に戻すことができる操作として表示されます。
  • Cancelled: この値は、ユーザがこのコマンドのキャンセルをリクエストしたことを示します。外部コマンドの実行中に Autodesk Revit オブジェクトに行った変更はすべて取り消されます。メッセージが表示される場合があります。備考セクションを参照してください。
  • Failure: 修復不可能な何らかの状態で外部コマンドが失敗したことを示します。外部コマンドの実行中に Autodesk Revit オブジェクトに行った変更はすべて取り消されます。メッセージが表示されます。備考セクションを参照してください。

備考

コマンドがキャンセルされた、または失敗した場合、メッセージと要素パラメータが使用されます。

  • Cancelled: 外部コマンドがキャンセルされ、メッセージ パラメータが外部コマンドによって設定されている場合、実行が Autodesk Revit に戻されたときに、メッセージが表示されます。メッセージ パラメータが設定されていない場合、メッセージは表示されず、コマンドはサイレントに終了します。
  • Failed: 外部コマンドが失敗すると、メッセージ パラメータのコンテンツが表示されます。要素セットに Autodesk Revit 要素が含まれている場合は、エラー メッセージが表示される際に、これらの要素がハイライト表示されるため、開発者はユーザに問題の要素を示すことができます。

Autodesk Revit API 外部コマンドを使用する

  1. ユーザは、Autodesk Revit で、プロジェクトを開きます/作成します。
  2. ユーザは、[アドイン]タブの[外部ツール]プルダウンから外部コマンドを選択します。
  3. ユーザは、外部ツール プログラムを起動する前に、複数の Autodesk Revit 要素を選択することもできます。複数の要素を選択した場合、選択された要素のみでプログラムの機能が実行されます。
  4. API プログラムは Autodesk Revit からフォーカスを取得し、必要なタスクを実行します。通常、ダイアログ ボックスは、アプリケーションがその作業を完了する前に、ユーザの入力を取得する必要があります。
  5. アドイン ツールが機能を完了するか、ユーザがそのアドインを終了した場合、プログラムは必要に応じて Autodesk Revit モデルを更新し、外部コマンドから復帰して、Autodesk Revit にフォーカスを戻します。

外部コマンド オブジェクトのライフタイム

他のコマンドや編集モードが Autodesk Revit 内でアクティブになっていない場合、登録されている外部コマンドが有効になります。選択すると、コマンド オブジェクトが作成され、Execute メソッドが呼び出されます。このメソッドが Autodesk Revit に値を返すと、コマンド オブジェクトが破棄されます。ここでオブジェクトが破棄されることで、コマンド実行間でオブジェクトにデータを保持することはできません。データを保持するには、外部ファイルやデータベースを使用します。Autodesk Revit プロジェクト内にデータを保持するには、共有パラメータ メカニズムを使用して、このデータを格納します。