DocumentPostFailure Method |
Posts a failure to be displayed to the user at the end of transaction.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntaxpublic FailureMessageKey PostFailure(
FailureMessage failure
)
Public Function PostFailure (
failure As FailureMessage
) As FailureMessageKey
public:
FailureMessageKey^ PostFailure(
FailureMessage^ failure
)
member PostFailure :
failure : FailureMessage -> FailureMessageKey
Parameters
- failure FailureMessage
-
The failure to be posted.
Return Value
FailureMessageKey
A unique key that identifies posted failure message in a document. If exactly the same error is posted more than once,
and not removed between the postings, returned key will be the same every time.
ExceptionsException | Condition |
---|
ArgumentNullException |
A non-optional argument was null
|
InvalidOperationException |
Document must be in state of accepting posted failures and the failures must be appropriate
for that current state.
|
ModificationForbiddenException |
The document is in failure mode: an operation has failed,
and Revit requires the user to either cancel the operation
or fix the problem (usually by deleting certain elements).
-or-
The document is being loaded, or is in the midst of another
sensitive process.
|
ModificationOutsideTransactionException |
The document has no open transaction.
|
Remarks
If code inside transaction detects a problem that needs to be communicated to the user,
it should report these conditions via this method. Failures will be validated and possibly
resolved at the end of transaction.
Warnings posted via this method will not be stored in the document after they are resolved.
A unique key returned by postFailure can be stored for the lifetime of transaction and used to
remove failure message if it is no longer relevant.
Example
public void Execute(UpdaterData data)
{
Document doc = data.GetDocument();
Autodesk.Revit.ApplicationServices.Application app = doc.Application;
foreach (ElementId id in data.GetModifiedElementIds())
{
AnalyticalMember fi = doc.GetElement(id) as AnalyticalMember;
if (fi.StructuralRole == AnalyticalStructuralRole.StructuralRoleBeam)
{
if (fi.IsSingleCurve() == true)
{
Curve beamCurve = fi.GetCurve();
if (beamCurve.Length < 12.0)
{
FailureMessage failMessage =
new FailureMessage(BuiltInFailures.CurveFailures.TooShort);
failMessage.SetFailingElement(id);
doc.PostFailure(failMessage);
}
}
}
}
}
Public Sub Execute(data As UpdaterData) Implements IUpdater.Execute
Dim doc As Document = data.GetDocument()
Dim app As Autodesk.Revit.ApplicationServices.Application = doc.Application
For Each id As ElementId In data.GetModifiedElementIds()
Dim fi As FamilyInstance = TryCast(doc.GetElement(id), FamilyInstance)
If fi.StructuralType = StructuralType.Beam Then
Dim analyticalModel As Autodesk.Revit.DB.Structure.AnalyticalElement = Nothing
Dim relManager As Autodesk.Revit.DB.Structure.AnalyticalToPhysicalAssociationManager = Autodesk.Revit.DB.Structure.AnalyticalToPhysicalAssociationManager.GetAnalyticalToPhysicalAssociationManager(doc)
If (relManager Is Nothing) Then
Exit Sub
End If
Dim counterpartId As ElementId = relManager.GetAssociatedElementId(fi.Id)
If (counterpartId Is Nothing) Then
Exit Sub
End If
analyticalModel = doc.GetElement(counterpartId)
If analyticalModel.IsSingleCurve() = True Then
Dim beamCurve As Curve = analyticalModel.GetCurve()
If beamCurve.Length < 12.0 Then
Dim failMessage As New FailureMessage(BuiltInFailures.CurveFailures.TooShort)
failMessage.SetFailingElement(id)
doc.PostFailure(failMessage)
End If
End If
End If
Next
End Sub
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