Тема: Дерево объектов в модели

Всем привет!

Есть 3D модель промышленного объекта в одной программе. В дереве это представлено примерно так TreeView:
----Блок_1
-------Оборудование_1
----------Цилиндр (высота, диаметр)
----------Куб (высота, длина, ширина)
----------Конус (нижний диаметр, верхний диаметр, высота)
          (.... т.п. примитивы, из которых состоит аппарат.)
-------Оборудование_2
       ...
-------Трубопровод_№1
----------Труба (длина, диаметр) (см. пример)
----------Отвод (примитив как тор 90 град., угол, наружный диаметр, радиус)
          (.... т.п. примитивы)
----Блок_2
    .....
    .....
----Блок_3

3D модель примерно такая : http://www.autodesk.ru/content/dam/auto … 35x582.jpg

вот такую модель хочу "перегнать" в автокад

Могу получить из программы размеры, положение и атрибуты всех деталей
Например труба:
Цилиндр, начало в координате 500, 80, 300
Длина 1200
Диаметр 108
Атрибуты:
          Находится в "Трубопровод_№1"
          Находится в "Блок_1"
(можно получить и другие атрибуты. Здесь представлены атрибуты иерархии расположения объекта)

Т.о. я могу все эти детали сделать как 3Dsolid(ы) в автокаде и визульно все будет OK.
Однако нужно сделать такое же дерево объектов, чтобы можно было делать навигацию/выделение.

Прошу помощи, подскажите с чего можно начать? В какую сторону думать чтобы решить задачку.
Спасибо.

(изменено: Hwd, 26 ноября 2013г. 10:34:46)

Re: Дерево объектов в модели

Сергей пишет:

Однако нужно сделать такое же дерево объектов, чтобы можно было делать навигацию/выделение.

Прошу помощи, подскажите с чего можно начать? В какую сторону думать чтобы решить задачку.

Поскольку определённый физический объект (к примеру насос) может быть представлен целым набором различного рода примитивов, то имеет смысл объединять эти примитивы в блоки, прописав в их атрибутах информацию, соответствующую конкретному виду оборудования. Затем, на основе этой информации, можно будет формировать ведомости твоего оборудования (если потребуется).

Что касается дерева объектов, то оно строится без особых проблем: Создаёшь палитру, на которой помещаешь TreeView или же создаёшь не модальное окно (Form\Window)опять же с TreeView - хостинг контрола на твой вкус. Затем в цикле перебираешь все вхождения блоков, и строишь своё визуальное дерево в TreeView, группируя их по типам и различным, важным для тебя признакам, запоминая в каждом "листе" этого дерева идентификатор конкретного вхождения блока (ObjectId). На событие выделения элемента вешаешь код, который выделяет в модели вхождение блока, соответствующее идентификатору выбранного в дереве объекта.