Значение координаты Z для точки проецирования на TopographySurface

Автор Тема: Значение координаты Z для точки проецирования на TopographySurface  (Прочитано 1543 раз)

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

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

  • ADN OPEN
  • Сообщений: 12
  • Карма: 0
Добрый день!

На виде имеется несколько ModelLine и TopographySurface. Из линий получены точки начала и окончания. На ModelLine получено еще несколько точек. Необходимо полученные точки разместить на "земле" т.е. найти значения координат Z для точек.
Смотрел данную статью https://thebuildingcoder.typepad.com/blog/2014/09/planes-projections-and-picking-points.html#15  :( , но не понял, как уйти от Surface  к Plane.
« Последнее редактирование: 11-06-2019, 09:36:33 от kuvon »

Отмечено как Решение kuvon 11-06-2019, 09:34:14

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Добрый.

Во-первых, не стоит путать Surface (математическое описание поверхности, кстати, Plane - это класс-наследник Surface) и TopographySurface.

Сам TopographySurface не очень удобный объект для работы в данном случае, т.к. его геометрия - это Mesh. Собственно, первый вариант - это перебор его треугольников, последовательно проецируем точку на плоскость каждого треугольника и проверяем дальше, что проекция оказалась внутри треугольника. Альтернативный вариант - на 3D виде найти искомые проекции с помощью ReferenceIntersector-а.

Псевдокод:
Код - C# [Выбрать]
  1. var intersector = new ReferenceIntersector(new[] {toposurface.Id}, FindReferenceTarget.All, view);
  2. var intersection = intersector.FindNearest(point, XYZ.BasisZ) ?? intersector.FindNearest(point, -1*XYZ.BasisZ);
  3. return intersection?.GetReference().GlobalPoint;
  4.  

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

  • ADN OPEN
  • Сообщений: 12
  • Карма: 0
Спасибо большое, очень помогли!