Полигональная сетка
Полигональная сетка формируется множеством треугольников, каждый из которых состоит из трёх вершин.
StartMesh(ID: string) — начать формирование сетки.
ID— идентификатор сущности.
AddMeshVertex(index: integer; p: TST3DPoint) — добавить вершину.
index— индекс вершины (используется вAddMeshTriangle);p— координаты вершины.
AddMeshTriangle(v1, v2, v3: integer) — добавить треугольник.
v1,v2,v3— индексы трёх вершин.
CloseMesh() — завершить формирование сетки.
Пример импорта полигональной сетки. Каждая вершина добавляется один раз — по своему индексу (повторные индексы из разных треугольников пропускаются), затем по этим индексам добавляются треугольники.
// Параметры полигональной сетки CAD-системы
class CADMeshParam
{
public CADPoint[] Vertices; // вершины (индекс = позиция в массиве)
public int[][] Triangles; // треугольники: тройки индексов вершин
}
bool SaveMesh(string id, CADMeshParam meshParam)
{
sgr.StartMesh(id);
try
{
var added = new HashSet<int>();
foreach (int[] tri in meshParam.Triangles)
{
// каждую вершину добавляем один раз — по её индексу (приводим к TST3DPoint)
foreach (int vIndex in tri)
if (added.Add(vIndex)) // вершину приводим к TST3DPoint
sgr.AddMeshVertex(vIndex, ToPoint(meshParam.Vertices[vIndex]));
sgr.AddMeshTriangle(tri[0], tri[1], tri[2]);
}
}
finally
{
sgr.CloseMesh();
}
return true;
}