Основная проблема при работе с трубами — их нельзя гнуть так, как их гнут на монтаже. Ревит простить тут можно, его логика понятна, но легче от этого не становится.
Можно посчитать длины гнутых участков в семействах отводов, это простая формула неполной длины окружности, но эта длина будет собираться в спецификации фитингов, а не трубопроводов.
Можно создать семейство отвода, в котором длина сразу считается в ADSK_Количество, а потом собрать всё в спецификации по нескольким категориям, задав отводу в параметре ADSK_Наименование такое же имя, как и у трубы. Выглядеть все будет хорошо, но для заполнения ADSK_Наименования у трубы нужно запускать макросы из шаблона АДСК. Хотя это уже довольно приемлемый вариант.
Мое предложение
Объединить оба способа: семейство + автоматизация, в моём случае это Динамо, а не макрос.
Как это работает: вы моделируете систему из трубы определённого типа с определённым семейством отвода, так оно обычно ведь и бывает. А потом запускаете скрипт, который заполняет все параметры так, что на выходе вы получаете спецификацию трубопроводов, в которой будет вся длина труб в контуре. И отводы и трубы. В одной спецификации.
У моего метода есть и минус, о нём скажу в конце.
Условия работы скрипта
Я сделал всё на основе шаблона АДСК для ОВ версии 1.2. Взял оттуда семейство отвода «ADSK_ФасоннаяЧасть_ПЭ_Отвод_Гнутый» и немного изменил его, добавил туда вложенное общее семейство в категории «Труба». Оно и падает в спецификацию трубопроводов. Хотите узнать, как такое делается? Приходите ко мне в Телеграм @Vadim_Radi или пишите на почту bimvadim@bk.ru, видеоролик по созданию отводов стоит 250 ₽.
Имя системы нельзя добавить скриптом во вложенное семейство категории «Труба», потому что Динамо этот параметр не видит, поэтому приходится использовать другой параметр, я использовал «ADSK_Группирование».
То же для наименования, я использовал «ADSK_Наименование», и для количество — тут у меня «ADSK_Количество».
В остальном я постарался сделать скрипт очень гибким. Если у вас существует иная система наименований для семейств, то при запуске скрипта через Проигрыватель Динамо вы можете руками вбить все нужные данные. Давайте пройдёмся по командам.
1 — в этот параметр будет копироваться имя системы из системного параметра, в итоге одно имя системы будет и у обычных труб, и у отводов, и у вложенной трубы. Если нужен другой параметр, нужно редактировать семейства отвода и вложенной трубы + добавлять параметр проекта для обычных труб, то есть подходит только другой общий параметр.
2 — укажите полное имя семейства, которое вы используете как гнутую трубу.
3 — в этот параметр будет записываться наименование. Для обычных труб — оно сформируется с учётом пункта 6, для вложенной трубы — скопируется из обычной трубы такого же диаметра, что и отвод. Если нужен другой параметр — всё менять, как в случае с именем системы.
Дублирую картинку и го дальше.
4 — в этот параметр будет записываться количество в метрах с указанным запасом. Если нужен другой параметр, надо всё редактировать.
5 — коэффициент, который будет домножаться на длину и обычной трубы, и вложенной, если указать скрипту такую необходимость.
6 — если ваши трубы называются иначе, чем в шаблоне АДСК, то просто вбейте сюда первую часть названия. Наименование соберётся так:
«А» + «Диаметр условный» + «х» + «Толщина стенки трубы», где А — тот текст, что вы вобьёте в поле 6.
Пример: если в поле 6 вбито «Труба полиэтиленовая KREC-PEX DN», диаметра условный трубы 20, внешний диаметр равен 20, а внутренний 16, то запись будет такая: «Труба полиэтиленовая KREC-PEX DN20х2.0»
Толщина стенки считается как половина разницы между внешним и внутренним диаметром. Если у вас забиты эти значения на пофиг, то не надо так делать, переделайте нормально.
7 — укажите имя типа трубы, которой вы делаете теплый пол, чтобы отфильтровать её от других труб. В идеале этот тип должен быть только для тёплого пола, потому что скрипт сначала создаёт имена для труб по их диаметрам, а потом эти же готовые имена записывает во вложенные трубы, чтобы и настоящие и фейковые трубы имели одинаковое наименование.
8 — если вы хотите добавить запаса ещё и на длину гнутых частей системы, то поставьте переключать в положение True. Запас будет тот же, что в поле 5. Таким образом вы сможете накинуть свой запас на всю систему вообще. По умолчанию выключено.
У гнутых труб можно вручную поменять коэффициент гиба. Сделал это для случаев, когда места мало, а повернуть нужно. Выделяете отвод, в блоке «Зависимости» будет параметр «Коэффициент гиба», по умолчанию сохранил значение из семейства — 5,5. Длина будет пересчитываться с учётом коэффициента.
В файле RVT есть две спецификации:
«О_ОВ_Трубопроводы_Гнутые» — это стандартная «О_ОВ_Трубопроводы», но с откорректированной сортировкой (убрал сортировку по ADSK_Марка и ADSK_Код изделия). В «В_ОВ_Трубопроводы_Гнутые» сортировка идёт не по имени системы, а по ADSK_Группирование, плюс немного иначе идут столбцы.
Вот так выглядит спецификация В_ОВ (уже после выполнения скрипта):
В третьем столбце заполненные поля — это имена труб, которые заполняются формулой, это стандартный приём из шаблона АДСК. Пустые поля — это вложенные трубы в отводах, которые попали в спецификацию, и формулой их заполнить нельзя.
Таким образом в этой спецификации можно понять, правильно ли скрипт заполнил наименование для обычных труб. Для вложенных проверять только глазками. Кроме того, после выполнения скрипта можно выделить строки с вложенными отводами для определённой системы, перейти на обычный вид и тогда будет можно заполнить параметр «Имя системы» — системный параметр, который нельзя заполнить скриптом, но можно руками.
Если хотите где-то что-то фильтровать или сортировать по имени системы, то проделать такую ручную работу нужно. Это несложно через спецификацию.
В итоге скрипт назначит всем элементам имена системы в ADSK_Группирование, посчитает обычным трубам длину в ADSK_Количество, и сформирует наименования для обычных и вложенных труб. Сами отводы в спецификации попадать не будут, так как они отфильтровываются по ADSK_Наименование.
ADSK_Наименование в семействе самого отвода и тот же параметр во вложенной трубе — это не связанные параметры, значение из отвода не падает в трубу. В трубу падает текст из параметра семейства «Наименование_Труба».
На выходе имеем спецификацию по ГОСТ, в которой посчитаны длины всех элементов теплого пола: и обычная труба, и та труба, что идёт на гнутые участки. Всё отсортировано по имени системы и сидит в одной спецификации.
Важно!
Параметр «ADSK_Наименование» в трубе связан с параметром «Наименование_Труба» в отводе. Из-за этого блокируется работа макроса CopyParameters из шаблона ОВ, он выдаёт вот такую ошибку:
Если создавать ещё один общий параметр, добавлять его везде и записывать наименование в него, то такой метод тоже не сработает, макрос всё равно будет выдавать ошибку, потому что ADSK_Наименование добавляется всей категории трубы как параметр проекта, поэтому он всё равно добавится и во вложенное семейство трубы и заблокируется семейством. В видео я говорю о таком варианте, но на момент записи я его не проверял и не знал, что он тоже не сработает.
Поэтому либо пользоваться только скриптом, либо только макросом. Понимаю, что это так себе альтернатива, но вот так. Возможно, из-за этого мой метод никуда не годится.
Идеальный вариант — делать тёплые полы в отдельном файле Ревита. Ну да, плохо, а что поделать? Правки в Конституцию этого не запрещают.
Либо другой вариант — собирать длину трубы в спецификации по нескольким категориям, в которой будут обычные трубы и гнутые фитинги-отводы. У фитингов длина будет считаться через ADSK_Количество внутри семейства, а у остальной трубы заполняться макросом или скриптом. При этом нужно будет в фитингах в ADSK_Наименование дать каждому диаметру точно такое же имя, как и то, что собирается формулой для обычных труб. Тогда Ревит сможет всё собрать в одном месте и просуммировать длину.
Подобный скрипт тоже могу написать, пишите в комменты, если интересно.
Демонстрация работы
Записал короткий ролик, как всё это выглядит в проекте.
Подписаться на обновления блога
в Телеграм-канале «Блог Муратова про Revit MEP»
Отблагодарить автора
Я много времени уделяю блогу. Теперь можно отблагодарить меня. Это не обязательно, но такой подарок даст сил продолжать.