Написал набор скриптов, которые окрашивают вентсистемы в разные цвета. Недавно у одного из пользователей был такой запрос в группе в Телеграме. Я решил попробовать сделать такой скрипт, всё получилось, но есть нюансы. О них в тексте статьи.

Алгоритм

Скрипт берёт все вентиляционные категории, получает из них все элементы и список имён систем.

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

В итоге получается разноцветное деление систем.

Пример

Покажу на примере запуска с Проигрывателем Динамо и заодно расскажу, какие настройки там можно менять.

Запускаем проект и Проигрыватель. Указываем папку к скриптам и нажимаем на кнопку, которую я выделил на скриншоте.

Вот мои подопытные воздуховоды. Справа указатель на кнопку для редактирования параметров в Проигрывателе Динамо
Вот мои подопытные воздуховоды. Справа указатель на кнопку для редактирования параметров в Проигрывателе Динамо
Параметры, которые можно менять до запуска скрипта
Параметры, которые можно менять до запуска скрипта

Погнали по пунктам, как обычно:

1 — при создании фильтров им можно добавить префикс. Из уважения ко мне, можете оставить префикс «VM_» 😉 Ерунда это, делайте так, как вам нужно, конечно же.

2 — здесь можно выбрать, по какому параметру должны фильтроваться системы, по умолчанию стоит «Имя системы»;

3 — если хотите поменять заливку, то ставьте тумблер в положение True (зелёный);

4 — в выборе типа заливки нужно указать, как фильтр будет красить поверхности, выбор по сути тот же, что и в обычных фильтрах в интерфейсе Ревита, по умолчанию стоит сплошная заливка;

5 — если хотите сменить тип линий у воздуховодов, то ставьте тумблер в положение True (зелёный);

6 — выбирайте тип линий, на который хотите сменить;

7 — если хотите поменять толщину линий, то ставьте тумблер на True;

8 — тут указываете толщину линий;

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

10 — после того, как фильтры добавятся, тут будет список фильтров на виде.

Запускаю скрипт (просто выберу вид, остальное менять не буду), теперь системы выглядят вот так:

Системы перекрасились, а скриншотик старый, поэтому на Проигрыватель внимания не обращайте
Системы перекрасились, а скриншотик старый, поэтому на Проигрыватель внимания не обращайте

Вот так работает скрипт. Если нажать ещё раз на Play, то системы снова перекрасятся. Но если закрыть Проигрыватель и запустить по новой, то скрипт выдаст ошибку. Об этом в нюансах.

Нюансы

У работы с фильтрами есть два важных нюанса.

1. Перезапуск скрипта

Если закрыть скрипт, потом открыть снова и запустить, то он выдаст ошибку. Связано это с тем, что у нас уже созданы фильтры и нельзя их перезаписать с тем же именем. А если поменять префикс, то он не удалит старые фильтры, а просто добавит ещё новых фильтров к виду.

Поэтому создал ещё один скрипт, который будет удалять все фильтры с указанным префиксом. По умолчанию префикс тот же, что и у фильтров, которые назначаются на виды.

Скрипт для удаления фильтров

Настройки скрипта в Проигрывателе
Настройки скрипта в Проигрывателе

Здесь всё просто — указываете префикс, эти фильтры удалятся из всего проекта. После этого можно вновь запускать скрипт-раскраску.

То есть последовательность действий такая:

  1. Запустили скрипт в первый раз. Закрыли.
  2. Поменялись системы, добавились или не нравятся цвета, нужно снова красить.
  3. Запустили скрипт для удаления фильтров. Удалили.
  4. Запустили скрипт для окрашивания во второй раз.

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

2. Цвета фильтров

Сами цвета подбираются рандомизатором. Поэтому при каждом запуске всё меняется, и не всегда цвета приятны для глаза. Довольно легко можно сделать так, чтобы цвета менялись по оттенкам внутри одного цвета, разве что отсечь совсем тёмные оттенки. Но вот прям ограничить цвета определённым диапазоном приятных оттенков — это по сути перебор RGB-кодов, а мне этим заниматься неохота, интереснее было решить саму задачу по окраске. Вроде решил.

БОНУС

Если вы уже создали фильтры и хотите просто скопировать фильтры с одного вида на другой, то для этого тоже создал скрипт. Он лежит в той же папочке, что и остальные скрипты по ссылке ниже. Файл называется «VM_Переносчик фильтров».

Параметры скрипта в Проигрывателе
Параметры скрипта в Проигрывателе

Работает аналогично основному скрипту, но проще. Выбираете вид, с которого нужно копирнуть фильтры. Указываете префикс для имени фильтра, чтобы копировать не вообще все фильтры. И вбиваете текст, которые есть в имени видов, на которые хотите скопировать фильтры. То же самое вы делаете в основном фильтре.

Запускаете, фильтры копируются, и к ним добавляются цветовые переопределения (тип заливка, толщина и тип линий и т. д.).

Потенциал

Скрипт можно развить и добавить ему раскрашивание разных типов систем в разные оттенки одного цвета. Например, весь приток будет в оттенках красного, вытяжка — в оттенках синего, подпор — в оттенках зелёного и так далее. Это несложно, обычная фильтрация, но сложнее подобраться диапазоны цветов, чтобы всё было красиво.

Можно сделать так, чтобы окрашивались только новые системы. У меня сделать это не получилось, но это наверняка сделать можно. Я потратил битых два часа, но скрипт работал нестабильно. Возможно, тут не обойтись без питона, чтобы разделять потоки алгоритма.

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

Если хотите помочь, то придумайте решения этих проблем и поделитесь с народом. Самое сложное — обойтись без пакетов, а сделать всё стандартными нодами или простенькими кодами питона (которые я частенько таскаю из пакетных нодов).

Скрипт можно поменять и применить к трубам, для этого нужно вписать вместо внутренних имён категорий для вентиляции имена категорий для трубопроводов. Внутренние имена можно взять в Гугл-таблице (там есть фильтрация, можете её поменять или отключить, чтобы найти всё, что касается Pipes).

Ссылка для скачивания

Забирайте с Яндекс.Диска

Обновления статей удобно получать в Телеграм-канале «Блог Муратова про Revit MEP». Подписывайтесь и приглашайте коллег. Можно обсудить статью и задать вопросы в специальном чате канала.

Отблагодарить автора

Я много времени уделяю блогу. Если хотите отблагодарить меня, то можете сделать небольшой подарок (именно подарок, такой перевод не облагается налогом).