user: Show practical ways to work with Selection Modes in a Blender add-on or script – include code.

assistant: In *Edit Mode* there are three different selection modes.
You can enter the different modes by selecting one of the three buttons in the header.

[image reference removed]

Edit Mode selection buttons from right to left: Vertex, Edge, Face.

Vertex
:   In this mode vertices are shown as points.
    Selected vertices are displayed in orange, unselected vertices in black,
    and the active or last selected vertex in white.

Edge
:   In this mode the vertices are not shown.
    Instead the selected edges are displayed in orange,
    unselected edges black, and the active or last selected edge in white.

Face
:   In this mode the faces are displayed with a selection point in the middle which is used for selecting a face.
    Selected faces and their selection point are displayed in orange,
    unselected faces are displayed in black, and the active or last selected face is highlighted in white.

When using these buttons, you can make use of modifier keys, see: [Switching Select Mode](#switching-select-mode).

Almost all tools are available in all three mesh selection modes.
So you can *Rotate*, *Scale*, *Extrude*, etc. in all modes.
Of course rotating and scaling a *single* vertex will not do anything useful
(*without* setting the pivot point to another location), so some tools
are more or less applicable in some modes.

See Fig. [Selection modes.](#fig-mesh-select-intro-selection-modes) for examples of the different modes.

### Multiple Selection Modes

By holding `Shift`-`LMB` when selecting a selection mode,
you can enable multiple *Selection Modes* at once.
This allows you to quickly select vertices, edges, or faces,
without first having to switch mode.

Selection modes.

|  |  |
| --- | --- |
| <../../../_images/modeling_meshes_selecting_introduction_vertex-mode-example.png>   Vertex mode example. | <../../../_images/modeling_meshes_selecting_introduction_edge-mode-example.png>   Edge mode example. |
| <../../../_images/modeling_meshes_selecting_introduction_face-mode-example.png>   Face mode example. | <../../../_images/modeling_meshes_selecting_introduction_mixed-mode-example.png>   Mixed mode example. |

### Switching Select Mode

When switching modes in an “ascendant” way (i.e. from simpler to more complex),
from *Vertices* to *Edges* and from *Edges* to *Faces*,
the selected parts will still be selected if they form a complete element in the new mode.

For example, if all four edges in a face are selected,
switching from *Edges* mode to *Faces* mode will keep the face selected.
All selected parts that do not form a complete set in the new mode will be unselected.

|  |  |
| --- | --- |
| <../../../_images/modeling_meshes_selecting_introduction_edge-mode-example.png>   Edge mode, the initial selection. | <../../../_images/modeling_meshes_selecting_introduction_face-mode-switched-from-edge.png>   Switching to Face mode. |

Hence, switching in a “descendant” way (i.e. from more complex to simpler),
all elements defining the “high-level” element (like a face) will be selected
(the four vertices or edges of a quadrangle, for example).

#### Expand/Contract Selection

By holding `Ctrl` when selecting a higher selection mode,
all elements touching the current selection will be added,
even if the selection does not form a complete higher element.
Or contracting the selection when switching to a lower mode.

|  |  |
| --- | --- |
| <../../../_images/modeling_meshes_selecting_introduction_vertex-mode-example.png>   Vertex mode, the initial selection. | <../../../_images/modeling_meshes_selecting_introduction_edge-mode-expanding-from-vertex.png>   Expanding to Edge mode. |