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