.. role:: blue :class: blue Построение полигонов объекта ============================ .. _Constructing_Polygons_for_an_Object: .. версия ядра: Виртуальный метод трёхмерных геометрических объектов .. code-block:: cpp void MbSpaceItem::CalculateWire( double sag, MbMesh & mesh ); заполняет присланный полигональный объект *mesh* набором полигонов, аппроксимирующих геометрический объект. Входным параметром метода является *sag* – максимально допустимое отклонение полигонального элемента от оригинала по прогибу. Выходным параметром метода является полигональный объект *mesh*. Метод объявлен в файле *space_item.h* и заголовочных файлах наследников :blue:`MbSpaceItem`. Полигональный объект описан в подразделе :ref:`Полигональный объект MbMesh `. Параметр *sag* определяет максимально допустимое расстояние между объектом и ломаной линией, проходящей по точкам полигонов. Рассматриваемый метод заполняет только множество указателей на полигоны *mesh.wires* (ломаные линии). Кривую рассматриваемый метод аппроксимирует одним полигоном. Контур рассматриваемый метод аппроксимирует несколькими полигонами, каждый из которых проходит по соответствующему сегменту контура. На рис. 1 приведена кривая и её полигональный объект, состоящий из одного полигона. .. figure:: ../../pictures/R.1.4.1.png :width: 9cm :align: center Рис. 1 Поверхность рассматриваемый метод аппроксимирует набором полигонов, проходящих по *u*-линиям, *v*-линиям и по границе поверхности. На рис. 2 приведён полигональный объект поверхности, состоящий из нескольких ломаных линий. .. figure:: ../../pictures/R.1.4.2.png :width: 9cm :align: center Рис. 2 Тело рассматриваемый метод аппроксимирует набором ломаных линий, проходящих внутри грани вдоль *u*-линий и *v*-линий поверхностей граней, и набором ломаных, аппроксимирующих кривые, на которых базируются рёбра тела. На рис. 3 справа приведён полигональный объект тела: .. figure:: ../../pictures/R.1.4.3.png :width: 15cm :align: center Рис. 3 Для объектов геометрической модели рассматриваемый метод работает аналогично методу :blue:`CalculateMesh`\() при *stepData.stepType* == *ist_SpaceStep*, *stepData.sag* == *sag*, *note.wire* == true, *note.seam* == true.