Работа TesselatedShapeBuilder

Автор Тема: Работа TesselatedShapeBuilder  (Прочитано 3081 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Работа TesselatedShapeBuilder
« : 15-10-2019, 12:03:52 »
Добрый день.
Создаю  DirectShape со своими мешами при помощи TesselatedShapeBuilder.
Код примерно следующий
Код - C# [Выбрать]
  1.             List<XYZ> loopVertices = new List<XYZ>(3);
  2.             TessellatedShapeBuilder builder = new TessellatedShapeBuilder();
  3.             builder.OpenConnectedFaceSet(false);
  4.             for (int i = 0; i < mesh.Index.Count; i+=3) {
  5.                 CSVector3 meshVrtx1 = mesh.Vertices[mesh.Index[i]].Position;
  6.                 CSVector3 meshVrtx2 = mesh.Vertices[mesh.Index[i + 1]].Position;
  7.                 CSVector3 meshVrtx3 = mesh.Vertices[mesh.Index[i + 2]].Position;
  8.                 XYZ vertex1 = new XYZ(meshVrtx1.x, meshVrtx1.y, meshVrtx1.z);
  9.                 XYZ vertex2 = new XYZ(meshVrtx2.x, meshVrtx2.y, meshVrtx2.z);
  10.                 XYZ vertex3 = new XYZ(meshVrtx3.x, meshVrtx3.y, meshVrtx3.z);
  11.                 loopVertices.Add(vertex1);
  12.                 loopVertices.Add(vertex2);
  13.                 loopVertices.Add(vertex3);
  14.                 builder.AddFace(new TessellatedFace(loopVertices, ElementId.InvalidElementId));
  15.                 loopVertices.Clear();              
  16.             }
  17.             builder.CloseConnectedFaceSet();            
  18.             builder.Target = TessellatedShapeBuilderTarget.Solid;
  19.             builder.Fallback = TessellatedShapeBuilderFallback.Abort;
  20.             builder.Build();
Для некоторых мешей всё проходит хорошо.
Для большинства же возникает исключение Could not create consistent vertex list.
Насколько я знаю, существует ограничение на минимальное расстояние между вершинами в 0.0026 фута. Сначала я подумал, что дело в этом.
Но, даже если я увеличиваю меш в 1000 раз ситуация не меняется. Подскажите, в чем может быть причина?
Спасибо за ответы.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Работа TesselatedShapeBuilder
« Ответ #1 : 15-10-2019, 12:35:41 »
В величине углов треугольников в том числе

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Работа TesselatedShapeBuilder
« Ответ #2 : 15-10-2019, 12:39:30 »
А какое ограничение на углы?
То есть получается, что не любую модель можно передать в DirectShape?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Работа TesselatedShapeBuilder
« Ответ #3 : 15-10-2019, 12:42:13 »
А какое ограничение на углы?

Application.AngleTolerance

В принципе, да. Не любую, есть ограничения. Ещё может быть причина проблем в том, что Target указываете Solid, а построить можно только Mesh

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Работа TesselatedShapeBuilder
« Ответ #4 : 15-10-2019, 13:16:56 »
Спасибо за идею.
Сработала такая комбинация
Код - C# [Выбрать]
  1.  builder.Target = TessellatedShapeBuilderTarget.AnyGeometry;
  2.  builder.Fallback = TessellatedShapeBuilderFallback.Mesh;