В локальной копии хранилища есть необходимость при попытке редактирования элемента, если он занят в данный момент кем-либо, автоматически отправлять запрос.
Половину задачи я решил реализовав свой
IFailuresPreprocessorpublic class MyWorksetElementPreprocessor : IFailuresPreprocessor
{
public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
{
IList<FailureMessageAccessor> failList = new List<FailureMessageAccessor>();
failList = failuresAccessor.GetFailureMessages();
foreach (FailureMessageAccessor failure in failList)
{
FailureDefinitionId failID = failure.GetFailureDefinitionId();
if (failID == BuiltInFailures.EditingFailures.OwnedByOther)
{
failuresAccessor.ResolveFailure(failure);
return FailureProcessingResult.ProceedWithRollBack;
}
}
return FailureProcessingResult.Continue;
}
}
и связал с транзакцией
private static Transaction MakeTransaction(Document doc, string name, bool useFailureHandlingOpts)
{
Transaction t = new Transaction(doc, name);
if (useFailureHandlingOpts)
{
FailureHandlingOptions opts = t.GetFailureHandlingOptions();
opts.SetClearAfterRollback(true);
opts.SetFailuresPreprocessor(new MyWorksetElementPreprocessor());
t.SetFailureHandlingOptions(opts);
}
return t;
}
Осталась вторая половина - необходимо закрывать окно
Все полезного что смог для этого найти это запись в журнале -
Jrn.PushButton "Modal , Размещенный запрос на редактирование , Dialog_Revit_CheckEditabilityGrants" , "Закрыть, IDOK"Не смог ничего придумать с
Dialog_Revit_CheckEditabilityGrants, есть у кого какие мысли по этому поводу?