Вы можете подавить запрос «Duplicate Mark» в Revit во время программы на c #?

1

У меня есть программа, которая устанавливает значения параметра "Марк", уникальные для каждого "идентичного" луча или столбца. Обычно это приводит к более чем одному лучу с тем же параметром "Mark", а Revit отображает нечетное "Предупреждение - может быть проигнорировано". Элементы имеют повторяющиеся значения "Mark" (нечетные, потому что их нельзя игнорировать, потому что он всегда отображается).

Кто-нибудь знает, как отключить это предупреждение во время выполнения программы? Я, скорее всего, собираю дополнительные типы элементов (например, соединения, ребра жесткости или даже фундаменты) и назначая параметры "Марк", и было бы неплохо избежать появления этого предупреждения 4 или 5 раз.

Теги:
revit-api

1 ответ

0

Это на самом деле довольно прямолинейно. Вы можете использовать что-то, называемое 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();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню