Compares two assembly instances and returns a result with details about the differences
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 21.0.0.0 (21.1.1.109)
Since: 2012
Syntax
C# |
---|
public static AssemblyDifference CompareAssemblyInstances( AssemblyInstance instance1, AssemblyInstance instance2 ) |
Visual Basic |
---|
Public Shared Function CompareAssemblyInstances ( _ instance1 As AssemblyInstance, _ instance2 As AssemblyInstance _ ) As AssemblyDifference |
Visual C++ |
---|
public: static AssemblyDifference^ CompareAssemblyInstances( AssemblyInstance^ instance1, AssemblyInstance^ instance2 ) |
Parameters
- instance1
- Type: Autodesk.Revit.DB..::..AssemblyInstance
The first assembly instance to compare
- instance2
- Type: Autodesk.Revit.DB..::..AssemblyInstance
the second assembly instance to compare
Return Value
An object describing the difference between the two instances
Remarks
Only the first found difference is returned.
If the instances are identical, AssemblyDifferenceNone will be returned.
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
Exceptions
Exception | Condition |
---|---|
Autodesk.Revit.Exceptions..::..ArgumentNullException | A non-optional argument was NULL |