Запуск рассчетных программ из файлов
В приложение LabPP_Calc встроено ядро LabPP_Automat.
Поэтому Вы можете создавать и выполнять свои собственные программы расчетов.
Этот мощный, быстрый, проверенный на больших объемах механизм автоматизации позволяет сэкономить огромное количество времени.
Обычно программы расчетов - это текстовые файлы на языке C++ для ARCHICAD.
Эти файлы хранятся в удобном месте компьютера или в сети и могут запускаться в любой момент.
Результат вычислений может помещаться в любое из расчетных полей (A, B, C или основное) с соответствующим комментарием под ним.
Кликните здесь чтобы получить больше информации об этом.
Вы можете заказывать разработку таких программ на сайте www.labpp.ru.
Пример расчетной программы.
Этот пример находится в каталоге "MyPrg" и называется "Расчет количества кирпича и цементного раствора.cpp"
//************************************************************************************************
// Пример C++ для ARCHICAD
// Выбирает стены, у которых имя класса в любом месте содержит слово "кирпич" или "Кирпич".
// Рассчитывает количество кирпичей и объем цементного раствора, затем помещает результат в
// LabPP_Calc в поля 'A' и 'B' с комментариями.
//
// Учтите: для корректной работы нужно чтобы ваши стены были классифицированы и их классы
// в классификационной системе имели в каком либо месте слова "кирпич" или "Кирпич".
// Калькуляция для простоты сделане для размера кирпича = 250x120x65 mm
// При необходимости Вы можете присвоить и использовать, например, пользовательское свойство для
// кирпичных стен с заданием других размеров кирпича.
// И Вы можете использовать другой, более точный способ определения объема кирпичной кладки.
//************************************************************************************************
string sClassificationSystemName = "ARCHICAD Classification";
int main()
{
ac_request_special("load_elements_list", 1, "WallType", 2,
"", "Cls", sClassificationSystemName, "REGEXMATCH", ".*[Кк]ирпич.*", "");
ac_request("select_elements_from_list", 1, 1);
ac_request("get_loaded_elements_list_count", 1);
int icount = ac_getnumvalue();
cout << "Number of elements selected for analysis = " << icount << "\n";
// суммировать объем кладки
int i;
double volume, volume_sum;
for (i = 0; i < icount; i++)
{
ac_request("set_current_element_from_list", 1, i);
ac_request("get_quantity_value","Volume");
volume = ac_getnumvalue();
volume_sum += volume;
}
coutvar << volume_sum;
// рассчитать кол-во кирпичей размером = 250x120x65 mm
double brick_count = volume_sum * 396;
brick_count = tsround(brick_count, 1);
coutvar << brick_count;
cout << "поместить в поле 'A'\n";
ac_request("interface", "calc_field", "set", "a", 1, ecvt(brick_count), "Кирпич 250x120x65 мм");
// рассчитать объем раствора
double mortar_volume = volume_sum * 0.232;
mortar_volume = tsround(mortar_volume, 1);
coutvar << mortar_volume;
cout << "поместить в поле 'B'\n";
ac_request("interface", "calc_field", "set", "b", 1, ecvt(mortar_volume), "Объем раствора для кладки 250x120x65 мм");
cout << "Программа успешно завершена";
}