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

ADN Club => Civil 3D API => Тема начата: Павел55 от 27-07-2019, 08:55:30

Название: Изменить отметки вершин поверхности поштучно
Отправлено: Павел55 от 27-07-2019, 08:55:30
Есть такой метод RaiseVertices(vertexCollection, double elevation) - но он меняет сразу все вершины, а нужно отдельно каждую вершину, чтобы можно было прибавить/отнять рандомную величину.
Есть идеи как это провернуть? И да, извлечь все вершины, поменять их рандомно и создать новую поверхность - не вариант, т.к. нужно сохранить все треугольники в первозданном виде.
Название: Re: Изменить отметки вершин поверхности поштучно
Отправлено: Александр Ривилис от 27-07-2019, 12:09:04
Есть такой метод RaiseVertices(vertexCollection, double elevation) - но он меняет сразу все вершины, а нужно отдельно каждую вершину, чтобы можно было прибавить/отнять рандомную величину.
А если создать коллекцию из одной вершины и для неё выполнить RaiseVertices? Ну и такое действие выполнить по очереди со всеми вершинами?
Название: Re: Изменить отметки вершин поверхности поштучно
Отправлено: Александр Ривилис от 27-07-2019, 22:49:19
Кстати есть еще метод TinSurface.SetVertexElevation, который позволяет установить отметку уровня выбранной вершине.
Название: Re: Изменить отметки вершин поверхности поштучно
Отправлено: Павел55 от 28-07-2019, 08:10:31
Только в методе SetVertexElevation есть одна загвоздка, для того чтобы он корректно работал необходимо делать так
Код - C# [Выбрать]
  1. foreach (TinSurfaceVertex vert in vertexColl)
  2.                 {
  3.                     TinSurfaceVertex vtx = fact.FindVertexAtXY(vert.Location.X, vert.Location.Y);
  4.                     fact.SetVertexElevation(vtx, vtx.Location.Z + value);
  5.                 }
ссылка на ресурс откуда взял это решение: https://geekquestion.com/17770805-upravlenie-vershinami-civil-tin-v-autocad-c/