get_lands_topcoords
Получить в таблицу список точек геометрии верхней поверхности множества элементов, собранного в списке.
Затем таблица используется, например, для построения 3d сеток в качестве списка точек или списка линий.
Вызов:
ac_request("get_lands_topcoords", int iElementsList, int iTablePointsXYZ_s_polynum, int iMode);
Здесь:
iElementsList - номер списка элементов, из которого надо выбрать точки поверхностей;
iTablePointsXYZ_s_polynum - дескриптор таблицы, в которую записать результат;
Структура генерируется автоматически.
Колонки:
"x","y","z" - координаты 3d точек поверхности;
"s" - числовой флаг для отслеживания вложенных контуров вырезов (зарезервировано);
"polynum" - уникальный номер полигона или линии в таблице.
iMode - вид, в котором получаем данные о точках - 0/1/2/3.
0 - в таблицу заносятся все точки контуров верхних граней поверхностей элементов. В поле "polynum" записывается порядковый номер грани в рамках списка. Используется для наиболее точного воссоздания поверхностей за счет абсолютно точного воспроизведения всех граней.
1 - в таблицу заносятся только уникальные точки, т.е. для смежных граней точки смежных ребер будут указаны только один раз.
2 - заносятся пары точек для каждой линии, задающей ребро, номера ребер в рамках списка уникальные.
3 - заносятся пары точек для двух линий, задающих ребра каждой грани - номера ребер в рамках списка уникальные.
При значении iMode 0,2 или 3 таблица может использоваться как источник данных для построения 3d сеток по линиям.
Пример.
Записать выделенные элементы 3d сеток в список №1 и
получить список уникальных точек верхних поверхностей в таблицу.
Вывести эту таблицу в окно сообщений.
ac_request_special("load_elements_list_from_selection", 1, "MeshType", 2);
int iTable_Coords3DTable;
object("create", "ts_table", iTable_Coords3DTable);
ac_request("get_loaded_elements_list_count", 1);
int icount = ac_getnumvalue();
cout << "Отобрано элементов для анализа = " << icount << "\n";
string str;
ac_request("get_lands_topcoords", 1, iTable_Coords3DTable, 1);
ts_table(iTable_Coords3DTable, "print_to_str", str);
cout << "\nКоординаты\n";
coutvar << str;