Спецификация арматуры по ГОСТ

О, сколько копий было сломано на эту тему! О, этот ревит, не умеющий делать элементарные спецификации!

Реально ли получить что-то такое?

Про спецификацию арматуры я упомянул в теме про создание семейств, попадающих в одну спецификацию со стандартной арматурой, но тема более широкая, потому выделил эту статью отдельно.

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

Итак, как сделать такое в Ревите? :)

Читать далее "Спецификация арматуры по ГОСТ"

Видео — создание семейства приямка

Сделал вот вчера на работе приямок, в "типовой модели на основе перекрытия". Семейство простое, но работает интересно — решил повторить действия, записать видео и выложить сюда.

Что есть интересного на видео:

  • принцип работы семейства "на основе пола/перекрытия"
  • установка элементов на именованные рабочие плоскости
  • использование в формулах "параметра для отчета"
  • использованием параметра длины с отрицательным значением
  • работа с элементом "переход" и "пустотными формами"

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

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

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

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

Самое простое, что часто рекомендуют — просто выводить в столбец "Имя типа". Неплохой способ, вот только у нас может быть два типа арматуры "12 А400" — например, если это нижняя и верхняя арматура плиты. Если в спецификации будет написано "12 А400 верхняя" — это нам явно не подойдет.
Другой способ — создать текстовый параметр, по "типу", и вручную добавить его к типам арматуры и семейств. Этот способ мне тоже не нравится — он увеличивает вероятность ошибки. Есть вероятность того, что человек создаст новый типоразмер, но забудет изменить параметр наименования — с не очень приятными последствиями.
Я предпочитаю потратить больше сил, но сделать так, чтобы система была устойчива к ошибкам. Параметр наименования — "12 А400" — будем вычислять при помощи формулы, точнее, цепочки из if-ов.
Правда, еще один параметр понадобится добавить — для класса арматуры. Сделаем также, как я описывал в статье про ведомость расхода стали, но будем использовать общий параметр.

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

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

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

Загружаю семейство в проект. Любознательный читатель наверняка подумает — "Интересно, не будут ли конфликтовать параметры проекта и семейства — ведь это один и тот же общий параметр?". Конфликтовать не будут, но кое-что интересное будет происходить — расскажу как-нибудь :)

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

Дополнительных расчетных параметров не надо, так как используется единый общий параметр.

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

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-цепочками — тем же способом, что описывал в статье про ведомость расхода стали, но с использованием хитрого округления.

Создаю расчетный параметр "МассПогМетра", в качестве условия использую "ДиаметрРасчетный":

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 — Количество

Тот самый столбец, который задавал нам проблем — и сейчас мы его победим!

Во первых, обратим внимание, что в обычной спецификации арматуры мы используем не параметр "Число", а "Количество" — оно и понятно, ведь объект массива арматуры может быть один, а стержней внутри него — несколько. Построим наши семейства по тому же принципу.

Создаю обычное семейство в "Обобщенной модели" с профилем арматуры, который я буду размножать массивом. Это семейство не следует делать общим! Оно нам нужно только для геометрии:

Загружаю этот хомут в свое семейство категории "Несущая арматура". Не общие семейства, как мы помним, при такой загрузке приобретают в проекте свойства "Родительского" семейства, так что все будет управляться вместе.

Создам общий параметр "АрмКоличество", типа "Целое". Добавлю его к семейству. Создаю массив хомутов с использованием этого параметра:

А вот это семейство уже можно сделать "Общим", если планируется подгружать его в какие-то другие семейства-сборки. Кстати, можно делать каждый стержень и отдельным общим семейством, тогда в параметр "АрмКоличество" надо просто вписывать единицу.

Загружаем семейство в проект. Обратите мнение, что из-за того, что отдельные хомуты — не общие семейства, мы не сможем выбрать их при помощи tab.

 Вывожу в спецификацию параметр "АрмКоличество". По тому же принципу, что и для "Диаметра", создаю параметр "КоличествоРасчетное":

КоличествоРасчетное = if(АрмВыполненаСемейством, АрмКоличество, Количество)

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

Тут уже дело техники, расскажу как-нибудь в следующий раз :)

Удачи!

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

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

В этой части расскажу про принцип создания спецификации, учитывающей стандартную арматуру и семейства.

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

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

По многочисленным просьбам начинаю серию статей по созданию семейств для армирования, попадающих в одну спецификацию со стандартной арматурой.

Это примерно то, о чем я рассказывал в своем выступлении на Autodesk University, но не совсем :) А в итоге получим что-то такое:

В первой части научимся делать загружаемое семейство в категории "Несущая арматура", а также узнаем, что нет ничего лучше коллективного разума.

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