Форум НПФ  

Вернуться   Форум НПФ "ТОПОМАТИК" > Программные продукты "Топоматик Robur" на платформе "Robur AP3" > Средства разработки Топоматик Robur > Вопросы и ответы
Ник
Пароль
Регистрация FAQ Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #21  
Старый 03-01-2019, 11:56
bambr bambr вне форума
Пользователь
 
Регистрация: Jan 2019
Сообщения: 91
По умолчанию

points[triangles[list[0]].A] - ошибка
points[triangles[list[0]].A].Vertex.Pos - Так? Или можно покороче?
Изображения
 
Ответить с цитированием
  #22  
Старый 03-01-2019, 12:07
Василий Гончаров Василий Гончаров вне форума
Разработчик Robur
 
Регистрация: Oct 2016
Сообщения: 154
По умолчанию

Да, так) Покороче по-моему нельзя)
Ответить с цитированием
  #23  
Старый 03-01-2019, 13:07
bambr bambr вне форума
Пользователь
 
Регистрация: Jan 2019
Сообщения: 91
По умолчанию

Topomatic.Sfc.SurfacePatch - это же "Участок"?
Почему в "Таблице свойств" есть 28 участков, а Topomatic.Sfc.SurfacePatchArray.Count=459? Много SurfacePatch вообще без треугольников. Это мусор? Его можно удалить?
Ответить с цитированием
  #24  
Старый 03-01-2019, 13:15
Василий Гончаров Василий Гончаров вне форума
Разработчик Robur
 
Регистрация: Oct 2016
Сообщения: 154
По умолчанию

Если Вы уверены, что выбраному "Участку" не принадлежит ни одного треугольника, то да, можно. Конкретнее без самих данных проекта ответить невозможно.
Ответить с цитированием
  #25  
Старый 03-04-2019, 10:46
bambr bambr вне форума
Пользователь
 
Регистрация: Jan 2019
Сообщения: 91
По умолчанию

Включить "автокадовский" слой для точки по типу структурных линий
Цитата:
layer = surface.Style.StructureLinesStyle.GetLayer();

- в чем разница между
public DwgLayer Style.PointsStyle.GetExtendedLayer();
public DwgLayer Style.PointsStyle.GetGroundLayer();

правильно так:?
layer = surface.Style.PointsStyle.GetGroundLayer();
layer.Enable = true;
layer.Visible = true;
Ответить с цитированием
  #26  
Старый 03-04-2019, 11:02
bambr bambr вне форума
Пользователь
 
Регистрация: Jan 2019
Сообщения: 91
По умолчанию

Для структурных линий индекс для выделения можно получить Surface.StructureLines.IndexOf(line). Для точек IndexOf нет,как получить индекс для SurfaceSelectionSet.SelectPoint(int index, bool select);
Ответить с цитированием
  #27  
Старый 03-04-2019, 11:40
Василий Гончаров Василий Гончаров вне форума
Разработчик Robur
 
Регистрация: Oct 2016
Сообщения: 154
По умолчанию

GetExtendedLayer() это слой "Дополнительные отметки".
GetGroundLayer() это слой "Отметки высоты поверхности".
Узнать дополнительная точка или нет можно проверив свойство точки IsExtended.

Вы можете получить индексы всех точек, лежащих в определённых границах, а потом найти индекс Вашей точки используя метод поверхности FindPoints
Код:
Surface surface = ... SurfacePoint p = ... ... //формируем рамку вокруг точки, чуть больше её положения var box = new BoundingBox2D(p.Vertex.Pos, p.Vertex.Pos); box.Inflate(-2 * ValueConverter.Eps, 2 * ValueConverter.Eps); var indexes = new List<int>(); //ищем в этих границах, все точки, равные нашей точке surface.FindPoints(box, indexes, (a) => (surface.Points[a].Equals(p))); //наш индекс единственный в списке, если это не так, есть две одинаковые точки Debug.Assert(indexes.Count == 1); //наша точка - любая из списка var index = list[0]; ...
Ответить с цитированием
  #28  
Старый 03-04-2019, 14:51
bambr bambr вне форума
Пользователь
 
Регистрация: Jan 2019
Сообщения: 91
По умолчанию

А для чего нужны
public Surface.PointIndexer PointIndexer { get; }
public Surface.TriangleIndexer TriangleIndexer { get; }

Последний раз редактировалось bambr, 03-04-2019 в 15:14.
Ответить с цитированием
  #29  
Старый 03-04-2019, 15:20
Василий Гончаров Василий Гончаров вне форума
Разработчик Robur
 
Регистрация: Oct 2016
Сообщения: 154
По умолчанию

Прошу прощения, я просто ошибся и в коде неправильно сформировал рамку.
Код:
//здесь необходимо увеличить рамку на некоторую величину, в данном случае 2 мм в каждую сторону. box.Inflate(2 * ValueConverter.Eps, 2 * ValueConverter.Eps);


PointIndexer и TriangleIndexer это "индексатор поверхности". Поверхность может содержать большое количество точек, в среднем до 7-8 миллионов, и соответственно большое количество треугольников. Для обеспечения достаточно быстрого времени выполнения операций по поиску точек и треугольников в заданных границах применяются специальные "индексаторы". Напрямую они обычно нигде не используются, но обеспечивают выполнение таких операций как GetElevaton и FindPoints и т.п.
Ответить с цитированием
  #30  
Старый 03-05-2019, 10:23
bambr bambr вне форума
Пользователь
 
Регистрация: Jan 2019
Сообщения: 91
По умолчанию

StructureLine
public void ToPolyline(IList<Vector3D> polyline) - это не аналог команды "Создать из примитива"? Или наоборот создает полилинию из структурной?
public ElevationBehaviour ElevationBehaviour - что это?
SemanticDataHolder - что это?
public bool IsUpdating { get; } - ?
Ответить с цитированием
Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 2:58.

Навигация по основному сайту
Главная Каталог продуктов и услуг Где купить Сопровождение
Вакансии О компании Обзоры Канал на YouTube

vBulletin v3.0.7 , Copyright ©2000-2022, Jelsoft Enterprises Ltd.
Copyright © 2003-2022, НПФ "ТОПОМАТИК".