该类别属于Revit中的内置错误类型。KeyBasedTreeEntryFailures类表示在尝试添加、修改或删除Revit键值树中的条目时发生的失败情况。
DuplicateKey:表示尝试添加具有已存在键的项时发生的故障。
EntityNotFound:表示尝试找到某个实体时未找到该实体的故障。
CannotDeleteLastPathSegment:表示尝试删除键值树中的最后一个部分时发生的故障。
CannotDeletePathWithChildren:表示尝试删除具有子级的路径段时发生的故障。
CannotRenameLastPathSegment:表示尝试重命名键值树中的最后一个部分时发生的故障。
CannotRenamePathWithChildren:表示尝试重命名具有子级的路径段时发生的故障。
以下代码演示如何使用KeyBasedTreeEntryFailures类检测Revit键值树操作中的失败情况:
// 创建键值树
FilteredElementCollector collector = new FilteredElementCollector(doc);
ICollection<Element> elements = collector.OfCategory(BuiltInCategory.OST_ElectricalEquipment).ToElements();
FamilyInstance equipment = elements.First() as FamilyInstance;
// 添加一个名为“电气设备”的键
Parameter para = equipment.LookupParameter("Comments");
try
{
using (Transaction tx = new Transaction(doc, "Add Tree Key"))
{
tx.Start();
para.Set("Electrical Equipment");
tx.Commit();
}
}
catch (Autodesk.Revit.Exceptions.ArgumentException ex)
{
IList<FailureMessageAccessor> failures = ex.GetFailingMessages();
foreach (FailureMessageAccessor f in failures)
{
if (f.GetFailureDefinitionId() == BuiltInFailures.KeyBasedTreeEntryFailures.DuplicateKey)
{
// 如果遇到重复键,则在此处添加处理逻辑
}
}
}
KeyBasedTreeEntryFailures类提供了处理Revit键值树操作中各种失败情况的方便方法。通过检测这些错误,我们可以确保Revit数据的一致性和准确性。