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";

}