Суммировать все площади всех граней элемента раздельно по назначенным материалам.

Например, у элементов типа Morph можно назначать различным граням собственное поерытие (удерживайте CTRL+SHIFT и кликайте на нужные грани - они будут выбираться.

Затем в редакторе элемента задайте название материала). 



Все площади покрытий можно получить одной командой.

Результат выводится в таблицу.

Вызов:

int ires = ac_request_special("GetMaterialSurfaceSquareTable", int iTableDescr);

Здесь:

iTableDescr - таблица с результатом.

Перед вызовом функции надо создать объект таблицы. 

Функция создаст колонки:

"materialindex" - тип целое число;

"materialname" - тип строка;

"square" - тип число с плавающей точкой.


Пример. Получить площади всех поверхностей у выбранного элемента Morph раздельно по материалам и вывести в окно сообщений.


int main()

{

   ac_request_special("load_elements_list_from_selection", 1, "MorphType", 0);

   ac_request("get_loaded_elements_list_count",1);

   int iсount = ac_getnumvalue();

   if (icount == 0)

   {

      cout << "Сначала выберите элемента типа Morph";

      return;

   }


   ac_request("set_current_element_from_list", 1, 0);

   

   int iTableMat;

   object("create", "ts_table", iTableMat);

   ac_request_special("GetMaterialSurfaceSquareTable", iTableMat);

   string str;

   ts_table(iTableMat, "print_to_str", strrr);

   coutvar << str;

   object("delete", iTableMat);

   cout << "Программа успешно завершена";

}


Результат: