Построение полигонального объекта
Виртуальный метод объектов геометрической модели
MbItem * MbItem::CalculateMesh( const MbStepData & stepData,
const MbFormNote & note,
MbRegDuplicate * iReg ) const;
строит полигональный объект, аппроксимирующий рассматриваемый объект геометрической модели.
Входными параметрами метода являются:
stepData – данные для вычисления шага аппроксимации;
note – способ построения полигонального объекта;
iReg – регистратор копируемых объектов.
В случае успешной работы метод возвращает указатель на вновь построенный объект геометрической модели MbItem; в противном случае возвращает ноль.
Метод объявлен в файле item.h и заголовочных файлах наследников MbItem.
Рассматриваемый метод аппроксимирует объекты модели, создавая полигональные копии с аналогичной структурой. Для тела, проволочного каркаса и точечного каркаса рассматриваемый метод создаст полигональный объект MbMesh, аппроксимирующий исходный объект, и вернёт указатель на созданный объект. Каждая триангуляция grids[i] объекта MbMesh будет аппроксимировать i-ую грань, каждый полигон wires[i] объекта MbMesh будет аппроксимировать i-ое ребро, каждый апекс peaks[i] объекта MbMesh будет аппроксимировать i-ую вершину. Для полигонального объекта MbMesh рассматриваемый метод создаст полигональную копию. Для вставки рассматриваемый метод создаст вставку с объектом, который создаст этот же метод для содержимого вставки. Для сборочной единицы рассматриваемый метод создаст сборочную единицу с объектами, которые создаст этот же метод для объектов сборочной единицы.
Параметр stepData управляет густотой сетки полигонального объекта и содержит данные для вычисления шага при движении вдоль кривых и поверхностей объекта модели. Параметр note определяет способ построения полигонального объекта. Параметры stepData и note описаны в параграфе Triangulation_Calculation_Control. При note.wire == true рассматриваемый метод заполняет множество указателей на полигоны mesh.wires; при note.*grid* == true рассматриваемый метод заполняет множество указателей на триангуляции mesh.grids (для граней и поверхностей), множество указателей на полигоны mesh.wires (для рёбер), множество указателей на апексы mesh.peakes (для вершин).
Параметр iReg может быть равен нулю. Он служит для передачи вложенным методам информации о уже обработанных объектах.
На рис. 1 приведён полигональный объект тела, построенный с параметрами note.wire == false, note.grid == true, содержащий триангуляции, полигоны и апексы. На рис. 2 приведён полигональный объект тела, построенный с параметрами note.wire == true, note.grid == false, содержащий только полигоны.
Рис. 1
Рис. 2
На рис. 3 приведён полигональный объект сборочной единицы, построенный с параметрами note.wire == false, note.grid == true, состоящий из сборочной единицы полигональных объектов, аппроксимирующих детали:
Рис. 3
Рассматриваемый метод используется для визуализации объектов геометрической модели. Полигональные объекты легко трансформируются, для них можно быстро найти пересечение с прямой линией. На экране рисуется именно полигональная копия объекта геометрической модели, а объект в исходном представлении остаётся за кадром.