Autodesk.Revit.DB.BuiltInFailures.SystemsFailures
是一个枚举类型,包含了在 Revit 中可能出现的系统级别的失败。
枚举成员名称 | 描述 |
---|---|
DetachFromCentral | 当用户尝试从中央模型中分离项目时出现的失败 |
SyncFailures | 当与中央模型同步时出现的失败 |
WorksharingFailures | 当使用工作共享功能时出现的失败 |
使用 BuiltInFailuresAccessor
类可以捕获这些系统级别的失败,并提供相应的处理方式。
以下代码演示了如何使用 BuiltInFailuresAccessor
类来处理 DetachFromCentral
失败:
try
{
// 尝试从中央模型中分离项目
Document doc = __revit__.ActiveUIDocument.Document;
DetachFromCentralOptions detachOpts = new DetachFromCentralOptions();
detachOpts.SaveLocalAfterDetachment = true;
doc.DetachFromCentral(detachOpts);
// 如果没有失败,则显示成功消息框
TaskDialog.Show("Success", "Project detached from central successfully.");
}
catch (Autodesk.Revit.Exceptions.OperationCanceledException ex)
{
// 检查是否出现了 `DetachFromCentral` 失败
ICollection<FailureMessageAccessor> failList = ex.GetFailureMessages();
if (failList != null && failList.Count > 0)
{
foreach (FailureMessageAccessor failure in failList)
{
if (failure.GetFailureDefinitionId() == BuiltInFailures.DetachFromCentralFailures.CannotDetachIndividualWorksets)
{
// 处理 `CannotDetachIndividualWorksets` 失败:不允许分离单独的工作集
BuiltInFailuresAccessor failuresAccessor = new BuiltInFailuresAccessor(doc);
FailureResolutionOptions resolutionOptions = failuresAccessor.GetResolutionOptions();
resolutionOptions.SetFailuresPreprocessor(new WorksetsFailuresPreprocessor());
failuresAccessor.ResolveFailures(failList, resolutionOptions);
TaskDialog.Show("Success", "Project detached from central successfully.");
}
}
}
}
在此示例中,BuiltInFailuresAccessor
类用于检查是否出现了 DetachFromCentral
失败,并提供相应的处理方式。