RVTDocs.com
Namespace: Autodesk.Revit.DB

AssemblyInstance

Class
Description:
Combines multiple elements for tagging, filtering, scheduling and creating isolated assembly views.
Inheritance Hierarchy:
System.Object
  Autodesk.Revit.DB.Element
    Autodesk.Revit.DB.AssemblyInstance
Syntax
public class AssemblyInstance : Element
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;
}