Сейчас работаем над новым AddOns'ом LabPP_Automat.
(интерпретатор си++ для ArchiCAD)
AddOn выполняет программы, написанные в текстовом виде.
Теперь мы можем на заказ создавать довольно мощные настраиваемые программные конструкции не прибегая к созданию новых AddOns, что значительно дешевле.
Следующий фрагмент кода подключает Excel, выбирает таблицу "Текущие цены".
Считывает значение цены из ячейки B4.
И архикадовским объектам на слое "Пол" у которых ID = "Доска 10х20" присваивает переменной "Цена за п/м" значение, считанное из Excel.
int main()
{
int icount; // Объявление переменных
double dres;
double fromexcel;
excel_attach(); // подключить Excel
excel_request("sheet_select","Текущие цены"); // Выбрать таблицу с ценами
excel_select_range("B4"); // Выбрать ячейку B4
fromexcel = excel_getnumvalue(); // Считать значение из текущей ячейки Excel
ac_request("load_elements_list","ObjectType","Layer","Пол","ID","Доска 10х20"); // Загрузить объекты слоя "Пол" с ID = "Доска 10х20"
ac_request("get_loaded_elements_list_count"); // Определить количество считаных объектов
icount = ac_getnumvalue();
int i;
for(i=0;i<icount;i++) // Перебрать все объекты выборки
{
ac_request("set_current_element_from_list",i); // Выбрать для обработки объект из списка
ac_request("get_object_property_value","h"); // Считать из этого объекта значение параметра h (высота)
dres = ac_getnumvalue();
cout << "h= " << dres; // Напечатать значение h в отчете
ac_request("set_object_property_value","Цена за п/м",fromexcel); // Записать в объект новое значение цены
}
excel_detach(); // Отключить excel
}