Разработал библиотеку трубопроводов для пожаротушения компании Fireproff. Скачать её бесплатно сможете по ссылке в конце статьи, а ещё всех, кто прочитает статью, ждёт особый эксклюзив от меня 😉
Предыстория
В октябре 2018, когда ещё работал в проектной компании, я создавал библиотеку Файерпрофа, так как эти трубы закладывали проектировщики в проекты. Та библиотека в сеть не уходила, была только для внутреннего использования.
При этом в сети гуляли семейства этого производителя, пару раз на них натыкался, слышал отзывы, и они были не очень.
Наши дни
И вот в ноябре 2020 мне скидывают библиотеку на проверку. Открываю, смотрю — действительно, редкое говнище. Часть семейств не работает, часть типоразмеров не соответствует списку производителя, УГО непонятное какое и почти везде — логотип компании, самая тупая и бесполезная вещь, которую иногда и мне приходится добавлять в семейства, потому заказчик так хочет и не переубедишь. В этот раз заказчик поступил мудро.
Разрабатывала эту библиотеку какая-то питерская фирма, название уже не помню. Ребята — говноделы. Ну или просто наняли исполнителя и не повезло, такое тоже бывает. Хотя там дело было не просто в какой-то невнимательности, у меня тоже иногда проскакивают такие косячки, а в концептуально неправильном подходе к семействам.
Теперь с гордостью могу сообщить, что всю библиотеку сделал с нуля и она отличная. Проверял не только я, но и опытный специалист по разделу ВК, специально консультировался с ним, а также допытывался от производителя больше данных, чтобы сделать лучше. Всё, что мог, сделал, ребята, и очень надеюсь, что вам будет удобно работать с библиотекой.
Нюансы
Чтобы эта статья была не только самовосхвалением, но и полезной для читателей, расскажу про некоторые проблемы и то, как их решал.
Вварные сёдла
В Ревите неудобно работать с элементами, которые должны врезаться или ввариваться в трубу: всякие бобышки, манометры и эти самые вварные сёдла. С тройниками работать легко и просто, а вот фитинги и арматура другого типа соединяются не так здорово.
Для таких элементов обычно создаю семейство врезок. Вы можете скачать в блоге семейство обычной стальной врезки, но в данном случае была одна трудность: Ревит при соединении врезки не показывает диаметр магистрали. У врезки на соединителях есть по сути только её диаметр, а диаметра магистрали — нет. При этом сам Ревит видит диаметр магистрали и учитывает его при построении.
Однако мы его подхватить не может. Поэтому приходится идти на уловки. В данном случае конкретная проблема была такая: вварныё седла ограничены не только по своим собственным диаметрам, но и по диаметрам труб, в которые могут ввариваться. Из-за того, что Ревит не видит диаметр магистрали, невозможно сделать таблицу поиска и учесть магистраль. Но как-то ограничить эти диаметры надо.
Поэтому добавил в семействе выпадающий список. Это одновременно и элемент управления, и ограничитель, чтобы пользователь не мог выбрать диаметр, которого нет у производителя. В результате сёдла ставятся в два этапа: сначала формируется седло, а потом у него меняется диаметр магистрали, если он отличается от текущего.
Чтобы узнать, как такое сделать, — читайте отдельную статью, в которой подробно рассказываю про выпадающие списки в семействах.
Комбинированные фитинги
Следующая проблема — в Ревите нельзя настроить соединения между разными типами труб. Внутри одного типа у нас есть настройки трассировки, а вот между — ничего. Конечно, такая межтиповая настройка была бы довольно громоздкой, это целая матрица на несколько фитингов, но лучше что-то, чем ничего. Интерфейс для пользователя придумать можно... Мечты, мечты. Про настройки трассировки тоже есть отдельная хорошая статья.
Как решаю эту проблему. Если речь идёт про комбинированные муфты с переходом на резьбу — они есть в фитингах Файерпрофа, — то здесь обычно создаю соединительную деталь трубопровода с типом детали «Мультипорт». Все типы деталей разбираю в отдельной статье, там же рассказываю, почему лучше всего подходит именно мультипорт. У этого типа детали есть один минус и один плюс. Минус — такой фитинг придётся вставлять руками на открытый конец трубы, он не врезается в трубу. Плюс — фитинги никогда и никуда не исчезнет при перестроении трассы.
Поскольку переход с одного типа трубы на другой всё равно сопряжён с открытым концом трубы, то не вижу ничего страшного в том, чтобы руками ставить муфты или уголки с переходом на резьбы. А поскольку перечень таких переходных элементов обычно ограничен, то вообще предпочитаю делать их типами на каждую комбинацию диаметров.
Теоретически можно делать универсальные семейства, которые будут менять геометрию и параметры для спецификации по галочке. Поставили обычную муфту, нажали на галочку, она превратилась в муфту с резьбой. Но тут другая проблема: мало того, что диаметры могут не совпадать, так ещё и их перечень может отличаться от того, что есть у основного типа трубы.
То есть вот у вас полипропилен, у него диаметры с 16 до 32. Вам нужен переход на резьбу G 1/2", а это обычно уже диаметр 15. Этот диаметр не добавить в настройки трассировки, так как его нет у трубы, поэтому ставить галочки, потом перебивать диаметр или радиус — всё это тоже не супер удобно. Единственное удобство — семейство одно на все случаи. Но мне кажется, быстрее просто вытащить из диспетчера подходящий типоразмер и вставить руками.
Другое дело с тройниками с резьбовыми ответвлениями. Их сделал типом детали «Тройник», чтобы можно было сначала построить обычный тройник, удалить трубу-ответвление, потом поменять тройник на комбинированный, и уже от него рисовать ответвление.
Тут есть риски, что при обновлении трассировки тройник может замениться на стандартный, но просто надо помнить об этом, работать аккуратнее и проблем не будет. Это проще, чем разрывать магистраль, вставлять на открытый конец тройник, потом присоединять с другой стороны второй кусок магистрали и только после рисовать трубу-ответвление. Ну, вот так я думаю.
А вот когда у нас есть чёткий типоразмерный ряд, тогда фитинги лучше делать по CSV-таблице с автоматическим подбором размеров. В данном примере у нас есть бурты с металлическими фланцами. Здесь соответствие строгое: если к бурту пришла труба 90 мм, то через фланец подключится всегда стальная труба с диаметром 80 мм.
В этом случае нам нечего бояться, что какой-то размер не подойдёт, они у нас по факту и так заданы диаметром бурта. Вот тут уже делать типоразмеры не надо, надо делать так, чтобы семейство хватало диаметр с трубы и перестраивалось. Именно так бурты с фланцами и сделал.
Эксклюзив для подписчиков
Невозможно заранее узнать, на каком шаблоне и как работают люди. Кто-то работает на шаблоне АДСК с использованием макросов, кто-то нет. Поэтому в разработанной библиотеке есть только ключевая спецификация, в которую можно внести кучу нужной информации, но с ней две проблемы.
- Нельзя использовать общие параметры, только параметры проекта, а значит, нельзя собрать общую спецификацию на трубы и фитинги сразу.
- Ключи нужно заполнять у труб вручную, через свойствах трубы или через спецификацию — всё равно вручную. Хоть это и недолго, об этом нужно помнить и делать.
Поэтому я решил написать скрипт в Динамо, который всё сделает за вас. Если надо ключи — заполнит ключи. Если надо просто сформировать наименования, то сформирует и запишет в указанный параметр, по умолчанию «ADSK_Наименование».
Ниже расскажу, что и как можно поменять в скрипте, чтобы адаптировать под свой шаблон и свои формы наименований. Про работу с ключевыми спецификациями читайте отдельную статью.
Все группы пронумеровал, расскажу про каждую отдельно, что она делает и что можно менять под себя.
Первая группа скрипта
В этой группе берутся все трубы в проекте и выделяются только трубы Fireproff. Делается это фильтрацией по параметру «Спецификация/Тип». Этот параметр добавляется при создании трубы, поменять его нельзя, как и значение в нём. Если хотите менять, то создавайте свой типоразмер труб и меняйте значения во время создания. Как — читайте в статье про создание пользовательских труб.
Вторая группа
В этом блоке используются два питон-скрипта, код в них менять не надо. Здесь берутся все спецификации из проекта и выделяется та, в которой есть ключи для наших труб. Если вы скопировали в свой проект трубопроводы и ключевую спецификацию для них, а потом переименовали спецификацию, то и в скрипте нужно её переименовать — в красном прямоугольнике нод для текста. Вводите имя спецификации без кавычек.
Третья и четвёртая группы
Объединил, так как они работают совместно друг с другом и с первым блоком. В группе 3 создаётся список ключей для наших труб и назначается трубам. В группе 4 получаем список диаметров, чтобы подать его в группу 4.
По идее ничего менять здесь не нужно.
Пятая группа
Здесь у трубы заполняются данные по толщине стенки — она вычисляется из внешнего и внутреннего диаметров трубы, длине — берётся из модели с указанным запасом, округляется до 1 знака в метрах, заполняются артикулы и массы погонных метров.
В красном прямоугольнике — параметры, в которых заносятся данные и величина запаса. Ноды подписаны, так что не запутаетесь. В зелёных прямоугольниках — системные параметры трубы, вряд ли их нужно менять, но если почему-то надо, то можете.
Артикулы и массы собираются по данным от производителя простым кодом в питоне.
Если вдруг массы поменялись и вам нужно их актуализировать, то нажмите два раза левой кнопкой мыши по ноду, зайдите в него и вбейте новые числа. На первой картинке с кодом массы — это фиолетовые числа в красном прямоугольнике. Там есть деление на 3, потому что в исходных данных масса была для куска в 3 метра. Если у вас масса уже для 1 метра, то вбивайте её без всяких делений.
В жёлтом прямоугольнике — фиолетовые цифры с диаметрами. На картинке с артикулами они в красном прямоугольнике, можете вбить свой текст.
Если вам не нужны массы и артикулы, то просто заморозьте или удалите ноды Element.SetParameterByName, которые я отметил на картинке ниже. Чтобы заморозить нод, нужно нажать по нему правой кнопкой мыши и выбрать «Заморозить».
Шестая группа
В этой группе формируется наименование. Для этого получаю с трубы диаметр номинальный, внешний и внутренний. Снова получаю стенку, перевожу значение в текст, то же делаю с номинальным диаметром.
А потом формирую наименование и записываю в параметр трубы.
Формируется всё в Код Блоке по такому шаблону:
Текст + номинальный диаметр + значок «x» + толщина стенки
Если вам нужна иная форма записи, то отредактируйте этот Код Блок, добавьте свой текст и переменные. В данном случае переменные — это буквы «a» и «b». На вход «a» подаю номинальный диаметр, на вход «b» — стенку трубы, в итоге получаю наименование и записываю в трубу.
Например, если вам надо наименование в виде «Труба ППР армированная DN32», то текст в Код Блоке надо переписать вот так:
"Труба ППР армированная DN" + a
Кавычки обязательны, a — это переменная, у Код Блока появится вход под неё, туда надо подать номинальный диаметр трубы в текстовом виде. Текст склеится и наименование запишется. Если под наименование нужен другой параметр, то измените его с «ADSK_Наименование» на свой.
Вот так работает скрипт, пользуйтесь на здоровье, меняйте так, как удобно.
Данный скрипт распространяется бесплатно, но без моего согласия его нельзя добавлять на какие-либо сайты и ресурсы.
Ссылки
Трубопроводы и фитинги (ссылка на бимлиб)
Скрипт для ключей и наименований
Обновления статей удобно получать в Телеграм-канале «Блог Муратова про Revit MEP». Подписывайтесь и приглашайте коллег. Можно обсудить статью и задать вопросы в специальном чате канала.
Бесплатные обзоры ваших моделей
Раз в две недели провожу «Ревит-линчи» — разбираю файлы семейств и проектов пользователей и отвечаю на вопросы по Ревиту и БИМ-технологиям. Дату и ссылку на Ревит-линч публикую в Телеграм-канале. Приходите, там интересно. Посмотреть записи можете на моём Ютуб-канале.
Отблагодарить автора
Я много времени уделяю блогу. Если хотите отблагодарить меня, то можете сделать небольшой подарок (именно подарок, такой перевод не облагается налогом).