Run programs
The LabPP_Automat core is built into the LabPP_Calc application.
Therefore, you can create and run your own calculation programs.
This powerful, fast, high-volume proven automation engine saves a huge amount of time.
Usually calculation programs are C++ text files for ARCHICAD.
These files are stored in a convenient location on your computer or on the network and can be launched at any time.
The calculation result can be placed in any of the calculated fields (A, B, C or main) with the corresponding comment under it.
Click here for more information on this.
You can order the development of such programs on the site www.labpp.ru.
Here is an programm example.
//************************************************************************************************
// Example C++ for ARCHICAD
// Select walls, that class name contains in any place "brick" and "Brick" word.
// Calculate count of the brick and volume of the mortar and place results
// to LabPP_Calc field 'A' and 'B' with a comments.
//
// Note: to correct work check that any of Your walls must be classified as any class/classes in
// classification system and class name/classes names contains work "brick" or "Brick" word on
// any place.
// Calculation for brick size = 250x120x65 mm
// If needed, You can assign and use, for example, user property for walls to determine other
// brick sizes and so on.
// And You can use other, more a more accurate way to determine the volume of brickwork in a wall
//************************************************************************************************
string sClassificationSystemName = "ARCHICAD Classification";
int main()
{
ac_request_special("load_elements_list", 1, "WallType", 2,
"", "Cls", sClassificationSystemName, "REGEXMATCH", ".*[Bb]rick.*", "");
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";
// summ volume
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;
// calc brick count for brick size = 250x120x65 mm
double brick_count = volume_sum * 396;
brick_count = tsround(brick_count, 1);
coutvar << brick_count;
cout << "place to field 'A'\n";
ac_request("interface", "calc_field", "set", "a", 1, ecvt(brick_count), "brick 250x120x65 mm count");
// calc mortar volume
double mortar_volume = volume_sum * 0.232;
mortar_volume = tsround(mortar_volume, 1);
coutvar << mortar_volume;
cout << "place to field 'B'\n";
ac_request("interface", "calc_field", "set", "b", 1, ecvt(mortar_volume), "mortar volume to brickwork 250x120x65 mm");
cout << "Programm sucsessfully ended";
}