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
Examples

// 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;
}

' 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