Этот пример показывает один из простых вариантов использования 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.
Каждая конфигурация является отдельным каталогом.
ТЭП находится в каталоге "Технико-экономические показатели".
Здесь вы видите что в виде названия конфигурации показывается имя ее каталога.
В каталоге "Технико-экономические показатели" находится 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 кнопок.
В тексте файла 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, в котором заданы переменные с названиями слоев, объектов, параметров
Статья находится в разработке.