Найти тему
give BIM

Revit.Python скрипт. Обход-подъем-опуск-разделение воздуховодов/труб/лотков/коробов

При построении трасс труб (или воздуховодов, лотков, коробов) часто возникает ситуация, когда нужно обойти нашей трубой какой-либо элемент в модели по вертикали под заданным углом. Чтобы обойти элемент мы строим разрез, потом на разрезе выполняем само построение (разделяем трубу, растаскиваем трубы от соединительной детали, удаляем соеддеталь и .т.д). Такое количество действий отнимает много времени, а в больших моделях становится долгим само создание и открытие разреза.

Данный скрипт как раз и позволяет выполнить обход прямо на 3Д виде или плане, не создавая дополнительного разреза, и обойтись существенно меньшим количеством действий.

Рассмотрим работу со скриптом в тестовом проекте:

Перейдем на необходимый нам вид, в проигрывателе Dynamo перейдем в папку, где находится скрипт и у нашего скрипта нажмем кнопку «Отредактируйте введенные данные»(3).

Вариант 1 – нам нужно разделить трубу (напомню, что для труб команда «разделить с зазором» не работает):

1.1 Выбираем команду «разделить элемент» (1), в нужном нам месте деления трубы ставим соед.деталь(2) и с помощью клавиши Esc выходим из команды «разделить элемент»

-2

1.2 выбираем поставленную нами соед.деталь(2) и запускаем скрипт

1.3 убеждаемся, что трубы разделились и соед.деталь(2) удалена

-3

Вариант 2 – нам нужно опустить трубу*:

2.1 проделываем тоже, что и в п1.1 -т.е. ставим соед.деталь в место предполагаемого опуска трубы

2.2 в соответствующие поля проигрывателя Dynamo вводим необходимые нам значения угла от горизонтальной плоскости(1) и смещения по высоте(2)

2.3 выбираем соед.деталь(3) и соединённую с ней трубу, которую собираемся сместить вниз(4) и запускаем скрипт

-4

2.4 убеждаемся в выполненном построении

-5

Вариант 3 – нужно выполнить обход*:

3.1 по аналогии с п1.1. и 2.1 ставим соед.детали, но уже 2шт(1 и 2) – т.е. таким образом мы определяем какой участок нужно сместить вниз

3.2 как и в п2.2 в соответствующие поля проигрывателя Dynamo вводим необходимые нам значения угла от горизонтальной плоскости и смещения по высоте

3.3 выбираем трубу(3) межу соед.деталями(1 и 2) и запускаем скрипт

-6

3.4 убеждаемся в выполненном построении

-7

*Если значение в поле «Смещение по высоте» положительное, то обход будет сверху, а вместо опуска - подъем. Для обхода снизу или для опуска в значение в поле должно быть со знаком «–»

Скрипт работает не только с действиями над одной трубой, но и с несколькими, что и продемонстрировано в кратком видео.

Т.е. краткая логика работы такая:

Расставляем соед.детали(с типом детали соединение) и выбираем элементы в соответствием с тем что мы хотим сделать:

- если выбрали только соед.детали – то скрипт разделит с зазором

- если выбрали только трубы между 2-мя соед.деталями – то будет выполнен обход

- если выбрали и соед.детали и подсоединенные к ним трубы – то будет выполнен подъем/опуск, но если вы выбрали неравное количество труб и соед.деталей, то скрипт вам об этом сообщит)

Дополнительно:

- все, что говорю о трубах применимо и к лоткам, коробам, воздуховодам;

- скрипт не работает если у вас не настроена трассировка или вы выбрали такие значения угла и смещения по высоте при которых у вас невозможно. Как честны пример , чтобы пользоваться командой «разделить элемент» в типоразмерах в настройках трассировки в поле “соединение” должна быть соед.деталь.

- скрины из тестового проекта, в который загрузил воздуховоды, трубы, лотки и короба из шаблонов АДСК;

- проверял на реальных проектах в 20 версии Revit;

- для наглядности и чтобы в списке действий можно было отличить операции скрипта добавил в имена транзакций знаки характеризующие действия:

-8

Сам скрипт здесь. Убедительная просьба дать обратную связь.

Планы и обновления скрипта:

- добавлена возможность работы с воздуховодами

- добавлена более полное описание работы

- добавлены знаки в имена транзакций

- в поисках идей какие еще функции добавить в скрипт