.. role:: blue :class: blue Topological Object MbTopItem ============================ .. _MbTopItem_Topological_Object_: .. kernel version: 118060 The :blue:`MbTopItem` class is declared in the *topology_item.h* file. The :blue:`MbTopItem` class is derived from the :ref:`MbRefItem ` and :blue:`TapeBase` classes and is the base class for topological objects. Among the topological objects, the class of named topological objects :ref:`MbTopologyItem ` is distinguished. It is derived from the :blue:`MbTopItem` and :blue:`MbAttributeContainer` classes. The topology object proxy :blue:`MbTopologyProxy` is derived from :blue:`MbTopologyItem` and is used in naming algorithms. The :ref:`MbTopologyItem ` class is also declared in the *topology_item.h* file. The C3D geometric kernel operates on the topological objects shown in Figure: .. figure:: /MODELER/GEOMETRICAL_OBJECTS/pictures/O.2.3.1.png :width: 12cm :align: center The following topological objects are derived from the :blue:`MbTopItem` class: :ref:`MbFaceShell ` – a set of faces; :ref:`MbLoop ` – a cycle of edges forming a face boundary; :ref:`MbOrientedEdge ` – an oriented edge of a cycle; :ref:`MbTopologyItem ` – a named topological object. The following objects are derived from the named topological object :blue:`MbTopologyItem`: :ref:`MbVertex ` – a vertex; :ref:`MbEdge ` – an edge; :ref:`MbFace ` – a face. The edge has a descendant :ref:`MbCurveEdge ` that describes a smooth junction of two faces or a face boundary. The interaction of named topological objects with attributes is provided by the attribute container :blue:`MbAttributeContainer`. The main methods of named topological objects are: .. code-block:: cpp virtual void Transform( const MbMatrix3D & matr, MbRegTransform * iReg = nullptr ); virtual void Move( const MbVector3D & to, MbRegTransform * iReg = nullptr ); virtual void Rotate( const MbAxis3D & axis, double angle, MbRegTransform * iReg = nullptr ); These methods perform transformations of a topological object and operations with its name and attributes. When a transformation is performed, the :blue:`MbRegTransform` registrar is used to prevent multiple transformations of nested objects. If an object contains pointers or references to other objects, then the nested objects are also transformed. The registrar must be used when several related objects are transformed sequentially and their relationship is defined by pointers or references to common objects. Performing transformations without a registrar may lead to multiple transformations of common nested objects. To identify their type, topological objects are equipped with the :blue:`IsA`\ () method, which returns a type from the enumeration of topological objects :blue:`MbeTopologyType`.