CombineWithNext Method


Combines the specified Revision with the next Revision.

Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 22.0.0.0 (22.1.0.0)
Since: 2015

Syntax

C#
public static ISet<ElementId> CombineWithNext(
	Document document,
	ElementId revisionId
)
Visual Basic
Public Shared Function CombineWithNext ( _
	document As Document, _
	revisionId As ElementId _
) As ISet(Of ElementId)
Visual C++
public:
static ISet<ElementId^>^ CombineWithNext(
	Document^ document, 
	ElementId^ revisionId
)

Parameters

document
Type: Autodesk.Revit.DB Document
The Document containing the Revisions.
revisionId
Type: Autodesk.Revit.DB ElementId
The Revision that should have its clouds and tags associated with the next Revision.

Return Value

The ids of all RevisionClouds that were reassigned to the next Revision.

Remarks

All RevisionClouds and tags associated with the specified Revision will be reassigned to the next Revision in the model and the specified Revision will be deleted from the model. The operation can only be performed if both the specified Revision and the next one are unissued.

Examples

Copy C#
private bool CombineRevision(Document document, Revision revision)
{
    bool combined = false;
    // Can only combine two revisions if neither have been issued
    if (revision.Issued == false)
    {
        ElementId revisionId = revision.Id;
        Revision nextRevsion = GetNextRevision(document, revisionId);
        if (nextRevsion != null && nextRevsion.Issued == false)
        {
            ISet<ElementId> revisionCloudIds = Revision.CombineWithNext(document, revisionId);
            combined = true;
            int movedClouds = revisionCloudIds.Count;
            if (movedClouds > 0)
            {
                RevisionCloud cloud = document.GetElement(revisionCloudIds.ElementAt(0)) as RevisionCloud;
                if (cloud != null)
                {
                    string msg = string.Format("Revision {0} deleted and {1} revision clouds were added to Revsion {2}",
                        revisionId.ToString(), movedClouds, cloud.RevisionId.ToString());
                    TaskDialog.Show("Revision Combined", msg);
                }
            }
        }
    }

    return combined;
}

private Revision GetNextRevision(Document document, ElementId currentRevisionId)
{
    Revision nextRevision = null;
    IList<ElementId> revisionIds = Revision.GetAllRevisionIds(document);
    int currentRevisionIndex = -1;
    for (int n = 0; n < revisionIds.Count; n++)
    {
        if (revisionIds[n] == currentRevisionId)
        {
            currentRevisionIndex = n;
            break;
        }
    }

    // if the current revision id was found and is not the last index
    if (currentRevisionIndex >= 0 && currentRevisionIndex < revisionIds.Count - 1)
    {
        ElementId nextRevisionId = revisionIds[currentRevisionIndex + 1];
        nextRevision = document.GetElement(nextRevisionId) as Revision;
    }

    return nextRevision;
}
Copy VB.NET
Private Function CombineRevision(document As Document, revision__1 As Revision) As Boolean
    Dim combined As Boolean = False
    ' Can only combine two revisions if neither have been issued
    If revision__1.Issued = False Then
        Dim revisionId As ElementId = revision__1.Id
        Dim nextRevsion As Revision = GetNextRevision(document, revisionId)
        If nextRevsion IsNot Nothing AndAlso nextRevsion.Issued = False Then
            Dim revisionCloudIds As ISet(Of ElementId) = Revision.CombineWithNext(document, revisionId)
            combined = True
            Dim movedClouds As Integer = revisionCloudIds.Count
            If movedClouds > 0 Then
                Dim cloud As RevisionCloud = TryCast(document.GetElement(revisionCloudIds.ElementAt(0)), RevisionCloud)
                If cloud IsNot Nothing Then
                    Dim msg As String = String.Format("Revision {0} deleted and {1} revision clouds were added to Revsion {2}", revisionId.ToString(), movedClouds, cloud.RevisionId.ToString())
                    TaskDialog.Show("Revision Combined", msg)
                End If
            End If
        End If
    End If

    Return combined
End Function

Private Function GetNextRevision(document As Document, currentRevisionId As ElementId) As Revision
    Dim nextRevision As Revision = Nothing
    Dim revisionIds As IList(Of ElementId) = Revision.GetAllRevisionIds(document)
    Dim currentRevisionIndex As Integer = -1
    For n As Integer = 0 To revisionIds.Count - 1
        If revisionIds(n) = currentRevisionId Then
            currentRevisionIndex = n
            Exit For
        End If
    Next

    ' if the current revision id was found and is not the last index
    If currentRevisionIndex >= 0 AndAlso currentRevisionIndex < revisionIds.Count - 1 Then
        Dim nextRevisionId As ElementId = revisionIds(currentRevisionIndex + 1)
        nextRevision = TryCast(document.GetElement(nextRevisionId), Revision)
    End If

    Return nextRevision
End Function

Exceptions

Exception Condition
Autodesk.Revit.Exceptions ArgumentException revisionId is not a valid Revision. -or- This operation cannot be performed because revisionId is an issued Revision. -or- revisionId cannot be combined with the next Revision because either revisionId is the last Revision or the next Revision has already been issued.
Autodesk.Revit.Exceptions ArgumentNullException A non-optional argument was null

See Also