.. role:: blue :class: blue MbCurveEdge Face Edge ===================== .. _MbCurveEdge_Face_Edge_: .. версия ядра: Class :blue:`MbCurveEdge` is declared in file *topology.h*. Edge :blue:`MbCurveEdge` is a derived edge of :blue:`MbEdge` and represents an edge constructed on a surface intersection curve :ref:`MbSurfaceIntersectionCurve `. Edge :blue:`MbCurveEdge` is intended to describe a portion of a face boundary. Unlike edge :blue:`MbEdge`, edge :blue:`MbCurveEdge` describes not just a curve, but a portion of the junction of two faces or a portion of a face border. The data structure of the face edge contains a pointer to the surface intersection curve :ref:`MbSurfaceIntersectionCurve ` **curve**, a flag indicating coincidence of the edge direction with the curve direction *sameSense*, a pointer to the start vertex :blue:`MbVertex` **begVertex**, a pointer to the end vertex :blue:`MbVertex` **endVertex**, a pointer to the face on the left :blue:`MbFace` **facePlus** and a pointer to the face on the right :blue:`MbFace` **faceMinus** of the edge. Fig. 1 shows an edge connecting two faces. .. figure:: /MODELER/TOPOLOGICAL_OBJECTS/pictures/O.7.5.1.png :width: 12cm :align: center Fig. 1 A face edge can describe a portion of the junction of two different faces. In this case, the pointers to the face on the left and the face on the right of the edge are not null and not equal to each other. The surfaces stored in the data structures of the faces connected by the edge coincide with the surfaces stored in the data structure of the edge curve, namely: **facePlus**\→\ **surface**\→\ GetSurface() == **curve**\→\ curveOne.suface and **faceMinus**\→\ **surface**\→\ GetSurface() == **curve**\→\ curveTwo.suface or **facePlus**\→\ **surface**\→\ GetSurface() == **curve**\→\ curveTwo.suface and **faceMinus**\→\ **surface**\→\ GetSurface() == **curve**\→\ curveOne.suface. For a face of a surface that is cyclically closed in one or both parameters, there are boundary segments where the face joins to itself. Such an edge is a seam. In this case, the pointers to the face on the left and the face on the right of the edge are equal to each other, see Fig. 2: .. figure:: /MODELER/TOPOLOGICAL_OBJECTS/pictures/O.7.5.2.png :width: 12cm :align: center Fig. 2 A face edge can describe a portion of a face border. Such an edge is a border edge. In this case, the pointer to the face on the left or the face on the right of the edge is null, see Fig. 3. .. figure:: /MODELER/TOPOLOGICAL_OBJECTS/pictures/O.7.5.3.png :width: 12cm :align: center Fig. 3 An edge with zero length is a pole edge and describes a face pole. A pole edge is not a border edge, because the face has no border at the pole edge. As a rule, a pole edge is located at special points of the face surface. In the parametric domain of the face surface, a certain curve corresponds to the pole segment. The pointers to the start and end vertex of a pole edge are equal. A pole edge is shown in Fig. 4: .. figure:: /MODELER/TOPOLOGICAL_OBJECTS/pictures/O.7.5.4.png :width: 12cm :align: center Fig. 4 For a pole edge, the pointer to the face on the left or the face on the right of the edge is null. The intersection curve of the pole edge has the following data: **curve**\→\ curveOne.suface == **curve**\→\ curveTwo.suface, and segment **curve**\→\ curveOne.curve is a duplicate of segment **curve**\→\ curveTwo.curve. A face edge may be named and may have attributes. The name can be used to identify the edge; attributes can carry additional information about the face edge, for example, color, style, origin, and so on. A face edge is used for solid and hybrid modeling.