Изменить отметки вершин поверхности поштучно

Автор Тема: Изменить отметки вершин поверхности поштучно  (Прочитано 4242 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Есть такой метод RaiseVertices(vertexCollection, double elevation) - но он меняет сразу все вершины, а нужно отдельно каждую вершину, чтобы можно было прибавить/отнять рандомную величину.
Есть идеи как это провернуть? И да, извлечь все вершины, поменять их рандомно и создать новую поверхность - не вариант, т.к. нужно сохранить все треугольники в первозданном виде.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Есть такой метод RaiseVertices(vertexCollection, double elevation) - но он меняет сразу все вершины, а нужно отдельно каждую вершину, чтобы можно было прибавить/отнять рандомную величину.
А если создать коллекцию из одной вершины и для неё выполнить RaiseVertices? Ну и такое действие выполнить по очереди со всеми вершинами?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Павел55 28-07-2019, 08:01:31

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Кстати есть еще метод TinSurface.SetVertexElevation, который позволяет установить отметку уровня выбранной вершине.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Только в методе 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/
« Последнее редактирование: 28-07-2019, 09:38:12 от Александр Ривилис »