FailuresProcessing Event


Subscribe to the FailuresProcessing event to be notified when failures are being processed at the end of transaction.

Namespace: Autodesk.Revit.ApplicationServices
Assembly: RevitAPI (in RevitAPI.dll) Version: 2015.0.0.0 (2015.0.0.0)
Since: 2011

Syntax

C#
public event EventHandler<FailuresProcessingEventArgs> FailuresProcessing
Visual Basic
Public Event FailuresProcessing As EventHandler(Of FailuresProcessingEventArgs)
Visual C++
public:
 event EventHandler<FailuresProcessingEventArgs^>^ FailuresProcessing {
	void add (EventHandler<FailuresProcessingEventArgs^>^ value);
	void remove (EventHandler<FailuresProcessingEventArgs^>^ value);
}

Remarks

This event is raised when failures are being processed during transaction commit or rollback operations. Handlers of this event have a limited ability to modify the document and/or failures in it, using provided restricted failures accessor interface.

Examples

Copy C#
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)]

public class NoUnenclosedRoomWarnings : IExternalApplication
{
    static AddInId m_appId = new AddInId(new Guid("EB296268-8364-4d25-96E6-F664C608503C"));

    public Result OnStartup(UIControlledApplication application)
    {
        //Create an API application that subscribes to FailuresProcessing event for the lifetime of the session.
        application.ControlledApplication.FailuresProcessing += new EventHandler<FailuresProcessingEventArgs>(CheckWarnings);
        return Result.Succeeded;
    }

    public Result OnShutdown(UIControlledApplication application)
    {
        return Result.Succeeded;
    }

    private void CheckWarnings(object sender, FailuresProcessingEventArgs e)
    {
        FailuresAccessor fa = e.GetFailuresAccessor();
        IList<FailureMessageAccessor> failList = new List<FailureMessageAccessor>();
        failList = fa.GetFailureMessages(); // Inside event handler, get all warnings
        foreach (FailureMessageAccessor failure in failList)
        { 
            // check FailureDefinitionIds against ones that you want to dismiss, 
            FailureDefinitionId failID = failure.GetFailureDefinitionId();
            // prevent Revit from showing Unenclosed room warnings
            if (failID == BuiltInFailures.RoomFailures.RoomNotEnclosed)
            {
                fa.DeleteWarning(failure);
            }
        }
    }
}
Copy VB.NET
<Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)> _
Public Class NoUnenclosedRoomWarnings
    Implements IExternalApplication
    Shared m_appId As New AddInId(New Guid("EB296268-8364-4d25-96E6-F664C608503C"))

    Public Function OnStartup(application As UIControlledApplication) As Autodesk.Revit.UI.Result Implements IExternalApplication.OnStartup
        'Create an API application that subscribes to FailuresProcessing event for the lifetime of the session.
        AddHandler application.ControlledApplication.FailuresProcessing, AddressOf CheckWarnings
        Return Result.Succeeded
    End Function

    Public Function OnShutdown(application As UIControlledApplication) As Autodesk.Revit.UI.Result Implements IExternalApplication.OnShutdown
        Return Result.Succeeded
    End Function

    Private Sub CheckWarnings(sender As Object, e As FailuresProcessingEventArgs)
        Dim fa As FailuresAccessor = e.GetFailuresAccessor()
        Dim failList As IList(Of FailureMessageAccessor) = New List(Of FailureMessageAccessor)()
        failList = fa.GetFailureMessages()
        ' Inside event handler, get all warnings
        For Each failure As FailureMessageAccessor In failList
            ' check FailureDefinitionIds against ones that you want to dismiss, 
            Dim failID As FailureDefinitionId = failure.GetFailureDefinitionId()
            ' prevent Revit from showing Unenclosed room warnings
            If failID = BuiltInFailures.RoomFailures.RoomNotEnclosed Then
                fa.DeleteWarning(failure)
            End If
        Next
    End Sub
End Class

See Also

ArchiLabs

Stop fighting Revit automation.

Build repeatable BIM design and documentation workflows with scripts, data, and AI in one place, without wrestling brittle one-off automations.

Try ArchiLabs →