Как только AddOns LabPP_Automat средствами менеджера расширений подключен к ARCHICAD, в меню "Design\Design Extras" появляется пункт "ЛабПП - Автомат".

При выполнении вложенного пункта  "Показать/скрыть палитру" на экране появляется диалог выбора конфигурации.

Расчеты в ARCHICAD
прежде чем палитра LabPP_Automat покажется на экране, отрабатывается программный скрипт config.cpp. В нем располагаются процедуры создания кнопок.

Этот файл, как и все другие файлы скриптов, расположен в подкаталоге tsprg.


Для обработки табличных данных LabPP_Automat предоставляет мощный инструмент ts_table(...).
Чтобы его использовать необходимо сначала создать объект типа "ts_table" при помощи функции создания объекта.
Эта функция возвращает целое число. Это так называемый дескриптор объекта.
Указывая его при обращении к функциям ts_table(...) мы указываем с каким экземпляром объекта мы хотим выполнить действия.
Здесь мы создадим объект типа ts_table:

    int TableDescr1;  // объявляем переменную типа "целое чиcло".
    object("create","ts_table",TableDescr1);  // создаем объект типа "ts_table" и его дескриптор записываем в переменную TableDescr1
    // Здесь мы работаем с нашим экземпляром объекта ts_table->
    // <-
    object("delete",TableDescr1); // когда экземпляр объекта больше не нужен - удаляем его по его дескриптору.

Благодаря использованию дескрипторов мы можем одновременно работать с большим количеством табличных объектов. А это, в свою очередь, дает нам возможность создавать отчеты и обработки невероятной сложности просто, удобно и понятно.

Для работы с экземпляром объекта "ts_table" используется функция

ts_table(int descriptor, string directive, ....);

Суть строковой директивы определяет список и значение следующих далее аргументов.

add_column   добавить колонку в таблицу
set_first_key   задать колонку, по которой отслеживать уникальность строк (очень удообно)
add_row   добавить строку
add_row_sum  

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

sort   выполнить сортировку строк таблицы по заданной колонке
select_row   сделать текущей заданную строку таблицы
search   быстрый поиск строки по значению в колонке
get_value_of   получить значение из заданной колонки текущей строки
get_rows_count   получить количество строк в таблице
get_columns_count   получить количество колонок в таблице

double grad_to_radian(double grad)   перевести градусы в радианы
double radian_to_grad(double rad)   перевести радианы в градусы
double cos(double rad)   косинус угла
double sin(double rad)   синус угла

double grad_to_radian(double grad)

Перевести градусы в радианы.
Пример. Конвертировать в радианы 180 градусов:

double result = grad_to_radian(180);

В результате переменная result будет содержать число Пи (3.14....).

double radian_to_grad(double rad)

Перевести угол в радианах в градусы.
Пример. Перевести угол 3.14 в градусы.

double result = radian_to_grad(3.14);

В результате переменная result будет содержать число 180.


int shell_func(string directive, ...)

Осуществляет обращение к системным функциям.
Набор аргументов определяется в соответствии с директивой.
Возвращает 0 при успешном выполнении. Если что-то пошло не так возвращает -1.

get_path   получить в строковую переменную путь в соответствии с запросом
set_cur_dir   сменить текущий каталог
shellexecute   выполнить операцию

int shell_func(string directive, ...)

Осуществляет обращение к системным функциям.
Набор аргументов определяется в соответствии с директивой.
Возвращает 0 при успешном выполнении. Если что-то пошло не так возвращает -1.

ac_request("solaris_test")   проверить наличие и возможность получения данных из add-ons LabPP_Solaris:Квартирография
ac_request("get_flat_rooms",int ObjectDescrFlat, int listnum);   заполнить список элементов № listnum элементами комнат (зон) подключенных к маркеру квартиры (по данным Квартирографии LabPP_Solaris)