Страница 1 из 1

Событие при выборе 3D курсора

Добавлено: 09 авг 2016, 22:37
chirkovnick
Всем привет. Возникла небольшая проблема, самому решить не получается.
У меня есть, скажем, десять массивов с данными. Три из этих массивов я вывожу на график 3D Stem (то есть в каждую плоскость по массиву) - получился 3D-график в виде точек. Теперь мне нужно, чтобы при нажатии на любую из точек на графике, выводилось отдельное окно с данными по остальным массивам.
Я не понял, как можно это реализовать, чтобы каждая точка была отдельной ячейкой и ее можно было бы выбрать. На ум пришла идея использовать курсор для выбора нужной точки.
Для двумерного графика XY Graph есть возможность после создания курсора в event-структуре добавить событие "cursor drop", "cursor grab" или "cursor moved", что меня, в целом, устраивает. Но такого для 3D графиков я не нашел. Курсор перетаскивать по графику можно, но контролировать событие нельзя.
Начал делать, отталкиваясь от координат курсора и сопоставляя их с элементами исходных массивов (прикладываю файл). Но такой подход уж слишком неоптимальный и требует много ненужных усилий. Может кто сможет подсказать, как решить задачу по-человечески?

Re: Событие при выборе 3D курсора

Добавлено: 12 авг 2016, 17:59
dadreamer
chirkovnick писал(а):как решить задачу по-человечески?
Могу предложить пока только один вариант, но он трудоёмкий. Вместо 3D Stem используйте обычный 3D Picture Control и на нём отрисовывайте все ваши точки (в виде сфер n-ного радиуса). Для определения объекта, по которому кликнули, можно использовать этот пример: https://decibel.ni.com/content/docs/DOC-4958 Координатные оси создаются стандартным :vi: Create 3D Axis. Либо можно Mesh создать поточечно сразу, хотя это будет считаться единым объектом.
Теоретически, можно подобный подход и для всех прочих 3D контролов применить, т.к. они все реализованы на 3D Picture и завёрнуты в собственные классы (можно поглядеть на "внутренности" через "фасад" по ПКМ на контроле). Однако так просто выдрать хотя бы объект сцены их 3D Stem не получается, слишком там много всего наворочено. Хоть и можно покопаться, если время есть.

Re: Событие при выборе 3D курсора

Добавлено: 14 авг 2016, 18:03
chirkovnick
dadreamer писал(а):
chirkovnick писал(а):как решить задачу по-человечески?
Могу предложить пока только один вариант, но он трудоёмкий. Вместо 3D Stem используйте обычный 3D Picture Control и на нём отрисовывайте все ваши точки (в виде сфер n-ного радиуса). Для определения объекта, по которому кликнули, можно использовать этот пример: https://decibel.ni.com/content/docs/DOC-4958 Координатные оси создаются стандартным :vi: Create 3D Axis. Либо можно Mesh создать поточечно сразу, хотя это будет считаться единым объектом.
Теоретически, можно подобный подход и для всех прочих 3D контролов применить, т.к. они все реализованы на 3D Picture и завёрнуты в собственные классы (можно поглядеть на "внутренности" через "фасад" по ПКМ на контроле). Однако так просто выдрать хотя бы объект сцены их 3D Stem не получается, слишком там много всего наворочено. Хоть и можно покопаться, если время есть.

Большое спасибо за совет. Попробую.