Autodesk.Revit.DB.AssemblyDifference是Revit API中的类,用于描述两个不同的族实例之间的差异。
描述:差异的族实例Id
数据类型:ElementId
访问权限:公共
用法:
ElementId assemblyInstanceId = instanceDifference.AssemblyInstanceId;
描述:主要的族实例Id,如果作为第一个输入,则为第二个实例与之比较的参考点。
数据类型:ElementId
访问权限:公共
用法:
ElementId primaryInstanceId = instanceDifference.PrimaryInstanceId;
描述:与主要实例进行比较的第二个族实例的Id。
数据类型:ElementId
访问权限:公共
用法:
ElementId secondaryInstanceId = instanceDifference.SecondaryInstanceId;
描述:元素之间的变化。
数据类型:IList<Autodesk.Revit.DB.ElementId>
访问权限:公共
用法:
IList<ElementId> changes = instanceDifference.Changes;
描述:判断两个FamilyInstance之间的差异是否相等。
返回:布尔值
访问权限:公共
参数:
用法:
bool isEqual = Autodesk.Revit.DB.AssemblyDifference.EqualityCompare(familyInstance1, familyInstance2);
// 将现有的AssemblyInstance作为主要实例来查找其他部件的更改。主要构件在两个实例之间是相同的。
ElementId assemblyInstanceId = existingAssemblyInstanceId; // 现有的AssemblyInstance
List<ElementId> otherInstances = new List<ElementId>
{
newInstanceId1,
newInstanceId2,
newInstanceId3,
newInstanceId4
};
foreach (ElementId otherInstanceId in otherInstances)
{
// 尝试对现有构件和新构件进行比较。
Autodesk.Revit.DB.AssemblyDifference instanceDifference;
try
{
instanceDifference = Autodesk.Revit.DB.AssemblyDifference.CompareAssemblyInstances(
doc.GetElement(assemblyInstanceId) as FamilyInstance,
doc.GetElement(otherInstanceId) as FamilyInstance);
}
catch (Autodesk.Revit.Exceptions.ArgumentException)
{
// 构件无法比较
continue;
}
// 确定变化类型。
if (instanceDifference.Changes.Count == 0)
{
// 这两个实例相同。
continue;
}
else if (instanceDifference.PrimaryInstanceId == otherInstanceId)
{
// 它们是不同的实例。这个实例有一些新的东西。
// do something
}
else if (instanceDifference.SecondaryInstanceId == otherInstanceId)
{
// 它们是不同的实例。这个实例缺少一些东西。
// do something
}
else
{
// 这里是不可能的,但保险一些。
throw new Exception("Unexpected return value from CompareAssemblyInstances function.");
}
}
Autodesk.Revit.DB.AssemblyDifference类提供了Revit API中用于比较两个不同的族实例之间的差异的功能。开发人员可以使用该类来查找两个实例之间的不同点,并作出相应的响应。