Assembly |
Compares two assembly instances and returns a result with details about the differences
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)

public static AssemblyDifference CompareAssemblyInstances(
AssemblyInstance instance1,
AssemblyInstance instance2
)
Parameters
- instance1 AssemblyInstance
- The first assembly instance to compare
- instance2 AssemblyInstance
- the second assembly instance to compare
Return Value
AssemblyDifferenceAn object describing the difference between the two instances

Exception | Condition |
---|---|
ArgumentNullException | A non-optional argument was null |

Only the first found difference is returned. If the instances are identical, AssemblyDifferenceNone will be returned.

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