Combines multiple elements for tagging, filtering, scheduling and creating isolated assembly views.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 24.0.0.0 (24.0.0.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) { TaskDialog.Show("Revit", "Naming categories differ: " + Category.GetCategory(doc, diffNameCat.NamingCategoryId1).Name + " & " + Category.GetCategory(doc, diffNameCat.NamingCategoryId2).Name); return; } AssemblyDifferenceMemberDifference memberDifference = difference as AssemblyDifferenceMemberDifference; if (memberDifference != null) { AssemblyMemberDifference assemblyMemberDifference = memberDifference.MemberDifference as AssemblyMemberDifference; AssemblyMemberDifferentCategory differentCategory = assemblyMemberDifference as AssemblyMemberDifferentCategory; if (differentCategory != null) { TaskDialog.Show("Revit", "Element categories differ: " + Category.GetCategory(doc, diffNameCat.NamingCategoryId1).Name + " & " + Category.GetCategory(doc, diffNameCat.NamingCategoryId2).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 Long = diffNameCat.NamingCategoryId1.Value Dim catInt2 As Long = diffNameCat.NamingCategoryId2.Value TaskDialog.Show("Revit", "Naming categories differ: " + doc.Settings.Categories.Item(DirectCast(catInt1, BuiltInCategory)).Name + " & " + doc.Settings.Categories.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 Long = differentCategory.CategoryId1.Value Dim int2 As Long = differentCategory.CategoryId2.Value TaskDialog.Show("Revit", "Element categories differ: " + doc.Settings.Categories.Item(DirectCast(int1, BuiltInCategory)).Name + " & " + doc.Settings.Categories.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