Building Coder(Revit二次開発)-失敗処理API(上)

1944 ワード

Building Coderリンク:Failure API Take Two
Revit二次開発フォーラムリンク:Building Coder-失敗処理APIの翻訳(上)
Revit 2011における最新の失敗処理APIおよびSDKルーチン「ErrorHandling」について、失敗処理第1四半期に議論した.Revit APIの最も広範な用途の1つは、不要な警告とエラーを遮断することです.Revitの以前のバージョンでは、DialogShowingイベントを簡単に使用することができました.しかし、私の他の2つのブログediting elements inside groupsとsuppressing an unwanted dialogueで示したように、失敗処理APIはより強力で完備したソリューションを提供します.
以下はJoe Ye(伝説の葉雄進先生)が整理した失敗処理APIの使い方です.
モデルにエラーが発生した場合、Revitは通常、警告またはエラーメッセージを報告する形でユーザーにプロンプトを表示します.たとえば、2つの壁の部分が重なると、Revitは次の警告メッセージをポップアップします.
Revit 2011は、これらのタイプの失敗を発行および処理するための失敗処理APIを開示する.失敗したパブリケーションAPIは、新しいカスタム失敗を定義および登録するために使用することができる.カスタマイズに失敗した場合は、プラグインで自由にパブリッシュできます.モデルに対する操作が終了すると、失敗したパブリッシュAPIはRevitの失敗を削除または解決することができる.プログラムは、失敗した処理中にモデルに対してさらに操作することができる.失敗処理APIが失敗を処理した場合、ユーザは警告やエラーに気づかない可能性がある.それらはすでにあなたのプログラムに処理されているからです.
パブリッシュエラーパブリッシュAPIは絶対に使いやすいタイプです.まず、外部アプリケーションのOnStartupメソッドに新しいエラー定義を登録できます.通常、その重大度とソリューションタイプを設定する必要があります.次は、新しい警告を登録する例です.カスタマイズされたエラーが登録されると、プログラムで自由に使用できます.
public Result OnStartup( UIControlledApplication a )
{
  // Create failure definition Ids
 
  m_idWarning = new FailureDefinitionId( new Guid(
    "0C3F66B5-3E26-4d24-A228-7A8358C76D39" ) );    // VS      GUID   
 
  // Create failure definition and add resolution
 
  m_fdWarning
    = FailureDefinition.CreateFailureDefinition(
      m_idWarning,
      FailureSeverity.Warning, //     
      "I am the warning." );
 
  m_fdWarning.AddResolutionType(
    FailureResolutionType.MoveElements,
    "MoveElements", typeof( DeleteElements ) );    //       
 
  return Result.Succeeded;
}
Document.PostFailure()メソッドは、ドキュメントオブジェクトに現在エラーがあることを示すために使用されます.
transaction.Start();    //           
FailureMessage fm = new FailureMessage( m_idWarning );
m_doc.PostFailure( fm );
transaction.Commit();
エラーは、トランザクションのコミット時に検証され、必要に応じてエラーの解決もトランザクションのコミット時に行われます.
未完待機・・・