У меня есть программа, которая устанавливает значения параметра "Марк", уникальные для каждого "идентичного" луча или столбца. Обычно это приводит к более чем одному лучу с тем же параметром "Mark", а Revit отображает нечетное "Предупреждение - может быть проигнорировано". Элементы имеют повторяющиеся значения "Mark" (нечетные, потому что их нельзя игнорировать, потому что он всегда отображается).
Кто-нибудь знает, как отключить это предупреждение во время выполнения программы? Я, скорее всего, собираю дополнительные типы элементов (например, соединения, ребра жесткости или даже фундаменты) и назначая параметры "Марк", и было бы неплохо избежать появления этого предупреждения 4 или 5 раз.
Это на самом деле довольно прямолинейно. Вы можете использовать что-то, называемое IFailurePreprocessor
чтобы поймать все эти предупреждения и отбросить их из кода:
Создайте класс препроцессора:
public class DuplicateMarkSwallower : IFailuresPreprocessor
{
public FailureProcessingResult PreprocessFailures(FailuresAccessor a)
{
var failures = a.GetFailureMessages();
foreach (var f in failures)
{
var id = f.GetFailureDefinitionId();
if (BuiltInFailures.GeneralFailures.DuplicateValue == id)
{
a.DeleteWarning(f);
}
}
return FailureProcessingResult.Continue;
}
}
Затем вы можете использовать его так:
using (var trans = new Transaction(_doc, "Creating Numbers"))
{
trans.Start();
// Set failure handler
var failureOptions = trans.GetFailureHandlingOptions();
failureOptions.SetFailuresPreprocessor(new DuplicateMarkSwallower());
trans.SetFailureHandlingOptions(failureOptions);
// do your thing here
trans.Commit();
}