В прошлой статье про спецификации я показывал сам инструмент и привёл пример спецификации для воздухораспределителей. Точно по такому же принципу можно собрать спецификацию на остальные штучные изделия: арматуру, фитинги, оборудование.
Для нештучных позиций типа воздуховодов, труб, их гибких вариантов и изоляции подход во многом тот же самый, но есть свои нюансы. Главный из них — необходимость считать длину/площадь/объём элементов, а не их штуки. Кроме того, у воздуховодов размеры могут быть любые и нужно вычислять стенку, а у труб обычно есть фиксированный сортамент.
Давайте посмотрим, как собрать спецификацию для воздуховодов стандартными инструментами. После покажу вариант с Динамо-скриптом и макросами из шаблона АДСК. Для трубы всё аналогично, только проще.
Стандартные инструменты
Прежде, чем составить спецификацию, нужно убедиться, что у нас есть все нужные поля. Конечно, для пустых столбцов, которых у нас довольно много, можно надобавлять системные параметры, которые ничем не заполнены, но это решение ненадёжное. Вдруг в будущем мы туда что-нибудь будем вносить, и тогда придётся менять поля.
Поэтому лучше всего сразу добавить все поля к параметрам проекта. Про них я рассказывал в отдельной статье. Я предпочитаю добавлять ADSK-параметры, чтобы из них и формировать большинство столбцов.
Вкладка «Управление» → Параметры проекта → Добавить → Общий параметр → далее выбираем параметры и добавляем к категории «Воздуховоды».
![Пример того, как добавить общий параметр в параметры проекта Пример того, как добавить общий параметр в параметры проекта](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5eacfcc5b9c1f807fa23c0f3.png)
При добавлении параметров надо сразу решить, будете вы это делать по типу или экземпляру. Если какое-то значение должно быть общим для всех воздуховодов типа, например, единицы измерения, то нужно добавлять по типу. Если может меняться у разных воздуховодов в пределах типа, например, примечание, то по экземпляру.
![Вот настройки для параметра по типу. Добавляю сразу и трубе, и воздуховоду Вот настройки для параметра по типу. Добавляю сразу и трубе, и воздуховоду](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed4d3bfe1c2261710b50083.png)
![Настройки параметра по экземпляру Настройки параметра по экземпляру](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed4d47f66114c67b34fdc12.png)
Обратите внимание на скриншот выше. Когда я выбираю «Экземпляр», то ниже доступны ещё два чекбокса, которые неактивны при «Типе». Это настройки параметра для работы в группах. Когда мы создаём группы в Ревите, то элементы внутри группы меняются синхронно: изменили в одном экземпляре группы, поменялось во всех остальных экземплярах, то же и с параметрами. Про группы я напишу отдельную статью.
Чекбокс «Значения выравниваются для каждого типа группы» означает: если вы зайдёте в группу и отредактируете в ней параметр у одного элемента, например запишите в параметр «ADSK_Наименование» воздуховоду значение «Воздуховод1», то этот параметр заполнится у всех аналогичных воздуховодах во всех остальных группах.
Чекбокс «Значения могу изменяться по экземплярам группы» означает: если вы внесли какие-то изменения в параметр «ADSK_Наименование», то значение поменяется только у того воздуховода, у которого вы меняли параметр, все остальные не изменятся.
В нашем случае оба варианта имеют право на жизнь, всё зависит от сценариев работы, я оставлю первый чекбокс, его потом можно переставить. А вот когда буду добавлять «ADSK_Позиция», то там выберу второй чекбокс, потому что нумерация в группах не обязательно совпадает. То же и с «ADSK_Примечание».
![Вот так выглядят все мои параметры для воздуховодов и труб Вот так выглядят все мои параметры для воздуховодов и труб](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed4d7b352d2d279d5f37835.png)
После того, как добавили параметры, давайте сразу заполним постоянные поля: единицы измерения и марку. Поскольку это параметры типа, я выделю любой воздуховод, нажму на «Изменить тип» и в свойствах воздуховода внесу данные. Это нужно повторить для всех типов воздуховодов, если их несколько в проекте.
![Данные из параметров типа появятся у всех воздуховодов Данные из параметров типа появятся у всех воздуховодов](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed4d92b3a32a173acd67368.png)
Из оставшихся параметров нам нужно заполнить наименование и посчитать длину. Начнём с длины.
До этого я добавил параметр «ADSK_Количество», но заполнить его можно только с помощью макросов или скриптов Динамо. Поэтому в стандартном методе будем считать длину через системные параметры. То же касается и «ADSK_Наименование» — заполнить его можно, но только частично. Поэтому наименование мы соберём иным путём, а АДСК-параметр заполним в разделах про макрос и скрипт.
Создаю спецификацию воздуховодов. Выбираю категорию «Воздуховоды», добавляю АДСК-параметры, кроме Количества и Наименования, системные параметры «Длина» и «Размер». Пока что у нас будет спецификация без наименования, его соберём чуть позже.
![Вот эти параметры добавлю для начала Вот эти параметры добавлю для начала](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed52028ce461a6621713dd9.png)
![Сразу настрою сортировку по размеру и сниму галочку «Для каждого экземпляра» Сразу настрою сортировку по размеру и сниму галочку «Для каждого экземпляра»](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed52062613c6f04853658df.png)
С длиной два сценария: считать длину фактическую или накинуть запаса. Рассмотрим оба варианта.
Фактическая длина
Чтобы посчитать фактическую длину, ничего особенного делать не надо — просто добавить параметр «Длина». Он системный, Ревит сам считает длину воздуховода. Однако, если настроить спецификацию, как показано выше, и посмотреть на неё, то длина в ней не считается. Этот блогер сволочь, отписываемся от него!
Стойте-стойте, рано. Дело в том, что у Ревита есть одна особенность: всем числовым параметрам, кроме системного параметра «Число», нужно указывать, что их в спецификации нужно суммировать. Делается это на вкладке «Форматирование». Все новички, абсолютно все, забывают об этом и могут часами искать решение.
![Выделяете нужный параметр и указываете в выпадающем меню внизу способ подсчёта Выделяете нужный параметр и указываете в выпадающем меню внизу способ подсчёта](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed521af1c0953656663ea3b.png)
Казалось бы, что за неудобная фигня, но в этом есть свой смысл. Если такого выбора не будет, то мы не сможем указать Ревиту, что в ячейке нужно показывать не сумму по всем элементам, а значение для одной позиции. Это нужно, например для столбца с массой. Ведь массу мы указываем не для всех элементов, а массу 1 единицы.
Хотя удобнее было бы, чтобы по умолчанию Ревит считал суммы.
Теперь всё считается без запаса, всё как в модели до миллиметра.
![Спецификация воздуховодов Спецификация воздуховодов](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed52260433f235bf64d4677.png)
Как видите, у круглых воздуховодов нет значка «м» в единицах измерения. Потому что в свойствах круглых воздуховодов, я не выставил это значение. Выставлю его у одной позиции, и буква появится у всех — потому что это параметр типа.
Чтобы перевести длину в метры, выделю столбец с длиной и нажму на кнопку:
![Укажу метры и 1 знак после запятой Укажу метры и 1 знак после запятой](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed522cf589f715069d2e0e7.png)
Готово.
Длина с запасом
Чтобы накинуть запаса на длину, нужно создать расчётный параметр. В принципе, об этом я уже рассказывал в своей большой статье про спецификации, можете почитать там. Здесь же просто покажу последовательность действий картинками.
![Создаю новый расчётный параметр Создаю новый расчётный параметр](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed52363325b77017723c1fb.png)
![Не забудьте про правильный тип данных и что параметр должен быть добавлен в спецификацию, чтобы указать его в формуле Не забудьте про правильный тип данных и что параметр должен быть добавлен в спецификацию, чтобы указать его в формуле](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed52393905f9f2e9ff242e5.png)
![Скрываю системную длину, удалять её нельзя Скрываю системную длину, удалять её нельзя](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed5251691f1bc3a1082a71b.png)
![Меняю единицы на метры и говорю, что нужно суммировать значение Меняю единицы на метры и говорю, что нужно суммировать значение](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed5242109dce074858b7cbe.png)
![Меня единицы Меня единицы](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed5243eda2c0638f79f1bd1.png)
На выходе получаю следующее:
![Спецификация с длиной с запасом Спецификация с длиной с запасом](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed52576ed3b63751a217dc9.png)
Теперь перейдём к наименованию.
Наименование
Здесь у нас сложности, потому что для воздуховодов нужно ещё и толщину стенки посчитать. В стандартном Ревите в ручном режиме определить толщину стенки можно расчётным параметром, но расчётный параметр нельзя добавить в объединённый параметр, которым мы и будем собирать наименование.
Поэтому сделаем колхозно: наименование будет собираться в нескольких столбиках. Наименование будет состоять из 4-х блоков:
[ Воздуховод из оцинкованной стали ] + [ Размер ] + [ Толщина ] + [ класс герметичности ]
Цель — получить вот такой текст:
Воздуховод из оцинкованной стали 500х200, b=0.7
Воздуховод из оцинкованной стали ø200, b=0.5
Воздуховод из оцинкованной стали 600х400, b=0.7, класс герметичности «В»
Для первого блока воспользуемся параметрами типа воздуховодов. Зайду в свойства воздуховодов и напишу там в «Комментарии к типоразмеру» «Воздуховод из оцинкованной стали».
![Пример заполнения для прямоугольного воздуховода. Не забудьте сделать то же для остальных типов Пример заполнения для прямоугольного воздуховода. Не забудьте сделать то же для остальных типов](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed528fad77eb50f9f59f330.png)
Второй блок Ревит будет формировать сам. Проверьте, чтобы в Настройках ОВиВК у вас был префикс «ø» для круглого воздуховода.
![Управление — Настройки MEP — Настройки ОВиВК Управление — Настройки MEP — Настройки ОВиВК](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed5295f3a82a25363681745.png)
Толщина и класс герметичности будут расчётными параметрами, но текстовыми.
Класс герметичности нужен всем воздуховодам, которые покрыты огнезащитой. Плюс тем, которые не покрыты, но проходят в шахтах или ещё как-нибудь и должны быть герметичными. Про второй вариант я ничего не расскажу, подумайте сами, как это реализовать по аналогии, покажу только для огнезащиты. Собственно, и первый вариант тоже можно реализовать по-разному, я покажу лишь ход мысли, а реализовать можно иначе (например, забить и применять макросы или скрипты).
Добавляю в спецификацию параметры «Ширина», «Высота», «Диаметр» и «Толщина изоляции» и сортирую по нему, чтобы разделить воздуховоды в изоляции от неизолированных. Я знаю, что воздуховоды у меня либо ничем не покрыты, либо покрыты огнезащитой 10 мм, либо теплоизоляцией 50 мм. Влияет на что-то только огнезащита, поэтому возьму 10 мм как признак того, что воздуховод должен быть толщиной 0,9 мм независимо от размера.
Размеры у круглых и прямоугольных воздуховодов пишутся по-разному, поэтому нужен критерий для их отличия. Для этого создам параметр проекта «Круглый воздуховод» с типом данных «Да/нет» и сделаю его по типу. Про параметры проекта читайте подробнее в отдельной статье.
![Добавляю параметр проекта Добавляю параметр проекта](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed52f728e01ac7640649d93.png)
Теперь захожу в свойства типа прямоугольного воздуховода и галочку с параметра снимаю.
![Снимаю галочку, у круглых оставляю — логично Снимаю галочку, у круглых оставляю — логично](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed52fcd7e39493451944062.png)
После всех этих манипуляций возвращаюсь в спецификацию и добавляю параметр «Круглый воздуховод». Теперь создаю расчётный параметр с типом данных текст и вписываю вот такую формулу:
![Создаю расчётный параметр Создаю расчётный параметр](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed530efb296fe37a9317faf.png)
if(Толщина изоляции = 10 мм, "b=0.9 мм", if(Круглый воздуховод, if(Диаметр > 1000 мм, "b=0.9 мм", if(Диаметр > 250 мм, "b=0.7 мм", "b=0.5 мм")), if(or(Ширина > 1000 мм, Высота > 1000 мм), "b=0.9 мм", if(or(Ширина > 300 мм, Высота > 300 мм), "b=0.7 мм", "b=0.5 мм"))))
Что делает эта формула:
- Если толщина изоляции равна 10 мм, то назначает толщину 0,9 мм независимо от размера и сечения воздуховода.
- Если толщина изоляции не равно 10 мм, то проверяет, есть ли галочка в параметр «Круглый воздуховод».
- Если есть, то проверяет диаметр. Если он больше 1000 мм, то вносит толщину 0,9 мм, если больше 250 мм, то 0,7 мм, в остальных случаях — 0,5 мм.
- Если воздуховод не круглый и на нём нем изоляции толщиной 10 мм, то прогоняет его по ширине и высоте.
- Если ширина или высота больше 1000 мм, то 0,9 мм, если больше 300, то 0,7, в остальных случаях — 0,5 мм.
В итоге получаем столбец, в котором указана толщина металла. Остался последний блок, в котором нужно указать класс герметичности. Поскольку я рассматриваю упрощённый вариант, то сделаю просто: все воздуховоды с огнезащитой (то есть изоляцией толщиной 10 мм) должны быть классом герметичности «В», то я просто допишу к толщине этот текст в формулу. Получится вот так:
if(Толщина изоляции = 10 мм, "b=0.9 мм, класс герметичности «В»", if(Круглый воздуховод, if(Диаметр > 1000 мм, "b=0.9 мм", if(Диаметр > 250 мм, "b=0.7 мм", "b=0.5 мм")), if(or(Ширина > 1000 мм, Высота > 1000 мм), "b=0.9 мм", if(or(Ширина > 300 мм, Высота > 300 мм), "b=0.7 мм", "b=0.5 мм"))))
Для более сложных вариантов нужно более сложная формула, которая учитывает больше нюансов, вот и всё. Придумайте сами, как реализовать толщину и герметичность для воздуховодов без непосредственной огнезащиты на них. Если не получится, пишите в Телеграм.
Получаем вот такую красоту:
![Куча геморроя, параметров, длинная формула, но мы получили желаемое Куча геморроя, параметров, длинная формула, но мы получили желаемое](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed53226907fa2760405605c.png)
В формулах желательно пользоваться кавычками вот таких типов: « » „ “, а не стандартные, которые вы получаете нажатием shift+2 — "". Эти кавычки в формуле указывают на текстовое значение, поэтому, если вы напишите «"класс герметичности "В""», то Ревит не сможет прочитать формулу и выдаст ошибку. Так что кавычки-ёлочки надо использовать. Это ещё и точки зрения русской типографики правильно. Шифт+2 — это знак дюйма, а не кавычка.
Теперь мы знаем, как получить все блоки. Первые два блока получаем объединением параметров.
![Создаю новый объединённый параметр Создаю новый объединённый параметр](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed533445291be249c607de6.png)
![Настраиваю разделители. Просто ставлю пробел после первого параметра Настраиваю разделители. Просто ставлю пробел после первого параметра](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed533de7e78ba3b541fd945.png)
![Ставлю объединённый параметр перед толщиной, потом всё подвинем в начало Ставлю объединённый параметр перед толщиной, потом всё подвинем в начало](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed533d5996a6208ad800583.png)
![Получается вот Получается вот](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed53403f0ab5e1f549cd5b8.png)
Дальше дело техники — нужно скрыть ненужные столбцы (не удалять!), выставить оставшиеся в правильно порядке, задать им ширину, вот и получится спецификация. Конечно, есть загвоздка, как получить 130 мм для наименования, если оно состоит из двух столбцов переменной длины. Но это можете установить опытным путём, я выставил 95 мм для объединённого параметра и 35 для толщины. Шапку сделал редактированием заголовка, подзаголовки скрыл.
В общем, получилось нечто съедобное, пусть и не самое вкусное.
![Общий вид спецификации Общий вид спецификации](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed5389cba85b763c8dd07da.png)
![Наименование поближе. Класс герметичности портит всю малину Наименование поближе. Класс герметичности портит всю малину](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed538ad91f1bc3a1082a974.png)
Это был способ на голом Ревите с помощью стандартных средств.
Скрипт Dynamo
Создаёте спецификацию на параметрах АДСК или копируете из шаблона АДСК ОВ. Все-все параметры нужны. «ADSK_Наименование» и «ADSK_Количество» — по экземпляру.
Читаете мою статью и оттуда же скачиваете скрипт.
Запускаете скрипт в Проигрывателе Динамо.
Получаете готовую красивую спецификацию.
Профит.
Макрос из шаблона ОВ от АДСК
При открытии проекта включите макросы.
![Включить макросы Включить макросы](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed53b1fd84b4b08fd79e5cd.png)
Перейдите в спецификацию В_ОВ_Круглые воздуховоды или В_ОВ_Прямоугольные воздуховоды. Макрос скопирует значения из второго столбца в третий, то есть объединённый параметр с наименованием в «ADSK_Наименование».
![В — префикс для вспомогательных спецификаций В — префикс для вспомогательных спецификаций](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed53c0e8441b77f798e7554.png)
![Так выглядит спецификация до заполнения параметра Так выглядит спецификация до заполнения параметра](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed53da9cbfac70930dac262.png)
Перейдите на вкладку Управление — Диспетчер макросов.
![Выделил диспетчер макросов Выделил диспетчер макросов](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed53c80b518fa3bb2daeac0.png)
Выделите макрос CopeParameters, нажмите справа на «Выполнить».
![Выполните макрос Выполните макрос](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed53d1b81ae8816561eadca.png)
Всё, наименования для воздуховодов скопированы.
![После выполнения вспомогательная спецификация выглядит так После выполнения вспомогательная спецификация выглядит так](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed53d5eb6abcc0e812516d3.png)
Результат можно посмотреть в спецификации О_ОВ_Воздуховоды:
![А вот так выглядит основная спецификация А вот так выглядит основная спецификация](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed53d838698cf45d47a762c.png)
Макрос также считает толщину стенки, заносит её в примечание и заполняет параметр «ADSK_Количество» с запасом, который указан в глобальном параметре Запас.
![Это длина с запасом, заносится в ADSK_Количество Это длина с запасом, заносится в ADSK_Количество](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed53e2fba85b763c8dd0866.png)
![Вот отсюда берётся запас на длину Вот отсюда берётся запас на длину](https://muratovbim.pro/wp-content/uploads/2022/12/pub_5e48c88640e9c554bad4faf4_5ed53e47f8930b1b664bacf2.png)
Для выполнения макроса нужно правильно пользоваться типами воздуховодов в шаблоне, чтобы макрос учитывал огнезащиту.
Профит.
Подписаться на обновления блога и получать ссылки на свежие статьи в Телеграм-канале «Блог Муратова про Revit MEP»
Рассказывать друзьям и коллегам про мой блог
всегда и везде, даже без повода, и уходить в закат
Отблагодарить автора
Я много времени уделяю блогу. Теперь можно отблагодарить меня. Это не обязательно, но такой подарок даст сил продолжать.