モデルに変更を通知するためにアップデータを登録する必要があります。アプリケーション レベル の UpdaterRegistry クラスは、アップデータのオプションの登録および登録解除、操作を行う機能を提供します。アップデータは任意の API コールバックから登録することができ、またアプリケーション規模、またはドキュメント固有として登録することができます。ドキュメント固有とは、アップデータが指定のドキュメントに対して行われた変更によってのみトリガされることを意味します。UpdaterRegistry 機能を使用するには、Revit アドインがマニフェスト ファイルに登録されている必要があり、また任意のアップデータ(GetUpdaterId()から取得)のUpdaterId.GetAddInId()によって返された ID がアドインのマニフェスト ファイルと一致する必要があります。アドインは属していないアップデータを追加、削除、修正できません。
UpdaterRegistry.RegisterUpdater()メソッドの呼び出しに加えて、アップデータはAddTrigger()メソッドから 1 つ以上の更新トリガを追加する必要があります。これらのトリガは、UpdaterRegistry に対してどのイベントが Updaters Execute()メソッドをトリガして実行するか示します。これらはアプリケーション規模で設定するか、または特定のドキュメントに加えられた変更に適用することができます。更新トリガは、変更範囲と変更タイプの組み合わせによって指定されます。
変更範囲は 2 つのいずれかです。
変更タイプには使用可能ないくつかのオプションがあります。ChangeTypes は Element クラスの静的メソッドから取得されます。
ジオメトリの変更は、要素タイプの変更、プロパティとパラメータの修正、移動と回転、または再生成中に他の変更された要素から要素に強制的に加えられた変更など、多くの考えうる原因によってトリガされることに注意してください。
また、最後のオプションである要素の変更は、既存の要素の修正のアップデータのみをトリガし、新しく追加された、または削除された要素のアップデータをトリガしないことにも注意してください。また、インスタンスのトリガを使用する場合は、特定のタイプの修正のみがアップデータがをトリガします。インスタンスのジオメトリの変更などのインスタンス自体に影響する変更が、アップデータをトリガします。ただし、テキスト パラメータに対する変更など、インスタンスを直接修正しない変更、およびインスタンスに対する明確な変更とならない変更は、インスタンスにアップデータをトリガしません。これらの変更に基づいてトリガするには、タイプがトリガーの変更範囲内に含まれている必要があります。
Revit が正しい順序で実行するために複数のアップデータを並べ替える主な方法には、指定のアップデータによって返される ChangePriority を調べる方法があります。さらに基本的な要素セットの優先順位を報告するアップデータ(例: GridsLevelsReferencePlanes)が、これらの基本的な要素(例: 注釈)によって駆動される要素の優先順位を報告するアップデータより前に実行します。アップデータが修正する要素の変更の優先順位を適切に報告することは、アプリケーション ユーザにとってメリットがあります。別のアップデータが変更を行うため、Revit がアップデータを 2 度実行する必要性が低くなります。
同じ変更の優先順位を報告するアップデータの場合は、実行は UpdaterId の並べ替えに基づいて順序付けされます。UpdaterRegistry.SetExecutionOrder()メソッドを使用すると、コードが 2 つのアップデータの ID を知っていれば、任意の 2 つの登録アップデータ(他の API アドインによって登録されたアップデータでも可)の実行順序を設定できます。