Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: Vladislav от 15-10-2019, 12:03:52

Название: Работа TesselatedShapeBuilder
Отправлено: Vladislav от 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 раз ситуация не меняется. Подскажите, в чем может быть причина?
Спасибо за ответы.
Название: Re: Работа TesselatedShapeBuilder
Отправлено: Александр Игнатович от 15-10-2019, 12:35:41
В величине углов треугольников в том числе
Название: Re: Работа TesselatedShapeBuilder
Отправлено: Vladislav от 15-10-2019, 12:39:30
А какое ограничение на углы?
То есть получается, что не любую модель можно передать в DirectShape?
Название: Re: Работа TesselatedShapeBuilder
Отправлено: Александр Игнатович от 15-10-2019, 12:42:13
А какое ограничение на углы?

Application.AngleTolerance

В принципе, да. Не любую, есть ограничения. Ещё может быть причина проблем в том, что Target указываете Solid, а построить можно только Mesh
Название: Re: Работа TesselatedShapeBuilder
Отправлено: Vladislav от 15-10-2019, 13:16:56
Спасибо за идею.
Сработала такая комбинация
Код - C# [Выбрать]
  1.  builder.Target = TessellatedShapeBuilderTarget.AnyGeometry;
  2.  builder.Fallback = TessellatedShapeBuilderFallback.Mesh;