int shell_func(string directive, ...)

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

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

get_path

Формат команды:

shell_func("get_path", string what, string result);

Переменная what задает тип возвращаемого пути:

rootconfig получить путь к корневому каталогу текущей конфигурации
tsimages получить путь к каталогу картинок текущей конфигурации
tsprg получить путь к каталогу программ текущей конфигурации
rootaddons получить путь к каталогу, где находится сам LabPP_Automat

set_cur_dir

Формат команды:

shell_func("set_cur_dir", string path_or_what);

path_or_what - может быть путь или директива ("rootconfig", tsimages, tsprg или rootaddons).
Пример. Установить текущий каталог "C:\\MyDir":

string mydir = "C:\\MyDir";
int res = shell_func("set_cur_dir",mydir);
if(res==0)
   cout << "Рабочий каталог успешно изменен";
else
   cout << "Установить каталог на " << mydir <<" не удалось";

shellexecute

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

int res = shell_func("set_cur_dir","rootconfig");
if(res !=0)
   return -1;
res = shell_func("shellexecute","Пример.xls");
Будет открыт файл Пример.xls при помощи той программы, которая используется по умолчанию для файлов с расширением .xls на компьютере пользователя. Обычно это EXCEL.
Так можно открывать файлы EXCEL из ARCHICAD.