Получить в таблицу список точек геометрии верхней поверхности множества элементов, собранного в списке.

Затем таблица используется, например, для построения 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;