Revit 2025 API
IUpdater Interface |
The interface used to create an updater capable of reacting to changes in the Revit model.
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntax
The IUpdater type exposes the following members.
Methods
| Name | Description | |
|---|---|---|
| Execute | The method that Revit will invoke to perform an update. | |
| GetAdditionalInformation | Auxiliary text that Revit will use to inform the end user when the Updater is not loaded | |
| GetChangePriority | Identifies the nature of the change the Updater will be performing Used to identify order of execution of updaters Called once during registration of the updater | |
| GetUpdaterId | Returns globally unique updater id - used to identify the Updater Called once during registration of the updater | |
| GetUpdaterName | Returns a name that the Updater can be identified by to the user |
Implement this interface and register an instance of the derived class with the UpdaterRegistry.
public class WallUpdaterApplication : Autodesk.Revit.UI.IExternalApplication { public Result OnStartup(UIControlledApplication application) { // Register wall updater with Revit WallUpdater updater = new WallUpdater(application.ActiveAddInId); UpdaterRegistry.RegisterUpdater(updater); // Change Scope = any Wall element ElementClassFilter wallFilter = new ElementClassFilter(typeof(Wall)); // Change type = element addition UpdaterRegistry.AddTrigger(updater.GetUpdaterId(), wallFilter, Element.GetChangeTypeElementAddition()); return Result.Succeeded; } public Result OnShutdown(UIControlledApplication application) { WallUpdater updater = new WallUpdater(application.ActiveAddInId); UpdaterRegistry.UnregisterUpdater(updater.GetUpdaterId()); return Result.Succeeded; } } public class WallUpdater : IUpdater { static AddInId m_appId; static UpdaterId m_updaterId; WallType m_wallType = null; // constructor takes the AddInId for the add-in associated with this updater public WallUpdater(AddInId id) { m_appId = id; m_updaterId = new UpdaterId(m_appId, new Guid("FBFBF6B2-4C06-42d4-97C1-D1B4EB593EFF")); } public void Execute(UpdaterData data) { Document doc = data.GetDocument(); // Cache the wall type if (m_wallType == null) { FilteredElementCollector collector = new FilteredElementCollector(doc); collector.OfClass(typeof(WallType)); var wallTypes = from element in collector where element.Name == "Exterior - Brick on CMU" select element; if (wallTypes.Count<Element>() > 0) { m_wallType = wallTypes.Cast<WallType>().ElementAt<WallType>(0); } } if (m_wallType != null) { // Change the wall to the cached wall type. foreach (ElementId addedElemId in data.GetAddedElementIds()) { Wall wall = doc.GetElement(addedElemId) as Wall; if (wall != null) { wall.WallType = m_wallType; } } } } public string GetAdditionalInformation() { return "Wall type updater example: updates all newly created walls to a special wall"; } public ChangePriority GetChangePriority() { return ChangePriority.FloorsRoofsStructuralWalls; } public UpdaterId GetUpdaterId() { return m_updaterId; } public string GetUpdaterName() { return "Wall Type Updater"; } }
Public Class WallUpdaterApplication Implements Autodesk.Revit.UI.IExternalApplication Public Function OnStartup(application As UIControlledApplication) As Autodesk.Revit.UI.Result Implements IExternalApplication.OnStartup ' Register wall updater with Revit Dim updater As New WallUpdater(application.ActiveAddInId) UpdaterRegistry.RegisterUpdater(updater) ' Change Scope = any Wall element Dim wallFilter As New ElementClassFilter(GetType(Wall)) ' Change type = element addition UpdaterRegistry.AddTrigger(updater.GetUpdaterId(), wallFilter, Element.GetChangeTypeElementAddition()) Return Result.Succeeded End Function Public Function OnShutdown(application As UIControlledApplication) As Autodesk.Revit.UI.Result Implements IExternalApplication.OnShutdown Dim updater As New WallUpdater(application.ActiveAddInId) UpdaterRegistry.UnregisterUpdater(updater.GetUpdaterId()) Return Result.Succeeded End Function End Class Public Class WallUpdater Implements IUpdater Shared m_appId As AddInId Shared m_updaterId As UpdaterId Private m_wallType As WallType = Nothing ' constructor takes the AddInId for the add-in associated with this updater Public Sub New(id As AddInId) m_appId = id m_updaterId = New UpdaterId(m_appId, New Guid("FBFBF6B2-4C06-42d4-97C1-D1B4EB593EFF")) End Sub Public Sub Execute(data As UpdaterData) Implements IUpdater.Execute Dim doc As Document = data.GetDocument() ' Cache the wall type If m_wallType Is Nothing Then Dim collector As New FilteredElementCollector(doc) collector.OfClass(GetType(WallType)) Dim wallTypes As System.Collections.Generic.IEnumerable(Of Autodesk.Revit.DB.Element) wallTypes = From element In collector _ Where element.Name = "Exterior - Brick on CMU" _ Select element If wallTypes.Count() > 0 Then m_wallType = wallTypes.Cast(Of WallType)().ElementAt(0) End If End If If m_wallType IsNot Nothing Then ' Change the wall to the cached wall type. For Each addedElemId As ElementId In data.GetAddedElementIds() Dim wall As Wall = TryCast(doc.GetElement(addedElemId), Wall) If wall IsNot Nothing Then wall.WallType = m_wallType End If Next End If End Sub Public Function GetAdditionalInformation() As String Implements IUpdater.GetAdditionalInformation Return "Wall type updater example: updates all newly created walls to a special wall" End Function Public Function GetChangePriority() As ChangePriority Implements IUpdater.GetChangePriority Return ChangePriority.FloorsRoofsStructuralWalls End Function Public Function GetUpdaterId() As UpdaterId Implements IUpdater.GetUpdaterId Return m_updaterId End Function Public Function GetUpdaterName() As String Implements IUpdater.GetUpdaterName Return "Wall Type Updater" End Function End Class
No code example is currently available or this language may not be supported.
No code example is currently available or this language may not be supported.
See Also