
В процессе проектирования в nanoCAD BIM Строительство создание точных и наглядных спецификаций является критически важной, но зачастую трудоемкой задачей. Эта статья представляет подробное практическое руководство по формированию спецификаций на примере армирования колонн. В центре внимания – сравнение двух разных встроенных инструментов: специализированного инструмента Спецификация и универсальных Таблиц nanoCAD. Вы узнаете, как выбрать оптимальный подход в зависимости от требований проекта: необходима ли вам максимальная гибкость настройки сложных отчетов или же приоритетом является их динамическая связь с моделью для автоматического обновления.
Статья ориентирована на широкий круг специалистов, работающих в среде nanoCAD BIM Строительство: инженеров-проектировщиков (КЖ, КМ, АР), BIM-менеджеров и BIM-координаторов, настраивающих процессы и шаблоны в компании, сметчиков и специалистов по подготовке проектной документации, а также технических специалистов и специалистов по внедрению ПО, изучающих возможности автоматизации отчетности в nanoCAD.
В nanoCAD BIM Строительство есть два подхода для создания спецификаций.
Первый – через специальный функционал Спецификации. В этом случае спецификации не будут динамически реагировать на изменения в модели. После внесения правок следует обновлять таблицу. Но через этот функционал я могу настроить сложные таблицы, сохранить их в профили и передавать коллегам.
Второй – через таблицы nanoCAD. В этом случае спецификации всегда актуальны и динамически реагируют на изменения в модели. Эти таблицы можно сохранить как шаблон и использовать в других проектах.
Предположим, что нам необходимо создать спецификацию, которая будет содержать информацию о количестве арматуры для армирования колонн по этажам.
Я заранее создала файл, где разместила колонны с перекрытиями и заармировала их. Арматуру с материалами я заключила в сборки – так удобнее работать с этими объектами.
У корневого объекта отсутствует параметр, отвечающий за информацию о положении объекта (1/2 этаж), давайте это исправим.
1. Выделяю все сборки 1-го этажа и перехожу в свойства (рис. 1)

2. В свойствах добавляю параметр из списка (рис. 2).

Важно! Вы можете создать свой параметр, но я рекомендую сначала проверить существующие, чтобы не создавать лишние.
3. Ввожу в поиске параметр, который хочу добавить, в моем случае «этаж». И выбираю «Этаж», который находится в группе «Экспликация» (рис. 3).

4. Нахожу добавленный параметр и вписываю значение «1 этаж» (рис. 4):

5. Принимаю изменения и нажимаю OK.
Теперь выделяю колонны второго этажа, добавляю параметр «Этаж» и прописываю значение «2 этаж» (рис. 5)

В моем примере есть два типа колонн (400х400 мм и 400х200 мм) и выпуски арматуры из фундаментной части. Для наглядности я размещу выпуски на отдельном этаже. Вы можете делать это по требованиям вашего проекта.
Прежде чем создавать спецификацию, необходимо иметь четкое представление, как она должна выглядеть. У меня будет стандартная шапка таблицы для спецификации элементов, но с объединенными строками, которые будут указывать на этаж, родительскую сборку и подгруппу сборки (рис. 6).

Теперь приступим к созданию спецификации.
1. Вызываю команду Спецификации (вкладка BIM Архитектура или BIM Конструкции → группа Отчеты и публикация). Или ввожу команду URS_SPECIFICATION_PALETTE.
2. В открывшемся окне выбираю Мастер экспорта данных (рис. 7).

3. Создаю новый профиль КЖ_Колонны по этажам (рис. 8).

В окне параметров профиля выбираю наборы объектов для учета в спецификации (рис. 9). В пункте Учитывать объекты внутри сборок нажимаю кнопку Да.

- Создаю новую выборку Армирование колонн. Выборок может быть несколько, в зависимости от ваших задач.
- Из доступных типов объектов выбираю Конструктивные сборки (рис. 10).

Чтобы извлечь необходимые данные, необходимо узнать имена параметров (сейчас я вижу только их заголовки).
1. Выделяю сборку и открываю свойства, через контекстное меню (рис.11).

Вижу, что сборки включены в спецификацию (Включить в спецификацию = 1). Мне важно извлечь из сборки и арматуру, и материал (рис. 12).

2. Отключаю активную команду Показывать заголовки параметров (рис.13).

Теперь вижу имена параметров на английском.
Ключевые параметры, которые пригодятся для дальнейшей работы:
- BOM_INCLUDE = 1 (Включить в спецификацию);
- BOM_GROUP корневой сборки = Колонны железобетонные;
- BOM_GROUP объектов сборки = Арматура и Конструкции железобетонные.
Перехожу к выборке и активирую команду Настроить фильтр (рис.14).

Прописываю условия:
- BOM_INCLUDE = 1;
- root.BOM_GROUP = Колонны железобетонные;
- BOM_GROUP = Арматура;
- BOM_GROUP = Конструкции железобетонные.

В рекурсивном фильтре отмечаю Включать все объекты (рис. 16).

В столбце Поз. у арматуры должен содержаться Номер позиции, а у материала пустое значение, использую функцию IF (рис. 17):
- если PART_TYPE = «Колонна железобетонная» → пустое значение;
- иначе → Номер позиции (AEC_ASSEMBLY_POSITION).

В следующем столбце нужно получить нормативный документ:
- для арматуры: PART_STANDARD;
- для материала: PART_MATERIAL_STANDART.
Также запишу через функцию IF (рис. 18):
- если PART_TYPE = Арматура → PART_STANDARD;
- иначе → PART_MATERIAL_STANDART.

В столбце Наименование:
• для арматуры: знак диаметра (%%c), диаметр, класс, запись «L=», длина, округленная до 10;
• для материала: BUILD_MATERIAL.
Также воспользуемся функцией IF (рис. 19):
• если PART_TYPE = «Арматура» → «%%c» & (объединение строк) & PART_TAG (диаметр арматуры) & «L=» (пробел и текстовое значение L=) & форматирование целого числа DIM_LENGTH, деленного на 10 (чтобы было, что округлять) и умноженное на 10;
• иначе → BUILD_MATERIAL.

В столбце 4:
• для арматуры: BOM_PART_QTY (Количество единиц);
• для материала: пустое значение.
Функция (рис. 20):
• если PART_TYPE = Арматура → BOM_PART_QTY;
• иначе → «».

В столбце 5:
• для арматуры PART_WEIGHT (Масса);
• для материала: пустое значение.
Функция (рис. 21):
• если PART_TYPE = Арматура → PART_WEIGHT;
• иначе → «».

В столбце 6:
• для арматуры: умножаю столбцы количество и масса, округляю до 1 знака, после запятой;
• для материала: считаю объем, округляю до 2 знаков после запятой + «м3»
функция (рис. 22):
• если PART_TYPE = Арматура → форматирование числа до 1 знака после запятой (BOM_PART_QTY* PART_WEIGHT);
• иначе → форматирование числа до 2 знаков после запятой (CONCRETE_PROF_AREA*DIM_LENGTH/1000 длину приводим к метрам) & « м3».

В настройках шаблона выбираю ГОСТ Р 21.1101-2013. Ф7.Спецификация элемента.
Отключаю вывод заголовков отчета. Выделяю заголовок полужирным (рис. 23):

Спецификация не сгруппирована. Необходимо сгруппировать строки с одинаковым наполнением. Для этого включаю групповые операции (рис. 24).

Рис. 24. Окно создания параметров и задания групповых операций
По умолчанию везде применится группировка. Для количества и массы могу активировать Автосумму, в этом случае масса будут считаться количество и всех элементов в сборках проекта. Если же оставлю включенной команду Группировка, то количество и масса будут считаться только в одной конкретной сборке. В моем случае я делаю только для одной сборки (рис. 25):

Добавлю функции для группировки:
1. Этаж. Здесь префикс root позволяет обратиться к самому верхнему уровню структуры параметрического объекта (рис. 26).

2. Родительская сборка. Здесь нам также важно прописать функцию через IF (рис. 27):
- если EXPLICATION_FLOOR (Этаж) = Фундамент → корневой объект PART_NAME (Наименование);
- иначе → Колонна & AEC_ASSEMBLY_PARENTID (идентификатор родительской сборки).

3. Подгруппа сборки для арматурных изделий и материалов (рис. 28):
- если PART_TYPE = Арматура → Арматурные изделия;
- иначе → Материалы.

Уберу галочки, чтобы данные столбцы не выводились в таблице (рис. 29).

В группировке записей включаю только что созданные функции в порядке: Этаж → Родительская сборка → Подгруппа сборки. В сортировке устанавливаю сортировку по столбцу Позиция по возрастанию (рис. 30).

Постоянно выносить таблицу на лист неудобно, настрою ее отображение через Окно спецификатора. Перехожу в настройки (рис. 31) и создаю новый профиль спецификации с тем же именем, что и настройки экспорта данных – Колонны по этажам (рис. 32).

В качестве профиля для специфицирования указываю КЖ_Колонны по этажам (рис. 32).

Вижу, что в нашу итоговую спецификацию попадают какие-то странные пустые объекты. Очевидно, что это связано с ошибкой на этапе фильтрации. Дело в том, что у некоторых из подобъектов сборки значение параметра Группа по спецификации = Арматура = Конструкции железобетонные. А это одно из условий по которому объекты отбирались в выборку. Для того, чтобы исключить данный объект задам условие, что имя объекта не должно быть равно Арматура и Конструкции железобетонные:
- смысл. Это правило ищет конкретные арматурные изделия, но исключает абстрактную запись с именем Арматура, которая может быть просто заголовком раздела или общим названием группы (в нашем случае – общее название подчиненных элементов).
Тогда условие отбора объектов будет выглядеть таким образом (рис. 33).
Прописываю условия:
1. BOM_INCLUDE = 1;
2. root.BOM_GROUP = Колонны железобетонные;
3. BOM_GROUP = Арматура;
4. name <> Арматура;
5. BOM_GROUP = Конструкции железобетонные;
6. name <> Конструкции железобетонные.
Получается вот такая запись.

Напоминаю, условие отбора указывается в данном окне (рис. 34).

Готово! Итоговая спецификация выглядит вот так (рис. 35).

Для начала создам таблицу nanoCAD. Для этого перехожу во вкладку Оформление – группа Таблицы – Таблица nanoCAD (рис. 36).

Здесь можно использовать несколько сценариев для создания шапки таблицы:
1. Создать нестандартную таблицу и вписать все значения для шапки вручную. Загрузить из базы, воспользовавшись преднастроенным шаблоном (если такой уже есть в системе).
Как заполнить данные вручную, думаю, понятно, поэтому покажу, как воспользоваться шаблоном.
2. В окне Создание таблицы выбираю пункт Загрузить из базы.
3. Раскрываю Архитектура → Шаблоны таблиц → Спецификация элементов (Колонн) (рис. 37).

4. В нижней части этого окна определяю точку вставки – правый верхний угол.
Далее двойным щелчком мыши по созданной таблице открываю окно Редактирование таблицы (рис. 38).
Отдельно про редактор рассказывать не буду, вы можете вызвать справку из этого окна, где подробно описан функционал работы с редактором.

Переименую спецификацию, назвав ее также, какой она была в первом варианте – Спецификация элементов. Отключаю Верхний колонтитул, в этом случае он мне не нужен, так как есть Верхний колонтитул первой страницы (рис. 39).

Далее необходимо выбрать исходные объекты, которые будут учитываться в нашей таблице. Если я выберу сборку, то в свойствах у нас откроются только верхнеуровневые данные самой конструктивной сборки, такие как цвет, слой, тип линии и т.п (рис. 40).

Поэтому для варианта создания спецификации через таблицы nanoCAD я разобью те сборки, которые хочу включить в спецификацию. Назначу для каждого элемента Номер позиции и Этаж.
Удаляю все формулы из шаблона отчетов (рис. 41).

1. Выбираю команду Выбрать исходные объекты (рис. 42).

1. Поиск Во всем документе (рис. 43).

2. Объекты: Арматурная деталь, Строительная арматура и Колонна железобетонная (рис. 44).

3. Также помня, что в предыдущую спецификацию у меня попадали элементы с пустым значением, указываю, что номер позиции не должен быть равен пустому значению (рис. 45).

В шаблоне отчета в первом столбце щелкаю правой кнопкой мыши и выбираю Номер позиции (рис. 46).

Во втором столбце необходимо выводить значение ГОСТ. Для этого я смотрю, в каких параметрах находятся данные значения у арматуры и материала.
Открываю свойства элемента:
- для Арматуры: Нормативный документ (рис. 47).

- для Материала: Нормативный документ на материал (рис. 48).

Запишем выражение через Iff (рис. 49):
- если Object. Наименование == Колонна → Object. Нормативный документ на материал;
- иначе → Object. Нормативный документ.

В третьем столбце:
для Арматуры: знак диаметра (%%c), диаметр, класс, запись «L=», длина, округленная до 10;
для материала: Материал.
Также воспользуемся функцией Iff (рис. 50):
- если Object. Наименование == Колонна → Object. Материал;
- иначе → «%%c» (значение диаметра) + Object. Диаметр арматуры + « » (пробел) + Object. Класс арматуры + L= + roundM(Object.Длина;10)

В четвертом столбце:
• для арматуры: Количество единиц;
• для материала: пусто.
Также воспользуемся функцией Iff (рис. 51):
- если Object. Наименование = Колонна → « » (пустое значение);
- иначе → Object. Количество единиц.

В пятом столбце:
- для арматуры: Масса;
- для материала: пусто.
Также воспользуемся функцией Iff (рис. 52):
- если Object. Наименование = Колонна → « » (пустое значение);
- иначе → Object. Масса.

В шестом столбце:
- для арматуры: произведение количества и массы, округленное до 1 знака, после запятой;
- для материала: объем с м3, округленный до 2 знаков.
Также воспользуемся функцией Iff (рис. 53):
- если Object. Наименование = Колонна → (round(Object.Площадь сечения *Object.Длина/1000), 2) + м3;
- иначе → round(столбец Кол.*Масса, 1).

Далее мне нужно сгруппировать значения, чтобы все элементы, относящиеся к одному этажу, родительской сборке, подсборке и позиции находились в одной строке.
Для этого создам дополнительный столбец для группировки (рис. 54):
=Object. Этаж + " | " + Колонна + Object.Идентификатор родительской сборки + " | " + If(object.Наименование=Колонна, Материалы, Арматурные изделия) + " | " + Object.Номер позиции.

Делаю этот столбец скрытым (щелчком правой кнопки мыши по столбцу Скрытый) (рис. 55).

Группирую строки по столбцу G и сортирую по возрастанию (рис. 56).

Вот какой получается результат (рис. 57).

Всё хорошо, но не хватает объединенных строк с этажом, родительской сборкой и подгруппой сборки.
Также справа в таблице Заголовок в рамке, а слева границ нет, исправлю.
В Редакторе таблицы выделяю нужную ячейку и добавляю границы. Исправляю цвет границ заголовка на серый (рис. 58).

Сами строки можно добавить через Данные. Но нам необходимо, чтобы эти строки еще и разделяли нашу таблицу. Скорее всего есть несколько вариантов решения этой задачи, я нашла такой способ.
Добавлю объединенные строки перед шаблоном отчета. А в самом шаблоне задаю необходимые фильтры, то есть в моей таблице будет несколько шаблонов отчета с необходимыми данными.
Звучит сложно, но сейчас я покажу, что имею в виду.
Добавляю раздел Заголовок отчета перед Шаблоном отчета. Для этого щелкаю левой кнопки мыши на Шаблоне отчета и выбираю Заголовок отчета (рис. 59).

Нам нужно добавить три строки. Щелкаем правой кнопкой мыши на строке Заголовок, затем на Добавить строку и 2 (рис. 60).

Выделяю ячейки в созданных строках и щелкаю правой кнопкой мыши на Объединить (рис. 61).

Объединяю всё, кроме последнего столбца. Должно получиться вот так (рис. 62).

Теперь сохраняю выбор исходных объектов в шаблон, чтобы не настраивать его каждый раз. Для этого выбираю пункт Выбрать исходные объекты (рис. 63).

Настраиваю фильтр для арматурных изделий, 1 этажа, сборки К1 (колонна железобетонная отвечает за материал, поэтому уберу ее из выбора) (рис. 64):

В окне Быстрый выбор у нас есть команда Шаблоны – Сохранить шаблон. Назовем шаблон Арматурные изделия. 1 этаж (рис. 65).

Создаю еще один шаблон отчета для материалов (Колонна железобетонная) с фильтрами и сохраняю в шаблон (рис. 66):
- этаж = 1 этаж;
- идентификатор родительской сборки = К1.

Далее копирую строку с формулами из предыдущего шаблона отчета. Вставляю его в только что созданный (по материалам 1 этажа). Группирую данные (рис. 67).

Должно получиться вот так (рис. 68).

Создаю дополнительные скрытые столбцы (рис. 69).
Рис. 69. Добавление дополнительных столбцов
- этаж: Object.Этаж;
- родительская сборка = Колонна + Object.Идентификатор родительской сборки;
- родгруппа:=Iff(Object.Наименование=Колонна,Материалы,Арматурные изделия).
А далее в объединенных строках просто указываем, чему равна данная ячейка (этаж, родительская сборка, подгруппа) (рис. 70).

Добавляю остальные строки и шаблоны отчета для других этажей и сборок. Готово (рис.71)!

Несмотря на то, что этот способ требует больше времени и внимательного контроля за учтенными элементами, его ключевое преимущество – прямая связь с чертежом. Любые изменения в модели мгновенно отражаются в спецификации.
nanoCAD BIM Строительство предлагает два мощных, но разных по философии инструмента. Выбор между ними – не вопрос того, какой лучше, а вопрос правильного применения для выполнения конкретной задачи на конкретном этапе реализации проекта.


