Как только AddOns LabPP_Automat средствами менеджера расширений подключен к ARCHICAD, в меню "Design\Design Extras" появляется пункт "ЛабПП - Автомат".
При выполнении вложенного пункта "Показать/скрыть палитру" на экране появляется диалог выбора конфигурации.
прежде чем палитра LabPP_Automat покажется на экране, отрабатывается программный скрипт config.cpp. В нем располагаются процедуры создания кнопок.
Этот файл, как и все другие файлы скриптов, расположен в подкаталоге tsprg.
Кнопки могут быть текстовые и с иконками (более компактные). Можно создавать собственные изображения и располагать их в каталоге images.
При создании кнопки задается ее расположение (x1,y1,x2,y2), текст кнопки или имя файла иконки, еще текст, который будет разъяснять назначение кнопки когда мышка находится над ней, и имя файла с программным скриптом, который будет выполняться при нажатии этой кнопки.
Ниже приведен упрощенный пример файла config.cpp. В данном виде он позволяет пользователю при вызове палитры LabPP_Automat выбрать один из трех вариантов настройки интерфейса.
int main()
{
int iret;
iret = tsalert(1,"Выбор конфигурации LabPP_Automat","Выберите вариант компоновки","LabPP_Automat может перенастраиваться на различные задачи","Задача 1","Задача 2","Задача 3");
switch(iret)
{
case 1:
// Создать кнопку
ac_request("create_button","Выполнить выгрузку данных в смету",1,1,294,22,"Здесь записывается комментарий, который будет показываться когда мышь находится над кнопкой","tsprg_1.cpp");
// и далее создание других кнопок для выполнения других файлов скриптов.
break;
case 2:
ac_request("create_button","Перенумеровать квартиры",1,1,294,22,"Перенумеровываются все квартиры дома","tsprg_2.cpp");
ac_request("create_button","Кнопка еще",1,24,100,42,"Комментарий для кнопки 2","tsprg_3.cpp");
break;
case 3:
ac_request("create_button","Выгрузить данные по крыше",1,1,294,22,"Выгружаются площади плоскостей кровли в Excel","tsprg_4.cpp");
// Создать кнопку с иконкой
ac_request("create_iconbutton","CALC_H256.bmp",1,20,41,60,"Переназначить цены на материалы кровли в проекте на данные из Excel","tsprg_8.cpp");
// установить размеры палитры LabPP_Automat 100,100,400,500 и внутри нее положение окна для сообщений 3,100,290,373
ac_request("set_palette_size_and_message_place",100,100,400,500,3,100,290,373);
break;
}
}
Если нужен только один вариант, то функцию tsalert можно закоментировать а переменной iret присвоить единственное значение. Или упростить файл до единственного варианта (оставить только функции создания кнопок).
// Вариант скрипта на единственную конфигурацию панели LabPP_Automat.
int main()
{
// Создать кнопку
ac_request("create_button","Выгрузить данные по крыше",1,1,294,22,"Выгружаются площади плоскостей кровли в Excel","tsprg_4.cpp");
// Создать кнопку с иконкой
ac_request("create_iconbutton","CALC_H256.bmp",1,20,41,60,"Переназначить цены на материалы кровли в проекте на данные из Excel","tsprg_8.cpp");
}
Можно один и тот же программный файл запускать с различными аргументами.
Так можно задавать 3 аргумента (целое, с плавающей точкой и строковый), с которыми будет запущен на исполнение файл под кнопкой.
Для этого в конце команды нужно эти аргументы перечислить.
Пример. Создать кнопку, у которой программа tsprg_8.cpp будет запущена с аргументами (целое =12, с плавающей точкой =1.1 и строковым аргументом "Текстовый аргумент":
int iarg1=10;
double darg2=0.1;
string sarg3="Текстовый аргумент";
ac_request("create_iconbutton","CALC_H256.bmp",1,20,41,60,"Переназначить цены на материалы кровли в проекте на данные из Excel","tsprg_8.cpp", iarg1, darg2, sarg3);
Аргументы могут быть 0, текстовый аргумент может быть ="".
Если аргументы задаются, то в команде должны присутствовать все три через запятую.
В запускаемой программе чтобы получить значения аргументов, используйте конструкцию run_cpp("get_args",....);
Таким образом Вы можете создавать любое количество файлов программных скриптов (здесь это tsprg_4.cpp и другие) и сохранять их в подкаталоге tsprg. Чтобы выполнять их, можно создавать любое количество кнопок в различном сочетании для большего удобства проектировщика, работающего с ARCHICAD.