Продолжаю цикл статей о создании семейств арматуры, попадающих в одну спецификацию со стандартной арматурой.
В первой части мы создали rfa-семейство в категории «Несущая арматура», а во второй — разобрали принцип создания спецификации, выводящей нужные параметры.
В этой части рассмотрим принцип создания остальных параметров, необходимых нам в спецификации — названия, массы, количества.
Часть 1 — Наименование
Создаю общий параметр «Класс арматуры», тип данных — целое:
Добавляю этот параметр как параметр проекта, по типу, для категории «Несущая арматура» (такое мы уже делали в предыдущей части), прописываю для каждого типа арматуры нужный класс.
Добавляю этот же параметр для семейства арматуры:
Загружаю семейство в проект.
Добавляю в спецификацию арматуры параметр «АрмКласс». Должно получиться что-то такое:
АрмКласс есть и у семейства, и у стандартной арматуры — хорошо. Теперь в зависимости от класс и диаметра можно определить наименование.
Создаю расчетный параметр «НаименованиеРасчетное», тип данных — текст. Напишу формулу, подставляющую нужный текст в зависимости от параметров «АрмКласс» и «ДиаметрРасчетный»:
if(and(АрмКласс = 240, ДиаметрРасчетный = 6 мм), "Ø6 А240", if(and(АрмКласс = 240, ДиаметрРасчетный = 8 мм), "Ø8 А240", if(and(АрмКласс = 240, ДиаметрРасчетный = 10 мм), "Ø10 А240", if(and(АрмКласс = 240, ДиаметрРасчетный = 12 мм), "Ø12 А240", if(and(АрмКласс = 240, ДиаметрРасчетный = 14 мм), "Ø14 А240", if(and(АрмКласс = 240, ДиаметрРасчетный = 16 мм), "Ø16 А240", if(and(АрмКласс = 240, ДиаметрРасчетный = 18 мм), "Ø18 А240", if(and(АрмКласс = 240, ДиаметрРасчетный = 20 мм), "Ø20 А240", if(and(АрмКласс = 400, ДиаметрРасчетный = 10 мм), "Ø10 А400", if(and(АрмКласс = 400, ДиаметрРасчетный = 12 мм), "Ø12 А400", if(and(АрмКласс = 400, ДиаметрРасчетный = 14 мм), "Ø14 А400", if(and(АрмКласс = 400, ДиаметрРасчетный = 16 мм), "Ø16 А400", if(and(АрмКласс = 400, ДиаметрРасчетный = 18 мм), "Ø18 А400", if(and(АрмКласс = 400, ДиаметрРасчетный = 20 мм), "Ø20 А400", if(and(АрмКласс = 400, ДиаметрРасчетный = 22 мм), "Ø22 А400", if(and(АрмКласс = 400, ДиаметрРасчетный = 25 мм), "Ø25 А400", if(and(АрмКласс = 400, ДиаметрРасчетный = 32 мм), "Ø32 А400", if(and(АрмКласс = 400, ДиаметрРасчетный = 40 мм), "Ø40 А400", "Проверьте формулу"))))))))))))))))))
Выглядит страшно, но работает отлично. Для более удобного создания таких формул можно воспользоваться Notepad++ (он подсвечивает скобки и создавать формулы удобнее) или программкой от Романа Митина.
Должно получиться что-то такое:
Часть 2 — Масса
Я уже создал параметр расчетной длины по аналогии с диаметром из предыдущей статьи. Через длину и диаметр будем определять массу стержня — тем же методом, как считал ВРС. Но тут буду использовать округление через формулы, чтобы общая часса совпадала с «проверкой вручную на бумажке»
Определяю»МассуПогМетра» в зависимости «ДиаметрРасчетный»:
if(ДиаметрРасчетный = 6 мм, 0.222, if(ДиаметрРасчетный = 8 мм, 0.395, if(ДиаметрРасчетный = 10 мм, 0.617, if(ДиаметрРасчетный = 12 мм, 0.888, if(ДиаметрРасчетный = 14 мм, 1.208, if(ДиаметрРасчетный = 16 мм, 1.578, if(ДиаметрРасчетный = 18 мм, 1.998, if(ДиаметрРасчетный = 20 мм, 2.465, if(ДиаметрРасчетный = 22 мм, 2.984, if(ДиаметрРасчетный = 25 мм, 3.85, if(ДиаметрРасчетный = 28 мм, 4.83, if(ДиаметрРасчетный = 32 мм, 6.31, if(ДиаметрРасчетный = 36 мм, 7.99, if(ДиаметрРасчетный = 40 мм, 9.865, 0))))))))))))))
Создаю параметр «МассаРасчетная», вычисляю массу стержня через длину и массу погонного метра:
if((МассаПогМетра * ДлинаРасчетная) < 1000 мм, 0.01 * roundup(МассаПогМетра * ДлинаРасчетная / 10 мм), 0.1 * roundup(МассаПогМетра * ДлинаРасчетная / 100 мм))
Вот так выглядит:
Благодаря использованию округления я не получу проблем при подсчете итогов. Также я тут применил округление «до сотых/до десятых» из своей недавней статьи.
Часть 3 — Количество
Тот самый столбец, который создавал нам проблемы — и сейчас его победим!
Кстати, не путайте параметры «Число» и «Количество». Арматура сама по себе уже является массивом, и у массива из десяти хомутов «Число» будет 1, а «Количество» — уже верное, 10. Именно его и надо выводить в спецификации. А для семейства одиночного семейства арматуры в параметре количество будет просто «1».
Хотя и в IFC-арматуре можно создавтаь массивы. Например, массив хомутов с использованием этого параметра:
Вот так будет определяться количество для такого семейства в проекте.
Вывожу в спецификацию параметр «АрмКоличество». По тому же принципу, что и для «Диаметра», создаю параметр «КоличествоРасчетное»:
КоличествоРасчетное = if(АрмВыполненаСемейством, АрмКоличество, Количество)
ПОлучилось так:
Теперь все основные параметры — диаметр, длина, наименование, масса — считаются и для стандартной арматуры, и для семейств, и не нужны какие-то сторонние плагины! Можно создавать сложные семейства с вложенной арматурой и считать вместе с обычными арматурными стержнями.