ADN Club > Revit API

Событие - изменение значения параметра в семействе.

(1/6) > >>

toxan:
Добрый день!
Подскажите, можно ли  в фоновом режиме  "увидеть" изменение параметра в определенном семействе? 
Как пример - изменение отметки семейства?


Александр Пекшев aka Modis:
Можно. Для этого нужно использовать IUpdater.
Там при регистрации есть варианты за чем следить - изменением геометрии, изменением параметра или за всеми изменениями.
А уже в обработчике события вы можете проверять, что это нужное вам семейство изменилось

Александр Игнатович:
Александр, лучше не в IUpdater такое разруливать, а в фильтре, который передается при регистрации апдейтра, что-то вроде такого:

--- Код - C# [Выбрать] ---public ElementFilter CreateCableTrayUnionWithConduitSymbolFilter(){        var familyNameRule = ParameterFilterRuleFactory.CreateEqualsRule(new ElementId(BuiltInParameter.ALL_MODEL_FAMILY_NAME), CableTrayUnionWithConduitFamilyName, false);         var symbolNameRule = ParameterFilterRuleFactory.CreateEqualsRule(new ElementId(BuiltInParameter.SYMBOL_NAME_PARAM), CableTrayUnionWithConduitFamilySymbolName, false);         var filters = new ElementFilter[]                {                        new ElementIsElementTypeFilter(),                         new ElementCategoryFilter(BuiltInCategory.OST_CableTrayFitting),                         new ElementParameterFilter(new [] {familyNameRule, symbolNameRule})                };         return new LogicalAndFilter(filters);}

Александр Пекшев aka Modis:

--- Цитата: Александр Игнатович от 31-07-2018, 10:21:27 ---а в фильтре, который передается при регистрации апдейтра
--- Конец цитаты ---
Ага, точно. Я просто забыл - под рукой не было кода никакого))

Александр Игнатович:
Кстати, для решения задачи еще потребуется где-то хранить прошлое значение, это может быть Extensible storage или параметр проекта/семейства, возможно невидимый.

Т.е., например, 1 апдейтер реагирует на добавление элементов с фильтром по определенным критериям, читаем текущее значение параметра, пишем в extensible storage, второй апдейтер по тому же фильтру реагирует на изменение элемента, в методе Execute сравниваем значение параметра со значением, сохраненным в сторадже и, если они не совпадают, обновляем значение в сторадже и делаем что-то полезное :-)

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии