Archicad и Excel: особенности автоматизации обмена данными

16 января 2020 | версия для печати

Александр Крылов — ведущий специалист-архитектор в девелоперской фирме ICM. Занимается разработкой коммерческо-деловых центров компании, а также проработкой существующих офисных центров.

Свою проектную деятельность начал в 2013 году. С 2013 по 2017 — архитектор в проектных организациях. В частности, делал проекты загородных жилых домов. Занимался проектом гостиницы в центре Москвы. Занимался разработкой частных интерьеров и частного музея. В 2017 году был назначен ведущим архитектором по нескольким объектам исторических парков «Россия — моя история». Работал в группе архитекторов над проектом главного храма ВС РФ в парке Патриот. Был в команде архитекторов, работавших над благоустройством территории музея-заповедника «Херсонес Таврический».

Оригинал публикации на сайте Prof IT: Archicad и Excel: особенности автоматизации обмена данными




Здравствуйте, меня зовут Александр Крылов. Уже около девяти лет я активно пользуюсь программой Archicad. В этой статье я хочу рассказать о своих способах организации взаимодействия таких программ, как Archicad и Excel.

Почему я для своей работы выбрал эти программы? Excel давно занял нишу стандартной базовой программы в управленческих фирмах и фирмах, занимающихся финансами. А из имеющихся на российском рынке программ для BIM-проектирования Archicad лучше всего подходит для концептуального информационного моделирования с последующим быстрым извлечением данных из BIM модели. Ведь даже не имея готового шаблона, на свежеустановленном дистрибутиве можно довольно быстро создать концептуальную модель здания. Archicad также обладает дружелюбным и понятным интерфейсом. Я всегда смогу объяснить даже по телефону, куда нужно нажать и что нужно сделать, если вдруг срочно понадобится произвести действия с проектом. В свою очередь, необходимые для большинства рабочих процессов функции программы доступны уже «из коробки». Например, сохранение таблицы в формат xslx. Для этого не требуется установка каких-либо дополнительных плагинов или написание специального кода, в отличие от конкурентных программ для проектирования. А сам экспорт таблицы будет произведен с максимальным сохранением внешнего вида, без потери шрифтов, изображений, ширины столбцов и рамок. Это можно будет увидеть на примерах, которые я буду описывать ниже.

Пример: простой проект бизнес-центра

В девелопменте, как, впрочем, и в любом строительстве, для принятия серьезных решений на начальной стадии проектирования необходимо, прежде всего, внимательно изучить и просчитать ТЭПы (Технико-Экономические показатели) проекта. Поскольку ТЭПы в девелопменте ориентируются на получение фирмой в дальнейшем коммерческой выгоды, они могут содержать дополнительные данные, не прописанные в нормах РФ. Для наглядной демонстрации взаимодействия двух программ, я подготовил небольшой и простой проект бизнес-центра.

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

В ходе работы проект постепенно начинает обрастать большим количеством информации. Это один из принципов BIM проектирования — наполнение проекта информацией. И для того чтобы не запутаться, нужно взять за правило корректно именовать виды, каталоги, слои, а также пытаться все это систематизировать в карте видов и т.д. А если точнее, то нужно всегда использовать предварительно настроенный шаблон. Я же буду использовать стандартный шаблон проекта Archicad, для того чтобы показать, как с нуля настраивается связь Archicad и Excel.


План 1-го этажа


Я разместил на макете план первого этажа, экспликацию помещений, каталог с площадью этажа, а также специально настроенный каталог с разбивкой помещений на нужные категории. Это «Арендная площадь» и «Другая площадь». Нужные мне категории я предварительно создал в соответствующем меню.


Создание категорий


Создание категорий


Расчет «Коэффициента рентабельности этажа»

Теперь опишу, для чего я решил разбить всю площадь на две категории. Важным параметром определения экономической эффективности задуманной планировки является так называемый «Коэффициент рентабельности этажа». Его формула выглядит так:


площадь арендных помещений ÷ площадь этажа


Соответственно, общий коэффициент всего здания будет выглядеть как


сумма всех арендных площадей ÷ суммарную площадь всех этажей


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

Давайте немного отвлечемся и вспомним про 22-ю версию Archicad. В 22-й версии появилось очень важное и долгожданное нововведение — формулы. Этот инструментарий реализован через создание пользовательских свойств в менеджере свойств. В этом есть огромный плюс, так как формулы не привязываются к каталогу, ячейке, как в Excel, а выполняют роль пользовательского свойства какого-либо объекта. Поэтому мы можем использовать формулы не только в каталогах, но и в выносных надписях, графических заменах, при поиске объектов и т.д.

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

Поэтому для того чтобы решить эту задачу, придется воспользоваться сторонними средствами. Наиболее подходящим будет Excel, так как эта программа позволяет работать с формулами, а сам Archicad умеет экспортировать каталоги в формат xslx. Экспорт каталогов из Archicad не занимает много времени и делается буквально в три клика. Хочу заметить, что простой ручной подсчет в таблице нам не нужен. Нам будет важно сделать так, чтобы практически весь процесс был автоматизирован. Чтобы при изменении какого-либо значения в проекте все автоматически пересчитывалось и подставлялось в нужные для нас места. Сделать это будет несложно, и общая схема процесса будет выглядеть так:



Я покажу весь этот процесс на примере подсчета коэффициента рентабельности.

Экспорт каталогов в формат xlsx

Сначала делаем экспорт каталогов в формат xlsx. Если открыть эти файлы, то можно заметить, что внешний вид таблиц остался прежним. Присутствуют даже изображения.


Экспорт каталогов в формат XLSX


Экспорт каталогов в формат XLSX


Следует отметить, что Archicad при сохранении предложит такое же имя, как и в названии самого каталога. Если при создании каталогов вы называли их по какому-то алгоритму, то процесс сохранения и поиска данных у вас будет проходить очень быстро. Также рекомендуется создать папку, отведенную только для экспортируемых файлов xslx, чтобы впоследствии мы быстрее осуществляли доступ к экспортируемым данным.

Создание нового файла формата xslx

После экспорта каталогов из Archicad необходимо создать новый файл формата xslx. Это основной файл, в котором будут собираться данные и который мы будем использовать при импорте в Archicad.

Открываем этот файл и в первом столбце сразу задаем наименование рассчитываемого значения — «Коэффициент рентабельности». А во втором столбце пропишем формулу для подсчета этого коэффициента. Формула прописывается таким образом, чтобы данные для подсчета брались из таблиц, которые мы экспортировали из Archicad. Для этого нам нужно изначально открыть все таблицы, из которых мы хотим брать данные. Вспомним, что нужная нам формула выглядит так:


площадь арендных помещений ÷ площадь этажа


Для этого в строке формул нашей таблицы записываем:


= (равно),




Переходим на таблицу с площадью арендных помещений и щелкаем по ячейке с нужными данными:



Снова переходим в строку записи формулы и ставим знак / (разделить). Затем переходим на таблицу с площадью этажа и щелкаем по ячейке с нужными для нас данными:



Возвращаемся в файл, где записываем формулу для расчетов, и в строке формул жмем Enter. Все. Теперь можно закрыть экспортируемые из Archicadа каталоги. При необходимости оформляем внешний вид таблицы: рисуем рамку, задаем нужный шрифт, округляем полученное значение.



Сохранение таблицы в формат pdf

Далее мы можем, конечно же, просто выделить нашу таблицу, скопировать содержимое в буфер обмена, а затем вставить в Archicad в виде текста или изображения, благо Archicad позволяет нам воспользоваться и таким способом импорта данных. Но этот способ работы с данными нам не подходит, так как повлечет много ручной работы при малейшем изменении каких-либо значений в проекте. Да и слишком он «грязный» для проекта, если вставлять текстом. Для того чтобы мы могли автоматизировать процесс обновления данных из Excel в Archicad, мы будем пользоваться сохранением таблицы в формат pdf. Это еще один формат, с которым Archicad прекрасно работает из коробки, позволяя размещать его во всех проекциях и макетах проекта. Что немаловажно, по умолчанию он автоматически обновляет данные из ссылочного документа.

Сохраним нашу таблицу в формат pdf и импортируем документ в Archicad. Затем разместим в нужном месте на макете и зададим нужную область видимости.


Размещение таблицы XLSX на макете


Создание макроса для автоматического сохранения pdf

Теперь значение будет меняться автоматически при изменении значения в pdf. Но это еще не автоматизированный способ. Для того чтобы Excel автоматически пересохранял лист pdf с тем же именем при смене данных, мы можем записать макрос в нашу таблицу с подсчетом коэффициента рентабельности. Макрос — это определенный повторяющийся алгоритм действий, который мы можем записать в виде небольшой микропрограммы. Для этого в нашей созданной таблице нужно перейти на вкладку Разработчик (если она не активна, то ее нужно включить в меню Файл/Параметры/Настроить ленту) и нажать иконку «Запись макроса». В выпавшем окне ввести имя макроса и выбрать место сохранения макроса. Выберем сохранение в этой же книге, чтобы его не потерять. Нажимаем «ОK».


Сохранение макроса Excel


Все, началась запись макроса — то есть началась запись наших действий, которые мы хотим автоматизировать. Начинаем производить эти действия. Перед сохранением в pdf нам обязательно нужно обновлять данные из связанных таблиц. Для этого перейдем на вкладку «Данные». Выберем пункт «Изменить связи». В выпавшем окне выбираем наши присоединенные таблицы и для каждой нажимаем «Обновить».



После обновления закрываем окно. Переходим во вкладку Файл и сохраняем pdf c правильным именем в нужном месте. В нашем случае файл pdf уже существует, поэтому его нужно сохранить с заменой.


Сохранение PDF


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



Автоматический запуск макроса

Теперь при открытии этой таблицы нам просто будет нужно запустить наш макрос, и все действия по обновлению связей и сохранению в pdf произойдут автоматически. Пойдем дальше и еще больше автоматизируем процесс. Для удобства данный макрос можно настроить на автоматический запуск при открытии файла. Для этого переходим на вкладку «Разработчик» и запускаем редактор Visual Basic. Выбираем наш макрос во вкладке «Modules» и копируем в буфер обмена текст макроса.



Затем выбираем вкладку «ЭтаКнига», открываем в выпавшем окне «Workbook» и «Open» и вставляем наш скопированный текст. Сохраняем и закрываем.



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

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



Для того чтобы при изменении значений проекта в Archicad не утруждать себя открытием и пересохранением каждой таблицы, можно просто настроить экспорт всех этих таблиц через публикатор. Естественно, выбрав для сохранения ту папку, из которой берутся связи для расчетов.

Импорт графиков и диаграмм из Excel в Archicad

Кроме того, мы можем импортировать из Excel не только таблицы с подсчетами, но и графики и диаграммы. Построим простую диаграмму на основе данных площадей первого этажа. Сама схема импорта в Archicad будет такая же — через pdf. И для того чтобы не создавать огромное количество новых файлов формата xlsx и не запутаться при их запуске для обновления данных, мы продолжим работу в файле, который создавали ранее. Для этого мы просто создадим новый лист и назовем его «Диаграмма».



Далее через меню ленты ВСТАВКА создаем нужную для нас диаграмму.



Затем нам следует выбрать данные, которые будут необходимы для построения диаграммы.



Для этого нам, как и в прошлый раз, необходимо будет открыть экспортируемую таблицу из Archicad с площадями и в открытой таблице выделить нужные столбцы для подсчета. При выделении следует выбирать и названия столбцов, для того чтобы впоследствии можно было автоматически сделать подписи к значениям на диаграмме. Нажимаем «ОК».



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



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



Далее переходим в пункт «ЭтаКнига» и вставляем код из буфера обмена сразу после окончания кода предыдущего макроса.



Затем все сохраняем и закрываем. Теперь остается лишь разместить на макете созданный файл pdf.



Принцип действия связи аналогичный. При изменении площадей в проекте необходимо лишь экспортировать каталоги с изменившимися данными из Archicad с заменой и открыть файл, содержащий в себе расчеты (тот, в котором находится расчет коэффициента и диаграмма). Весь этот процесс занимает несколько секунд. Как вы заметили, все расчеты можно делать и в одном файле Excel, но создавая каждый раз новый лист и дописывая новый макрос. Это добавляет определенное удобство, так как не нужно постоянно открывать большое количество файлов для обновления pdf.

Другие возможности организации взаимодействия

Это был лишь один из примеров организации взаимодействия. Связывая две программы через pdf, мы можем использовать все преимущества Excel. Можем составлять свою настраиваемую таблицу с данными, выгруженными из Archicad, и размещать ее в проекте. Можем производить более сложные расчеты, недоступные в среде Archicad. Можем легко наполнять макеты дополнительными наглядными графиками, диаграммами. Также есть возможность использовать вместе с программой Excel и средство визуализации данных POWER BI. А импорт через pdf позволяет разместить бизнес-аналитику на макетах в три клика без программирования сложных кодов, что выгодно выделяет Archicad среди конкурентов.

Описывая взаимодействие этих двух программ, нельзя не упомянуть и встроенный в Archicad инструмент импорта и экспорта значений свойств элементов в виде электронных таблиц.



Импорт значений из Excel в Archicad

То есть Archicad позволяет не только экспортировать значения в формат xlsx, но и импортировать измененные в таблице значения в проект. Попробую продемонстрировать эту возможность на примере коэффициента рентабельности. Для начала создадим эти свойства в менеджере свойств. Для стандартизации поместим их в группу «ТЭПы»:



Для каждого значения следует выбрать тип данных «Число» (это нужно для корректного отображения и округления в дальнейшем, ведь сам коэффициент — числовое значение). Для того чтобы мы могли взаимодействовать с этими свойствами в проекте, создавать каталоги, они должны принадлежать какому-либо элементу в классификации. Я выбрал морф, так как этот инструмент меньше всего используется в проектах для вычислений (сделаю оговорку и скажу, что это я реже всего использую этот элемент в BIM проектировании, другие, возможно, используют его чаще).

Теперь создадим нетвердотельный морф и разместим его на неиспользуемом слое, например стандартном слое «Скрыт». Этот морф создается для того, чтобы мы смогли идентифицировать созданные нами свойства и занести их в каталог для подсчетов. Грубо говоря — созданный морф будет объектом хранилища наших ТЭПов, и его ни в коем случае нельзя удалять. Поэтому лучше всего размещать такие объекты на неиспользуемом и выключенном слое. Дальше остается создать каталог и оформить его внешний вид.



Теперь мы можем воспользоваться экспортом таблицы в формат xlsx. Но в этот раз применим другой инструмент экспорта из Archicad, Файл/Взаимодействие/Классификации и свойства. Сохраняем этот каталог, а затем открываем его.




При данном способе экспорта из каталога Archicad происходит выгрузка именно данных, а не внешнего вида таблицы. Поэтому для импорта в Archicad не будет использоваться формат pdf, следовательно, тратить время на оформление таблицы не следует. Но для подсчета коэффициентов необходимо снова записать формулы в ячейки данных. Процесс записи формул идентичен прошлому способу. После записи всех формул сохраняем файл. При изменении значений в ссылочных каталогах необходимо будет заново открывать этот файл для обновления значений. При каждом открытии файла Excel будет запрашивать у нас обновление связей. Всегда выбираем «Обновить», а затем закрываем с сохранением.

Возвращаемся в Archicad. Переходим в Файл/Взаимодействие/Классификации и свойства и теперь выбираем импорт значений свойств. Для импорта выбираем нашу таблицу, в которой мы прописали формулы.



При импорте Archicad спросит, какие именно значения следует извлечь в каталог. Так как при создании свойств в типе данных мы использовали «Число», то при импорте числовые значения автоматически округляются до сотых (исходя из настройки окружающей среды Archicad). Теперь остается просто разместить каталог на листе.



Таким образом, мы создали и разместили стандартный каталог, внешний вид которого настраивается в самой среде Archicad. Ведь этот каталог, при определенных его размерах, можно автоматически размещать на нескольких листах или разбивать на две таблицы. При использовании pdf, без настройки внешнего вида в среде Excel, так сделать не получится.

Кроме того, используя этот способ взаимодействия, мы можем внести с помощью Excel какие-либо формулы в специально созданные пустые ячейки каталога. Например, возвращаясь к нашему коэффициенту рентабельности, в каталоге с площадями «Арендная площадь» и «Другая площадь» мы можем создать пустое поле и использовать его для отображения этого коэффициента. Настроив экспортируемую таблицу и использовав импорт данных, мы можем автоматически обновлять это значение без боязни ошибиться в подсчетах. Единственное, что для обновления данных этого каталога придется всегда пользоваться импортом значений — и это, пожалуй, главный минус этого способа.

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