понедельник, 16 февраля 2015 г.

Ведомость расхода стали в Revit

Я думал, что вопрос ведомости расхода стали в Ревите уже решен, вот, я ведь даже готовые файлы выкладывал. Но нет - поток вопросов не прекращается, а многие вообще думают, что эту ведомость делают пустой табличкой и вставляют туда цифры вручную.

Нет, у нас всё будет по-честному:



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




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

По желанию можете смотреть инструкцию с картинками, видео в конце статьи или скачать готовый файл.

Итак, начинаем.

Подготовительные действия


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




Лучше создавать "Общий параметр" - пригодится в будущем, но пока неважно.

Указываю для арматуры соответствующий класс:


Такое нужно сделать для каждого типа.


Создаем параметр подсчета массы

Заходим - Вид - создать спецификацию.


Добавляем поля: Диаметр стержня, Длина стержня, Количество, наш созданный параметр КлассАрматуры, а также параметр, по которому мы будет разделять конструкции - например, Комментарий.

Теперь определимся со способом подсчета массы. Кто-то создает параметр "Теоретическая масса" и указывает его для арматуры, кто-то вычисляет массу через объем арматуры, кто-то - через диаметр и объемный вес... Я использую другой способ - через мои любимые "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))))))))))))))

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


Создаем столбцы для спецификации


Теперь нам нужно создать столько столбцов для спецификации, сколько будет типов арматуры в проекте. Мы используем только А240 и А400, нужные создадите сами для себя.

Создаем расчетный параметр "6 А240", типа "число", с формулой:

if(and(Диаметр стержня = 6 мм, КлассАрматуры = 240), Количество * Длина стержня * МассаПогМетра / 1000 мм, 0)

Делить на 1000мм нужно потому, что я использую безразмерный параметр, а "Длина стержня" имеет размерность длины - нужно сократить "мм".

Что делает эта формула? Параметр "if" здесь будет работать непривычно - как фильтр, и в столбец будут попадать только элементы, удовлетворяющие условию. Попробуйте нажать Ок, поставить в проекте несколько различных стержней и посмотреть, что получится в спецификации:

Для наглядности я добавил столбец "Семейство и типоразмер".

Видно, что если арматура не "6 А240" - в ячейке будет 0, но для d6 А240 - выводится суммарная масса.

Теперь создаем столбцы для других диаметров класса А240:

Теперь нужно создать столбец для суммарного расхода арматуры А240. Используем формулу:

if(КлассАрматуры = 240, Количество * Длина стержня * МассаПогМетра / 1000 мм, 0)

Как оно работает - надеюсь, понятно: собирается арматура класса А240 любого диаметра.

По тому же принципу создаем столбцы для других классов арматуры.

Для столбца "Всего" используем формулу вообще без "if":

Количество * Длина стержня * МассаПогМетра / 1000 мм

В итоге получится что-то вот такое:


Конечно, уже можно отключить в этой спецификации все линии, вынести спецификацию на лист и наложить сверху какое-нибудь 2D-семейство - но это не наш путь :)

Попробуем привести ВРС к нормальному виду средствами Ревита.

Приводим ведомость к привычному виду


Во-первых, перенесем вспомогательные столбцы в конец и скроем их:



На вкладке "Форматирование" задаю правильные заголовки (значок диаметр можете скопировать тут: ø6)

Там же на вкладке "Форматирование" включу для каждого значения галочку "Вычислять итоги" и задам округление:

Включу сортировку по параметру "Комментарий" и уберу галку "Для каждого экземпляра":


Что-то похожее на правду получается! 

Группируем столбцы



Обратите внимание - нужно выделять именно заголовки столбцов. Выделять удобнее всего перетаскиванием, зажали мышкой первый заголовок - перетащили до последнего. Вписываем в полученный заголовок Гост.

Еще раз выделяем те же столбцы и создаем следующий уровень группировки:

Вписываем в этот заголовок "А240". Повторяем то же для других классов арматуры.

Задаю следующие уровни группировки:



Ну как-то так! С первого раза может и не получиться - внимательно смотрите на скриншоты!

Проверяем, что получилось - вынесем на лист:


Продолжаем допиливать

Укажу для всех столбцов выравнивание по ширине и высоте по центру:


Задам ширину столбцов. Их у меня 15шт, 15х12мм - 180мм. Выделяю все стобцы и задаю общую ширину 180мм - все столбцы выровняются:

Отключу привязку заголовка спецификации к названию:


Отключаю границы у заголовка спецификации:


На вкладке "Вид" отключаю "Пустую строку", задаю стиль текста:


Выделю и скрою пустые столбцы:


Ну и что-то такое:

Да, в пустых ячейках вместо прочерков - нули, но тут уж ничего не поделаешь.

Главная проблема - в том, что при появлении новой арматуры оно может попасть в скрытый столбец - например, в моем случае - d20 А400. Поэтому перед печатью листа я рекомендую нажать кнопку "Показать все" и снова скрыть пустые столбцы:


Времени много не занимает. Зато всё остальное отлично работает!

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

При копировании спецификации в свой файл нужно только заново задать для арматуры параметр "КлассАрматуры" - должно работать сразу.

Удачи! 

13 комментариев:

  1. Спасибо, будем попробовать..

    ОтветитьУдалить
  2. Саша спасибо большое, что нашел время и силы подготовить этот урок, Ревит полезная штука, когда хорошо владеешь им, но в нем множество нюансов, больше чем в Автокаде и чем больше вникаешь в Ревит, тем больше возникает вопросов.

    ОтветитьУдалить
  3. Александр, спасибо за доступный и полезный урок. Хотелось бы знать, как вы выходите из той ситуации, когда в ведомости расхода стали необходимо учитывать лягушки?

    ОтветитьУдалить
    Ответы
    1. Я делаю лягушки и шпильки семействами, и использую другие спецификации - с одновременным учетом системной арматуры и семейств. Подробнее смотрите мое выступление на AURU 2014: http://weandrevit.blogspot.ru/2014/11/autodesk-university-2014.html

      Удалить
  4. Нули в спецификации можно убрать, умножая по условию на пустой (незаданный) числовой параметр проекта.
    См. http://easy4smart.blogspot.ru/2014/08/revit.html

    ОтветитьУдалить
    Ответы
    1. Хе, хитрости 80 лвл! Что-то я такую полезную штуку пропустил) спасибо!

      Удалить
    2. Жаль это не работает при вычислении итогов инструментами спецификаций

      Удалить
    3. Хм, а есть какой-то другой способ вычисления итогов кроме той галочки?
      Все равно выводит нули, но ничего, уже в другом месте эту хитрость применил :)

      Удалить
  5. Можно нули закрыть другой спецификацией
    http://revit-km.blogspot.ru/2015/04/blog-post.html

    ОтветитьУдалить
  6. Не могу не как собрать арматуру в общую ведомость расхода стали. Если у меня фон выполнен стандартным армированием по площади, а доп. арматура семейством и все одного диаметра чтобы суммировалось в столбце. Замучился ужо(( прошу помощи, вкладываю ссылку с файлом. https://yadi.sk/d/D8ijrMx7kS7zN

    ОтветитьУдалить
    Ответы
    1. Создайте параметр "Да/Нет" с именем "АрмСделанаСемейством", "По типу". Добавьте его через параметры проекта к "Несущей арматуре" и отключите для каждого диаметра. Добавьте этот же параметр к семейству арматуры и включите в нем этот параметр. В спецификацию добавьте параметр "Диаметр стержня" (стандартный параметр несущей арматуры) и "Рзм.ДиаметрСтержня" (общий параметр, используемый в семействе). В спецификации сделайте расчетный параметр с формулой "if(АрмСделанаСемейством, Рзм.ДИаметр, Диаметр стержня)". Остальное аналогично.

      Удалить
  7. Снова я )) мои попытки в создание единой ведомости расхода стали увенчались неудачей((
    Старался следовать вашим инструкциям, но что то не получается, где-то не понял, где то упустил суть.
    Итак сделал следующее:
    1) В параметрах проекта добавил параметр/параметр проекта/категории несущая арматура/ данные проекта_АрмСделанаСемейством_общие_да/нет_прочие/ (параметр появился у фоновой арматуры)
    2) В моем семействе доп арматуры (GM)_Сетка добавил параметр семейства/ данные проекта_АрмСделанаСемейством_общие_да/нет_прочие/ (параметр появился у сетки)
    3) Использовал 000.Ведомость расхода стали. Здесь уже начались проблемы! в связи с тем что спецификация создана на основе несущей арматуры, не попадает параметр семейства сетки на основе обобщенной модели, либо надо создать какой то общий параметр, который будет попадать и как то считывать информацию о диаметре арматуры. Может имеющееся у меня семейство сетки как то не так сделано. Файл с примером https://yadi.sk/d/D8ijrMx7kS7zN

    ОтветитьУдалить
    Ответы
    1. Ну, если вы добавляете свои общие параметры - в спецификации из моего шаблона они работать не будут.
      Семейства сеток нужно создавать на базе "ifc-арматуры". Описание создания здесь: http://weandrevit.blogspot.ru/2015/04/1.html
      Готовые семейства здесь: http://weandrevit.blogspot.ru/2015/09/karkasyizakladnye.html

      Удалить