AssemblyInstance Class


Combines multiple elements for tagging, filtering, scheduling and creating isolated assembly views.

Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 17.0.0.0 (17.0.1090.0)
Since: 2012

Syntax

C#
public class AssemblyInstance : Element
Visual Basic
Public Class AssemblyInstance _
	Inherits Element
Visual C++
public ref class AssemblyInstance : public Element

Examples

Copy C#
// Identify the difference, if any, between two assembly instances
void FindAssemblyDifferences(AssemblyInstance instance1, AssemblyInstance instance2)
{
    Autodesk.Revit.DB.Document doc = instance1.Document;
    AssemblyDifference difference = AssemblyInstance.CompareAssemblyInstances(instance1, instance2);

    AssemblyDifferenceNone diffNone = difference as AssemblyDifferenceNone;
    if (diffNone != null)
    {
        TaskDialog.Show("Revit", "Assemblies are identical");
        return;
    }

    AssemblyDifferenceConfiguration diffConfig = difference as AssemblyDifferenceConfiguration;
    if (diffConfig != null)
    {
        TaskDialog.Show("Revit", "Elements are not arranged in space relative to each other in the same way");
        return;
    }

    AssemblyDifferenceMemberCount diffMemberCount = difference as AssemblyDifferenceMemberCount;
    if (diffMemberCount != null)
    {
        TaskDialog.Show("Revit", "Elements counts differ: " + diffMemberCount.Count1 + " & " + diffMemberCount.Count2);
        return;
    }

    AssemblyDifferenceNamingCategory diffNameCat = difference as AssemblyDifferenceNamingCategory;
    if (diffNameCat != null)
    {
        int catInt1 = diffNameCat.NamingCategoryId1.IntegerValue;
        int catInt2 = diffNameCat.NamingCategoryId2.IntegerValue;
        TaskDialog.Show("Revit", "Naming categories differ: " +
            doc.Settings.Categories.get_Item((BuiltInCategory)catInt1).Name + " & " +
            doc.Settings.Categories.get_Item((BuiltInCategory)catInt2).Name);
        return;
    }

    AssemblyDifferenceMemberDifference memberDifference = difference as AssemblyDifferenceMemberDifference;
    if (memberDifference != null)
    {
        AssemblyMemberDifference assemblyMemberDifference = memberDifference.MemberDifference as AssemblyMemberDifference;

        AssemblyMemberDifferentCategory differentCategory = assemblyMemberDifference as AssemblyMemberDifferentCategory;
        if (differentCategory != null)
        {
            int int1 = differentCategory.CategoryId1.IntegerValue;
            int int2 = differentCategory.CategoryId2.IntegerValue;
            TaskDialog.Show("Revit", "Element categories differ: " +
                doc.Settings.Categories.get_Item((BuiltInCategory)int1).Name + " & " +
                doc.Settings.Categories.get_Item((BuiltInCategory)int2).Name);
            return;
        }
        AssemblyMemberDifferentGeometry differentGeometry = assemblyMemberDifference as AssemblyMemberDifferentGeometry;
        if (differentGeometry != null)
        {
            TaskDialog.Show("Revit", "Member geometry differs");
            return;
        }
        AssemblyMemberDifferentParameters differentParameters = assemblyMemberDifference as AssemblyMemberDifferentParameters;
        if (differentParameters != null)
        {
            TaskDialog.Show("Revit", "Member parameters differs");
            return;
        }
        AssemblyMemberDifferentType differentType = assemblyMemberDifference as AssemblyMemberDifferentType;
        if (differentType != null)
        {
            TaskDialog.Show("Revit", "Element types differ: " + doc.GetElement(differentType.TypeId1).Name + " & " + doc.GetElement(differentType.TypeId2).Name);
            return;
        }
    }
    return;
}
Copy VB.NET
' Identify the difference, if any, between two assembly instances
Private Sub FindAssemblyDifferences(instance1 As AssemblyInstance, instance2 As AssemblyInstance)
    Dim doc As Autodesk.Revit.DB.Document = instance1.Document
    Dim difference As AssemblyDifference = AssemblyInstance.CompareAssemblyInstances(instance1, instance2)

    Dim diffNone As AssemblyDifferenceNone = TryCast(difference, AssemblyDifferenceNone)
    If diffNone IsNot Nothing Then
        TaskDialog.Show("Revit", "Assemblies are identical")
        Return
    End If

    Dim diffConfig As AssemblyDifferenceConfiguration = TryCast(difference, AssemblyDifferenceConfiguration)
    If diffConfig IsNot Nothing Then
        TaskDialog.Show("Revit", "Elements are not arranged in space relative to each other in the same way")
        Return
    End If

    Dim diffMemberCount As AssemblyDifferenceMemberCount = TryCast(difference, AssemblyDifferenceMemberCount)
    If diffMemberCount IsNot Nothing Then
        TaskDialog.Show("Revit", "Elements counts differ: " + diffMemberCount.Count1 + " & " + diffMemberCount.Count2)
        Return
    End If

    Dim diffNameCat As AssemblyDifferenceNamingCategory = TryCast(difference, AssemblyDifferenceNamingCategory)
    If diffNameCat IsNot Nothing Then
        Dim catInt1 As Integer = diffNameCat.NamingCategoryId1.IntegerValue
        Dim catInt2 As Integer = diffNameCat.NamingCategoryId2.IntegerValue
        TaskDialog.Show("Revit", "Naming categories differ: " + doc.Settings.Categories.get_Item(DirectCast(catInt1, BuiltInCategory)).Name + " & " + doc.Settings.Categories.get_Item(DirectCast(catInt2, BuiltInCategory)).Name)
        Return
    End If

    Dim memberDifference As AssemblyDifferenceMemberDifference = TryCast(difference, AssemblyDifferenceMemberDifference)
    If memberDifference IsNot Nothing Then
        Dim assemblyMemberDifference As AssemblyMemberDifference = TryCast(memberDifference.MemberDifference, AssemblyMemberDifference)

        Dim differentCategory As AssemblyMemberDifferentCategory = TryCast(assemblyMemberDifference, AssemblyMemberDifferentCategory)
        If differentCategory IsNot Nothing Then
            Dim int1 As Integer = differentCategory.CategoryId1.IntegerValue
            Dim int2 As Integer = differentCategory.CategoryId2.IntegerValue
            TaskDialog.Show("Revit", "Element categories differ: " + doc.Settings.Categories.get_Item(DirectCast(int1, BuiltInCategory)).Name + " & " + doc.Settings.Categories.get_Item(DirectCast(int2, BuiltInCategory)).Name)
            Return
        End If
        Dim differentGeometry As AssemblyMemberDifferentGeometry = TryCast(assemblyMemberDifference, AssemblyMemberDifferentGeometry)
        If differentGeometry IsNot Nothing Then
            TaskDialog.Show("Revit", "Member geometry differs")
            Return
        End If
        Dim differentParameters As AssemblyMemberDifferentParameters = TryCast(assemblyMemberDifference, AssemblyMemberDifferentParameters)
        If differentParameters IsNot Nothing Then
            TaskDialog.Show("Revit", "Member parameters differs")
            Return
        End If
        Dim differentType As AssemblyMemberDifferentType = TryCast(assemblyMemberDifference, AssemblyMemberDifferentType)
        If differentType IsNot Nothing Then
            TaskDialog.Show("Revit", "Element types differ: " + doc.GetElement(differentType.TypeId1).Name + " & " + doc.GetElement(differentType.TypeId2).Name)
            Return
        End If
    End If
    Return
End Sub

Inheritance Hierarchy

System Object
Autodesk.Revit.DB Element
Autodesk.Revit.DB AssemblyInstance

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 →