Семейства для армирования — часть 3

Продолжаю цикл статей о создании семейств арматуры, попадающих в одну спецификацию со стандартной арматурой.
В первой части мы создали rfa-семейство в категории «Несущая арматура», а во второй — разобрали принцип создания спецификации, выводящей нужные параметры.

В этой части рассмотрим принцип создания остальных параметров, необходимых нам в спецификации — названия, массы, количества.

 

 

Часть 1 — Наименование

В спецификации арматуры в «Наименовании» будет выводиться что-то вроде «10 А500С». Сделаю это через текстовый параметр. Для стандартной арматуры добавлю его через параметры проекта «По типу» и пропишу для всех типов, а в семействах буду определять формулой. Нам понадобится ещё один параметр — для класса арматуры (а ещё он понадобится для ведомости расхода стали!).

Создаю общий параметр «Класс арматуры», тип данных — целое:

 

Добавляю этот параметр как параметр проекта, по типу, для категории «Несущая арматура» (такое мы уже делали в предыдущей части), прописываю для каждого типа арматуры нужный класс.

Добавляю этот же параметр для семейства арматуры:

 

Загружаю семейство в проект.

Добавляю в спецификацию арматуры параметр «АрмКласс». Должно получиться что-то такое:

АрмКласс есть и у семейства, и у стандартной арматуры — хорошо. Теперь в зависимости от класс и диаметра можно определить наименование.

Создаю расчетный параметр «НаименованиеРасчетное», тип данных — текст. Напишу формулу, подставляющую нужный текст в зависимости от параметров «АрмКласс» и «ДиаметрРасчетный»:

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(АрмВыполненаСемейством, АрмКоличество, Количество)

ПОлучилось так:

Теперь все основные параметры — диаметр, длина, наименование, масса — считаются и для стандартной арматуры, и для семейств, и не нужны какие-то сторонние плагины! Можно создавать сложные семейства с вложенной арматурой и считать вместе с обычными арматурными стержнями.

Немного дорабатываю и получаю спецификацию арматуры:

Шутка :) Об этом в завершающей статье.