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

 

Значения переменных ТЭП автоматически рассчитываются и заполняются при выполнении функции "расчет" на панели LabPP_Automat.
Расчет ведется по имеющимся и специально создаваемым пользователем элементам проекта.
В этом примере площадь участка задается 2d штриховкой с ID="S участка" на слое "Площадь участка.ТЭП".
Названия слоев, значения ID и вообще весь порядок выполнения функции можно полностью изменять в текстовом файле программного скрипта.
Так же можно изменять, добавлять или удалять параметры ТЭП. Можно переделать чтобы какие-то переменные были без расчета, для ввода вручную.
Достаточно немного поэкспериментировать с этим примером чтобы получить представление о гибкости и функциональности возможностей автоматизации.
Текстовые файлы программных скриптов позволяют вносить изменения и полностью менять все что Вы видите.

Разбор примера.

1. Состав файлов конфигурации ТЭП. Файл config.cpp.
2. Файл tep.hpp, в котором заданы переменные с названиями слоев, объектов, параметров.
3. Кнопка "Создать параметры зон для ТЭПl".
4. Кнопка "Создать переменные ТЭП в информации о проекте".
5. Кнопка "Создать слои ТЭП в проекте".
6. Кнопка "Заполнить ТЭП по проекту".

Состав файлов конфигурации ТЭП. Файл config.cpp

При входе в пункт меню ARCHICAD "LabPP_Automat показать/скрыть палитру" программа анализирует каталог tsprglist.
В нем располагаются все конфигурации LabPP_Automat.
Каждая конфигурация является отдельным каталогом.
ТЭП находится в каталоге "Технико-экономические показатели".
Здесь вы видите что в виде названия конфигурации показывается имя ее каталога.

Расчеты ТЭП в ARCHICAD
В каталоге "Технико-экономические показатели" находится 2 подкаталога.

"Технико-экономические показатели"
- tsimages
- tsprg

В каталоге tsimages находятся картинки для кнопок.
В каталоге tsprg находятся программные файлы конфигурации.

Файл Назначение
config.cpp Процедуры создания кнопок панели конфигурации ТЭП с указанием файлов, которые должны выполняться по нажатию этих кнопок
tep.hpp Заголовочный файл. В нем задаются переменные с именами слоев, пользовательских параметров, параметров проектов, идентификаторов элементов (ID)
create_tep_vars_in_project.cpp Программный файл для создания в проекте переменных проекта ("Площадь участка, м2" и т.п.)
create_tep_up.cpp Программный файл для создания пользовательских параметров (признак "Полезная площадь здания" для зон и т.п.)
create_tep_layers.cpp Программный файл для создания слоев ("Строительный объем.ТЭП" и т.д.)
init_tep_land.cpp Программный файл для расчета и заполнения параметров ТЭП в проекте

Файл config.cpp отвечает за создание вида панели LabPP_Automat при работе с конфигурацией.
В этом примере, config.cpp конфигурации "Технико-экономические показатели" создает 5 кнопок.

Расчеты ТЭП в ARCHICAD

В тексте файла config.cpp кнопки задаются инструкцией ac_request("create_iconbutton"...
Указывается имя файла рисунка для кнопки (рисунки хранятся в каталоге tsimages), координаты x1,y1,x2,y2 кнопки на панели. Далее идет текст подсказки и имя программного файла, который будет выполняться при нажатии на кнопку.

int main()
{
    int w = 40; // Вспомагательные переменные для задания координат кнопок
    int sx = 1;
    int offsetx = 1;
    int offsety = 1;
    int iPos=0;
    int sy = 1;
    int h = 40;

    ac_request("create_iconbutton","CALC_REFRESH256.png",sx,sy,sx+w,sy+h,"Заполнить ТЭП по проекту","init_tep_land.cpp");
    sx = sx + w + offsetx;
    sx = sx + w + offsetx;
    ac_request("create_iconbutton","CREATEZONEVARS.png",sx,sy,sx+w,sy+h,"Создать параметры зон для ТЭП","create_tep_up.cpp");
    sx = sx + w + offsetx;
    ac_request("create_iconbutton","CREATEVARLIST.png",sx,sy,sx+w,sy+h,"Создать переменные ТЭП в информации о проекте","create_tep_vars_in_project.cpp");
    sx = sx + w + offsetx;
    ac_request("create_iconbutton","CREATELAYERS.png",sx,sy,sx+w,sy+h,"Создать слои ТЭП в проекте","create_tep_layers.cpp");
    sx = sx + w + offsetx;
    sx = sx + w + offsetx;
    ac_request("create_iconbutton","CALC_H256.png",sx,sy,sx+w,sy+h,"Помощь","help.cpp");

    sy = sy + h + offsety;
    sx = 1;
    ac_request("set_palette_size_and_message_place",80,100,405,300,sx,sy,326-sx*2,200-sy);
}

Последняя исполняемая строка задает размеры панели и положение окна сообщений в ней.

Базовые элементы и настройки

Номер параметра Параметр Правило расчета
1

Площадь участка, м2
Площадь участка, Га

Суммировать площади всех штриховок с ID="S участка" на слое "Площадь участка.ТЭП"
2 Площадь застройки, м2
Площадь застройки, Га
Суммировать площади всех штриховок с ID="S застройки" на слое "Площадь застройки.ТЭП"
3 Максимальная высотная отметка На слое "Строительный объем.ТЭП" найти объект и определить его высоту от 0 проекта
4 Общая площадь здания Суммировать п.5 и п.6
5 Надземная площадь здания На слое "Площадь здания.ТЭП" суммировать все зоны с ID="S надземная"
6 Подземная площадь здания На слое "Площадь здания.ТЭП" суммировать все зоны с ID="S подземная"
7 Площадь благоустройства п.1 минус п.2
8 Площадь озеленения На слое "Площадь озеленения.ТЭП" считать площади проекции 3d сеток с ID="S озеленения"
9 Площадь твердых покрытий в границах благоустройства  п.10 + п.11 + п.12 + п.13
10 Проезжая часть (асфальтовое покрытие) На слое "Площадь твердых покрытий.ТЭП" суммировать все 3d сетки с ID="S дорога"
11 Тротуары и дорожки (брусчатка) На слое "Площадь твердых покрытий.ТЭП" суммировать все 3d сетки с ID="S тротуар"
12 Отмостка На слое "Площадь твердых покрытий.ТЭП" суммировать все 3d сетки с ID="S отмостка"
13 Парковка На слое "Площадь твердых покрытий.ТЭП" суммировать все 3d сетки с ID="S парковка"
14 Полезная площадь здания, м2 Суммировать площадь всех зон, с установленным пользовательским параметром "Полезная площадь здания"=Да
15 Расчетная площадь здания, м2 Суммировать площадь всех зон, с установленным пользовательским параметром "Расчетная площадь здания"=Да
16 Строительный объем, м3 Суммировать объемы всех элементов морф на слое "Строительный объем.ТЭП" с ID="V строительный"
17 Коэффициент застройки, %  п.2 / п.1
18 Площадь 1-го этажа по внешнему размеру здания Сумма зон на слое "Площадь этажей по внешнему размеру.ТЭП" с ID="S 1 этажа"
19 Площадь 2-го этажа по внешнему размеру здания Сумма зон на слое "Площадь этажей по внешнему размеру.ТЭП" с ID="S 2 этажа"
20 Коэффициент плотности застройки п. 4 / п.1
21 Количество этажей п.21.1 + п.21.2
21.1 Количество надземных этажей Количество элементов зона в п.5
21.2 Количество подземных этажей Количество элементов зона в п.6
23 Коэффициент озеленения п.8 / п.1
26 Количество машиномест На слое "Парковки.ТЭП" количество объектов "Знак Стоянка 21" + п. 27 (имя объекта можно изменять)
27 Количество машиномест МГН На слое "Парковки.ТЭП" количество объектов "Знак Стоянки для Инвалидов 21" (имя объекта можно изменять)

Файл tep.hpp, в котором заданы переменные с названиями слоев, объектов, параметров

Статья находится в разработке.