.. role:: blue :class: blue Объект геометрической модели MbItem =================================== .. _MbItem_Geometric_Model_Object: .. версия ядра: Класс :blue:`MbItem` объявлен в файле *model_item.h*. Объект геометрической модели :blue:`MbItem` является наследником классов :ref:`MbSpaceItem `, :blue:`MbTransactions` и :blue:`MbAttributeContainer`. Геометрическое ядро C3D оперирует объектами геометрической модели, которые приведены на рис. 1: .. figure:: /MODELER/OBJECTS_OF_GEOMETRIC_MODEL/pictures/O.8.1.1.png :width: 12cm :align: center Рис. 1 Журнал построения :blue:`MbTransactions` содержит данные, необходимые для построения объекта и позволяет повторить построение объекта с отредактированными параметрами. Контейнер атрибутов MbAttrContainer наделяет объекты геометрической модели атрибутами. Таким образом, все объекты геометрической модели кроме своих специфических данных содержат следующие данные: size_t *m_countRegistrable* – количество регистрирований объекта при записи и чтении, ptrdiff_t *useCount* – количество использований объекта другими объектами, std::vector< MbCreator * > **transactions** – упорядоченное множество строителей объекта, std::multimap< int, MbAttribute * > **attributes** – множество атрибутов объекта. Наследниками класса MbItem являются следующие объекты геометрической модели: :ref:`MbSolid ` – твёрдое тело, :ref:`MbWireFrame ` – проволочный каркас, :ref:`MbPointFrame ` – точечный каркас, :ref:`MbMesh ` – полигональный объект, :ref:`MbInstance ` – вставка объекта геометрической модели, :ref:`MbAssembly ` – сборочная единица объектов геометрической модели, :ref:`MbAssistingItem ` – вспомогательный объект, :ref:`MbSpaceInstanсe ` – вставка трёхмерного объекта, :ref:`MbPlaneInstanсe ` – вставка множества двумерных объектов. :ref:`MbPolymesh ` – полигональный объект с топологией. Основными методами объектов геометрической модели являются методы, обеспечивающие редактирование и визуализацию объектов. Метод bool :blue:`RebuildItem`\( MbeCopyMode sameShell, RPArray< :ref:`MbSpaceItem ` > * **items** ) выполняет построение объекта заново по журналу построения. Этот метод вызывается после редактирования внутренних данных объекта. Метод MbItem * :blue:`CreateMesh`\( MbeStepData data, bool wire, bool grid, MbRegDuplicate * iReg ) создаёт полигональную копию объекта. Если объект представляет собой сборочную единицу или вставку, то копия объекта будет также сборочной единицей или вставкой с полигональными объектами. Метод bool :blue:`AddYourMesh`\( MbeStepData data, bool wire, bool grid, :ref:`MbItem ` & **mesh** ) добавляет полигональную копию объекта в объект **mesh**. Метод bool :blue:`NearestMesh`\( MbeSpaceType sType, MbeTopologyType tType, MbePlaneType pType, const MbAxis3D & **axis**, double maxDistance, double & t, double & dMin, MbItem *& **find**, SimpleName & findName, :ref:`MbRefItem ` *& **element**\, SimpleName & elementName, :blue:`MbPath` & path, :ref:`MbMatrix3D ` & **from** ) выполняет поиск ближайшего полигонального объекта **find**, его элемента **element**, их имён findName и elementName, пути в структуре сборочной единицы path и матрицы преобразования в глобальную систему координат **from**. Объекты геометрической модели перегружают такие методы трёхмерного объекта как: методы, обслуживающие преобразование геометрического объекта, void :blue:`Move`\( const :ref:`MbVector3D ` & **v**, MbRegTransform * iReg = NULL ), void :blue:`Rotate`\( const MbAxis3D & **axis**, double **angle**, MbRegTransform * iReg = NULL ), void :blue:`Transform`\( const :ref:`MbMatrix3D ` & **m**, MbRegTransform * iReg = NULL ), методы, обеспечивающие копирование, проверку на совпадение, проверку на возможность сделать совпадающими, делающие объекты совпадающими, :ref:`MbSpaceItem ` & :blue:`Duplicate`\( MbRegDuplicate * iReg = NULL ), bool :blue:`IsSame`\( const :ref:`MbSpaceItem ` & **item** ), bool :blue:`IsSimilar`\( const :ref:`MbSpaceItem ` & **item** ), bool :blue:`SetEqual`\( const :ref:`MbSpaceItem ` & **item** ), методы, возвращающие тип из перечисления геометрических объектов: MbeSpaceType :blue:`IsA`\(), MbeSpaceType :blue:`Type`\(), MbeSpaceType :blue:`Family`\(), методы, обеспечивающие выдачу и редактирование внутренних данных объекта: MbProperty & :blue:`CreateProperty`\( MbePrompt name ), :blue:`GetProperties`\( MbProperties & *properties* ), :blue:`SetProperties`\( MbProperties & *properties* ).