ADN Club > Revit API
Событие - изменение значения параметра в семействе.
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 сравниваем значение параметра со значением, сохраненным в сторадже и, если они не совпадают, обновляем значение в сторадже и делаем что-то полезное :-)
Навигация
Перейти к полной версии