Revit. Параметризация. Новые стратегии, новые функции, группировка элементов, предфильтры, палитра для быстрого запуска и многое другое

Сегодня мы выпустили самое крупное обновление как в истории Параметризации, так и, пожалуй, в истории любого плагина ModPlus!
В новой версии Параметризации вас ждут новые функции, новые стратегии, группировка элементов, уникальная стратегия ManyToMany, предфильтры, палитра для быстрого запуска, редизайн инструкции, новые фишки редактора формул и многое другое. Обо всем этом мы расскажем далее, и мы очень сильно рекомендуем вам ознакомиться с данной статьей
Инструкция
Содержимое и дизайн инструкции были сильно переработаны: в инструкцию добавлено больше информации о работе плагина, главы теперь расположены логичнее, а в тексте инструкции добавлены перекрестные ссылки. Дизайн мы показали ранее на заглавном скриншоте. Кстати, инструкцию теперь можно запустить не только из редактора формул, но и из основного окна плагина – из панели настроек.
Формулы и редактор формул
В редакторе формул добавлены новые возможности подсветки формул:
- функции теперь можно сворачивать и разворачивать. На формулу это не влияет
- тело функций теперь выделяется подсветкой фона
В редакторе формул появились всплывающие подсказки для функций. Если навести курсор на имя функции, появится её описание, поэтому заглядывать в инструкцию, чтобы вспомнить назначение аргументов, больше не нужно:

В формулах теперь можно писать комментарии. Они помогут пояснить сложное выражение для себя или коллег, а также временно отключить часть формулы без её удаления:

Имена функций теперь пишутся в стиле CamelCase, а не заглавными буквами: CvIf вместо CVIF, Round вместо ROUND. Длинные имена так читаются заметно легче. Регистр в именах функций по-прежнему не учитывается, поэтому существующие формулы продолжат работать без изменений.
Ячейка с опциями формулы получила новый дизайн: опции стали нагляднее и занимают меньше места:

Новые возможности формул
Параметры сведений о проекте и глобальные параметры. Теперь в формулах можно использовать значения параметров сведений о проекте и глобальных параметров. Например, можно записать в элементы шифр проекта или использовать в расчёте значение, заданное один раз на весь проект. Для их вставки в редакторе формул появились отдельные кнопки:

Ключевое слово SKIP_ELEMENT. Оно позволяет прямо из формулы исключить элемент из обработки. Это удобно, когда условие пропуска сложно выразить фильтром, а в формуле оно пишется одной строкой:

Выражения «Только для проверки». Если после целевого параметра поставить не =, а оператор сравнения (!=, >, <, >=, <=, ~, !~), выражение будет работать только в режиме Проверить. В этом режиме текущее значение параметра сравнивается с результатом расчёта выражения, а в режиме Выполнить выражение пропускается. Так в одной конфигурации можно держать и заполнение параметров, и проверку модели. Такие выражения отмечаются значком в ячейке формулы и в редакторе формул:

Новые операторы «содержится в» и «не содержится в». В формулах появились два новых оператора: =| проверяет, входит ли значение в список, а !=| проверяет, что не входит. Список можно задать строкой через функцию List, а также взять из столбца или строки источника данных функциями CcList и CrList. Длинные цепочки условий через «или» больше не нужны:

Новые функции обратной записи. К функциям Sum и Join добавились Min, Max, Avg, First и Last. Теперь в условно исходный элемент можно записать не только сумму или перечень значений связанных элементов, но и минимальное, максимальное или среднее значение, а также первое или последнее.
Кроме того, в исходный элемент теперь можно записать значение напрямую, выражением вида @[Параметр] = …. Например, @[Количество номеров] = GCount(t) запишет в помещение число сопоставленных с ним пространств.
Новые функции
Список функций заметно пополнился:
- работа с источником данных (Excel-файлом): CvOr ищет первую строку, в которой выполняется хотя бы одно из условий, а CcMin, CcMax, CrMin и CrMax возвращают минимальное и максимальное значение из столбца или строки источника данных
- работа со списками: Item возвращает элемент списка по индексу, FindItem возвращает первый элемент, содержащий искомое значение, а ItemIndex возвращает индекс такого элемента
- работа со строками: Trim убирает пробелы в начале и в конце строки, RgxMatch проверяет значение на совпадение с регулярным выражением, а RgxReplace выполняет замену по регулярному выражению
- геометрия: TargetBottomZ, TargetTopZ, SourceBottomZ и SourceTopZ возвращают отметки низа и верха целевого и исходного элементов
- прочие: HasValue проверяет, задавалось ли параметру значение, DocTitle возвращает заголовок документа, а GetCurrentViewParameter возвращает значение параметра вида, на котором выполняется обработка
Подробное описание каждой функции с примерами вы найдёте в инструкции.
Новые стратегии
Добавлено девять новых стратегий:
- InAssembly — обработка элементов, расположенных в сборках
- ViewSpecific — обработка элементов, существующих только на одном виде: размеров, текстовых примечаний, марок, линий и областей детализации, а также содержимого листов
- StairComponents — обработка компонентов лестниц: маршей, площадок, опор и ограждений. Условно исходным элементом является лестница
- RoomOpenings — обработка дверей и окон, выходящих в помещение. Условно исходным элементом является помещение
- RoomFinishing — обработка отделки помещений, созданной плагином Отделка помещений. Условно исходным элементом является помещение
- OnLevel — обработка элементов по их привязке к уровню
- LevelViews — обработка видов, построенных по уровню: планов этажей, планов потолков, несущих планов и планов зонирования
- RebarCouplers — обработка арматурных стержней, соединяемых соединителем арматуры. Условно исходным элементом является соединитель
- ManyToMany — о ней мы расскажем отдельно ниже
Стратегия RoomBoundaries переработана: теперь она обрабатывает не только вертикальные ограждающие конструкции помещений, но и горизонтальные.
Правилам теперь можно задавать имена. В стратегии с десятком правил сразу понятно, какое правило за что отвечает:

Предварительные фильтры
У стратегий появились предварительные фильтры. Предварительный фильтр сужает набор элементов сразу для всех правил стратегии. Он не заменяет фильтры правил, а применяется вместе с ними: элемент попадёт в обработку, только если пройдёт и предварительный фильтр, и фильтр правила.
Например, в предварительном фильтре можно задать категории «Стены», «Несущие колонны» и «Каркас несущий», а также параметр «Несущие конструкции». Тогда все правила стратегии будут работать только с несущими элементами этих категорий, а отбирать среди них элементы будут уже по своим фильтрам. Раньше одно и то же условие пришлось бы повторять в каждом правиле.
Если категории правила не пересекаются с категориями предварительного фильтра, плагин предупредит, что такое правило не обработает ни одного элемента.

Группировка элементов и агрегатные функции
Это одно из самых крупных нововведений версии. Для правила теперь можно задать группировку целевых элементов: элементы с одинаковым значением, например одного типа или одной марки, объединяются в группу. Для работы с группами добавлены агрегатные функции с префиксом G: GSum, GMin, GMax, GAvg, GCount, GJoin, GIndex. Также добавлена функция Ranges, которая сворачивает перечень номеров в диапазоны: «1-3, 5-7, 10».
С группировкой можно, например, записать в каждый воздуховод суммарную площадь всех воздуховодов того же типа, пронумеровать элементы внутри группы или собрать в одну строку номера всех помещений, в которых встречаются элементы с одинаковой маркой. Группы можно сортировать, а значения можно сравнивать без учёта регистра:

Стратегия ManyToMany и сопоставление
Все остальные стратегии строят пару элементов по их отношению в модели: элемент находится в помещении, вставлен в стену, входит в систему и т.д. ManyToMany работает иначе: она связывает два независимых набора элементов по совпадению значений. Классический пример — помещения из модели АР и пространства из модели инженерных систем. У помещений есть параметр «Тип квартиры», у пространств «Тип номера». Вы задаёте сопоставление @[Тип квартиры] ↔ $[Тип номера], и плагин сам находит пары.
Чтобы проверить настройку до запуска, используйте предпросмотр сопоставления. Он показывает, какие значения сошлись, сколько исходных и целевых элементов попало в каждую группу и для каких элементов пара не нашлась. Неполные группы выводятся первыми, поэтому проблемы видны сразу.

Палитра
Добавлена палитра для быстрого запуска стратегий и правил текущей конфигурации. Если вы регулярно выполняете одну и ту же стратегию или отдельное правило, открывать основное окно плагина больше не нужно: их можно запустить прямо из палитры:

Конфигурации
Конфигурации теперь можно объединять в группы. Если у вас десятки конфигураций для разных разделов и объектов, найти нужную станет гораздо проще:

Состояние флажков «Выбрано» у стратегий и правил теперь сохраняется в отдельный файл. Поэтому выбор, сделанный перед запуском, больше не изменяет саму конфигурацию. Это особенно удобно, если одной конфигурацией пользуются несколько человек при использовании Настроек организации.
Синхронизация перед запуском
В настройках плагина появилась опция Запрашивать выполнение синхронизации перед запуском. Если она включена и документ совместный, перед обработкой плагин предложит выполнить синхронизацию с центральной моделью. Параметры синхронизации повторяют стандартный диалог Revit: уплотнение, освобождение элементов и рабочих наборов, сохранение локального файла. Запрос работает и при запуске из палитры.
Окно результатов и пошаговый расчёт
- Если у результата меньше четырёх вложенных объектов, он разворачивается автоматически
- Для стратегий теперь показывается количество правил, в которых есть обработанные выражения
- В пошаговом расчёте убрана подсветка запятых, которая скорее мешала, чем помогала
Прочие улучшения
- Добавлена обработка параметра «Обозначение цепей»
- Если у элемента есть несколько параметров с одинаковым именем, плагин теперь сообщит об ошибке и не будет брать первый попавшийся параметр. Раньше в такой ситуации мог незаметно прочитаться или записаться не тот параметр
- Исправлены различные ошибки, найденные в предыдущей версии
И даже при таком крупном обновлении у нас еще имеются идеи для следующих обновлений! Поэтому не забывайте писать свои предложения в нашем чате поддержки!
Приятной вам работы с ModPlus!