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