Всем привет. Возникла небольшая проблема, самому решить не получается.
У меня есть, скажем, десять массивов с данными. Три из этих массивов я вывожу на график 3D Stem (то есть в каждую плоскость по массиву) - получился 3D-график в виде точек. Теперь мне нужно, чтобы при нажатии на любую из точек на графике, выводилось отдельное окно с данными по остальным массивам.
Я не понял, как можно это реализовать, чтобы каждая точка была отдельной ячейкой и ее можно было бы выбрать. На ум пришла идея использовать курсор для выбора нужной точки.
Для двумерного графика XY Graph есть возможность после создания курсора в event-структуре добавить событие "cursor drop", "cursor grab" или "cursor moved", что меня, в целом, устраивает. Но такого для 3D графиков я не нашел. Курсор перетаскивать по графику можно, но контролировать событие нельзя.
Начал делать, отталкиваясь от координат курсора и сопоставляя их с элементами исходных массивов (прикладываю файл). Но такой подход уж слишком неоптимальный и требует много ненужных усилий. Может кто сможет подсказать, как решить задачу по-человечески?
Событие при выборе 3D курсора
-
- interested
- Сообщения: 2
- Зарегистрирован: 09 авг 2016, 21:40
- Версия LabVIEW: 14
- Контактная информация:
Событие при выборе 3D курсора
- Вложения
-
- Graph Events.vi
- Пример с двумерным случаем
- (21.38 КБ) 151 скачивание
-
- test.vi
- (21.84 КБ) 147 скачиваний
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Событие при выборе 3D курсора
Могу предложить пока только один вариант, но он трудоёмкий. Вместо 3D Stem используйте обычный 3D Picture Control и на нём отрисовывайте все ваши точки (в виде сфер n-ного радиуса). Для определения объекта, по которому кликнули, можно использовать этот пример: https://decibel.ni.com/content/docs/DOC-4958 Координатные оси создаются стандартным Create 3D Axis. Либо можно Mesh создать поточечно сразу, хотя это будет считаться единым объектом.chirkovnick писал(а):как решить задачу по-человечески?
Теоретически, можно подобный подход и для всех прочих 3D контролов применить, т.к. они все реализованы на 3D Picture и завёрнуты в собственные классы (можно поглядеть на "внутренности" через "фасад" по ПКМ на контроле). Однако так просто выдрать хотя бы объект сцены их 3D Stem не получается, слишком там много всего наворочено. Хоть и можно покопаться, если время есть.
-
- interested
- Сообщения: 2
- Зарегистрирован: 09 авг 2016, 21:40
- Версия LabVIEW: 14
- Контактная информация:
Re: Событие при выборе 3D курсора
dadreamer писал(а):Могу предложить пока только один вариант, но он трудоёмкий. Вместо 3D Stem используйте обычный 3D Picture Control и на нём отрисовывайте все ваши точки (в виде сфер n-ного радиуса). Для определения объекта, по которому кликнули, можно использовать этот пример: https://decibel.ni.com/content/docs/DOC-4958 Координатные оси создаются стандартным Create 3D Axis. Либо можно Mesh создать поточечно сразу, хотя это будет считаться единым объектом.chirkovnick писал(а):как решить задачу по-человечески?
Теоретически, можно подобный подход и для всех прочих 3D контролов применить, т.к. они все реализованы на 3D Picture и завёрнуты в собственные классы (можно поглядеть на "внутренности" через "фасад" по ПКМ на контроле). Однако так просто выдрать хотя бы объект сцены их 3D Stem не получается, слишком там много всего наворочено. Хоть и можно покопаться, если время есть.
Большое спасибо за совет. Попробую.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 19 Ответы
- 5223 Просмотры
-
Последнее сообщение jane_wild
-
- 23 Ответы
- 4626 Просмотры
-
Последнее сообщение maxim_MA
-
- 6 Ответы
- 1643 Просмотры
-
Последнее сообщение ladik
-
- 38 Ответы
- 13300 Просмотры
-
Последнее сообщение AndreyDmitriev
-
- 2 Ответы
- 270 Просмотры
-
Последнее сообщение Optoelectronics