Blender V5.0
bmesh_py_types.cc File Reference
#include "BLI_math_geom.h"
#include "BLI_math_matrix.h"
#include "BLI_math_vector.h"
#include "BLI_sort.h"
#include "BLI_string_utils.hh"
#include "DNA_material_types.h"
#include "DNA_mesh_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BKE_customdata.hh"
#include "BKE_global.hh"
#include "BKE_lib_id.hh"
#include "BKE_mesh.h"
#include "BKE_mesh_runtime.hh"
#include "BKE_mesh_types.hh"
#include "BKE_object.hh"
#include "DEG_depsgraph.hh"
#include "DEG_depsgraph_query.hh"
#include "bmesh.hh"
#include <Python.h>
#include "../generic/python_compat.hh"
#include "../mathutils/mathutils.hh"
#include "../generic/py_capi_utils.hh"
#include "../generic/python_utildefines.hh"
#include "bmesh_py_types.hh"
#include "bmesh_py_types_customdata.hh"
#include "bmesh_py_types_meshdata.hh"
#include "bmesh_py_types_select.hh"

Go to the source code of this file.

Macros

#define BPY_BM_HTYPE_NOLOOP   "'VERT', 'EDGE', 'FACE'"
#define BPY_BM_HFLAG_ALL_STR   "'SELECT', 'HIDE', 'SEAM', 'SMOOTH', 'TAG'"

Functions

static void bm_dealloc_editmode_warn (BPy_BMesh *self)
 PyDoc_STRVAR (bpy_bm_elem_select_doc, "Selected state of this element.\n" "\n" ":type: bool\n")
 PyDoc_STRVAR (bpy_bm_elem_hide_doc, "Hidden state of this element.\n" "\n" ":type: bool\n")
 PyDoc_STRVAR (bpy_bm_elem_tag_doc, "Generic attribute scripts can use for own logic\n" "\n" ":type: bool\n")
 PyDoc_STRVAR (bpy_bm_elem_smooth_doc, "Smooth state of this element.\n" "\n" ":type: bool\n")
 PyDoc_STRVAR (bpy_bm_elem_seam_doc, "Seam for UV unwrapping.\n" "\n" ":type: bool\n")
 PyDoc_STRVAR (bpy_bm_elem_uv_select_doc, "UV selected state of this element.\n" "\n" ":type: bool\n")
static PyObject * bpy_bm_elem_hflag_get (BPy_BMElem *self, void *flag)
static int bpy_bm_elem_hflag_set (BPy_BMElem *self, PyObject *value, void *flag)
 PyDoc_STRVAR (bpy_bm_elem_index_doc, "Index of this element.\n" "\n" ":type: int\n" "\n" ".. note::\n" "\n" " This value is not necessarily valid, while editing the mesh it can become *dirty*.\n" "\n" " It's also possible to assign any number to this attribute for a scripts internal logic.\n" "\n" " To ensure the value is up to date - see :class:`bmesh.types.BMElemSeq.index_update`.\n")
static PyObject * bpy_bm_elem_index_get (BPy_BMElem *self, void *)
static int bpy_bm_elem_index_set (BPy_BMElem *self, PyObject *value, void *)
 PyDoc_STRVAR (bpy_bmvertseq_doc, "This meshes vert sequence (read-only).\n" "\n" ":type: :class:`bmesh.types.BMVertSeq`\n")
static PyObject * bpy_bmvertseq_get (BPy_BMesh *self, void *)
 PyDoc_STRVAR (bpy_bmedgeseq_doc, "This meshes edge sequence (read-only).\n" "\n" ":type: :class:`bmesh.types.BMEdgeSeq`\n")
static PyObject * bpy_bmedgeseq_get (BPy_BMesh *self, void *)
 PyDoc_STRVAR (bpy_bmfaceseq_doc, "This meshes face sequence (read-only).\n" "\n" ":type: :class:`bmesh.types.BMFaceSeq`\n")
static PyObject * bpy_bmfaceseq_get (BPy_BMesh *self, void *)
 PyDoc_STRVAR (bpy_bmloopseq_doc, "This meshes loops (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLoopSeq`\n" "\n" ".. note::\n" "\n" " Loops must be accessed via faces, this is only exposed for layer access.\n")
static PyObject * bpy_bmloopseq_get (BPy_BMesh *self, void *)
 PyDoc_STRVAR (bpy_bmvert_link_edges_doc, "Edges connected to this vertex (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMEdge`\n")
 PyDoc_STRVAR (bpy_bmvert_link_faces_doc, "Faces connected to this vertex (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMFace`\n")
 PyDoc_STRVAR (bpy_bmvert_link_loops_doc, "Loops that use this vertex (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMLoop`\n")
 PyDoc_STRVAR (bpy_bmedge_verts_doc, "Verts this edge uses (always 2), (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of " ":class:`bmesh.types.BMVert`\n")
 PyDoc_STRVAR (bpy_bmedge_link_faces_doc, "Faces connected to this edge, (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMFace`\n")
 PyDoc_STRVAR (bpy_bmedge_link_loops_doc, "Loops connected to this edge, (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMLoop`\n")
 PyDoc_STRVAR (bpy_bmface_verts_doc, "Verts of this face, (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMVert`\n")
 PyDoc_STRVAR (bpy_bmface_edges_doc, "Edges of this face, (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMEdge`\n")
 PyDoc_STRVAR (bpy_bmface_loops_doc, "Loops of this face, (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMLoop`\n")
 PyDoc_STRVAR (bpy_bmloops_link_loops_doc, "Loops connected to this loop, (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMLoop`\n")
static PyObject * bpy_bmelemseq_elem_get (BPy_BMElem *self, void *itype)
 PyDoc_STRVAR (bpy_bm_is_valid_doc, "True when this element is valid (hasn't been removed).\n" "\n" ":type: bool\n")
static PyObject * bpy_bm_is_valid_get (BPy_BMGeneric *self, void *)
 PyDoc_STRVAR (bpy_bmesh_is_wrapped_doc, "True when this mesh is owned by blender (typically the editmode BMesh).\n" "\n" ":type: bool\n")
static PyObject * bpy_bmesh_is_wrapped_get (BPy_BMesh *self, void *)
 PyDoc_STRVAR (bpy_bmesh_select_mode_doc, "The selection mode, cannot be assigned an empty set.\n" "\n" ":type: set[Literal[" BPY_BM_HTYPE_NOLOOP "]]\n")
static PyObject * bpy_bmesh_select_mode_get (BPy_BMesh *self, void *)
static int bpy_bmesh_select_mode_set (BPy_BMesh *self, PyObject *value, void *)
 PyDoc_STRVAR (bpy_bmesh_select_history_doc, "Sequence of selected items (the last is displayed as active).\n" "\n" ":type: " ":class:`bmesh.types.BMEditSelSeq`\n")
static PyObject * bpy_bmesh_select_history_get (BPy_BMesh *self, void *)
static int bpy_bmesh_select_history_set (BPy_BMesh *self, PyObject *value, void *)
 PyDoc_STRVAR (bpy_bmesh_uv_select_sync_valid_doc, "When true, the UV selection has been synchronized. " "Setting to False means the UV selection will be ignored. " "While setting to true is supported it is up to the script author to " "ensure a correct selection state before doing so.\n" ":type: " "bool\n")
static PyObject * bpy_bmesh_uv_select_sync_valid_get (BPy_BMesh *self, void *)
static int bpy_bmesh_uv_select_sync_valid_set (BPy_BMesh *self, PyObject *value, void *)
 PyDoc_STRVAR (bpy_bmvert_co_doc, "The coordinates for this vertex as a 3D, wrapped vector.\n" "\n" ":type: " ":class:`mathutils.Vector`\n")
static PyObject * bpy_bmvert_co_get (BPy_BMVert *self, void *)
static int bpy_bmvert_co_set (BPy_BMVert *self, PyObject *value, void *)
 PyDoc_STRVAR (bpy_bmvert_normal_doc, "The normal for this vertex as a 3D, wrapped vector.\n" "\n" ":type: :class:`mathutils.Vector`\n")
static PyObject * bpy_bmvert_normal_get (BPy_BMVert *self, void *)
static int bpy_bmvert_normal_set (BPy_BMVert *self, PyObject *value, void *)
 PyDoc_STRVAR (bpy_bmvert_is_manifold_doc, "True when this vertex is manifold (read-only).\n" "\n" ":type: bool\n")
static PyObject * bpy_bmvert_is_manifold_get (BPy_BMVert *self, void *)
 PyDoc_STRVAR (bpy_bmvert_is_wire_doc, "True when this vertex is not connected to any faces (read-only).\n" "\n" ":type: bool\n")
static PyObject * bpy_bmvert_is_wire_get (BPy_BMVert *self, void *)
 PyDoc_STRVAR (bpy_bmvert_is_boundary_doc, "True when this vertex is connected to boundary edges (read-only).\n" "\n" ":type: bool\n")
static PyObject * bpy_bmvert_is_boundary_get (BPy_BMVert *self, void *)
 PyDoc_STRVAR (bpy_bmedge_is_manifold_doc, "True when this edge is manifold (read-only).\n" "\n" ":type: bool\n")
static PyObject * bpy_bmedge_is_manifold_get (BPy_BMEdge *self, void *)
 PyDoc_STRVAR (bpy_bmedge_is_contiguous_doc, "True when this edge is manifold, between two faces with the same winding " "(read-only).\n" "\n" ":type: bool\n")
static PyObject * bpy_bmedge_is_contiguous_get (BPy_BMEdge *self, void *)
 PyDoc_STRVAR (bpy_bmedge_is_convex_doc, "True when this edge joins two convex faces, depends on a valid face normal (read-only).\n" "\n" ":type: bool\n")
static PyObject * bpy_bmedge_is_convex_get (BPy_BMEdge *self, void *)
 PyDoc_STRVAR (bpy_bmedge_is_wire_doc, "True when this edge is not connected to any faces (read-only).\n" "\n" ":type: bool\n")
static PyObject * bpy_bmedge_is_wire_get (BPy_BMEdge *self, void *)
 PyDoc_STRVAR (bpy_bmedge_is_boundary_doc, "True when this edge is at the boundary of a face (read-only).\n" "\n" ":type: bool\n")
static PyObject * bpy_bmedge_is_boundary_get (BPy_BMEdge *self, void *)
 PyDoc_STRVAR (bpy_bmface_normal_doc, "The normal for this face as a 3D, wrapped vector.\n" "\n" ":type: :class:`mathutils.Vector`\n")
static PyObject * bpy_bmface_normal_get (BPy_BMFace *self, void *)
static int bpy_bmface_normal_set (BPy_BMFace *self, PyObject *value, void *)
 PyDoc_STRVAR (bpy_bmface_material_index_doc, "The face's material index.\n" "\n" ":type: int\n")
static PyObject * bpy_bmface_material_index_get (BPy_BMFace *self, void *)
static int bpy_bmface_material_index_set (BPy_BMFace *self, PyObject *value, void *)
 PyDoc_STRVAR (bpy_bmloop_vert_doc, "The loop's vertex (read-only).\n" "\n" ":type: :class:`bmesh.types.BMVert`\n")
static PyObject * bpy_bmloop_vert_get (BPy_BMLoop *self, void *)
 PyDoc_STRVAR (bpy_bmloop_edge_doc, "The loop's edge (between this loop and the next), (read-only).\n" "\n" ":type: :class:`bmesh.types.BMEdge`\n")
static PyObject * bpy_bmloop_edge_get (BPy_BMLoop *self, void *)
 PyDoc_STRVAR (bpy_bmloop_face_doc, "The face this loop makes (read-only).\n" "\n" ":type: :class:`bmesh.types.BMFace`\n")
static PyObject * bpy_bmloop_face_get (BPy_BMLoop *self, void *)
 PyDoc_STRVAR (bpy_bmloop_link_loop_next_doc, "The next face corner (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLoop`\n")
static PyObject * bpy_bmloop_link_loop_next_get (BPy_BMLoop *self, void *)
 PyDoc_STRVAR (bpy_bmloop_link_loop_prev_doc, "The previous face corner (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLoop`\n")
static PyObject * bpy_bmloop_link_loop_prev_get (BPy_BMLoop *self, void *)
 PyDoc_STRVAR (bpy_bmloop_link_loop_radial_next_doc, "The next loop around the edge (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLoop`\n")
static PyObject * bpy_bmloop_link_loop_radial_next_get (BPy_BMLoop *self, void *)
 PyDoc_STRVAR (bpy_bmloop_link_loop_radial_prev_doc, "The previous loop around the edge (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLoop`\n")
static PyObject * bpy_bmloop_link_loop_radial_prev_get (BPy_BMLoop *self, void *)
 PyDoc_STRVAR (bpy_bmloop_is_convex_doc, "True when this loop is at the convex corner of a face, depends on a valid face " "normal (read-only).\n" "\n" ":type: bool\n")
static PyObject * bpy_bmloop_is_convex_get (BPy_BMLoop *self, void *)
 PyDoc_STRVAR (bpy_bmelemseq_layers_vert_doc, "custom-data layers (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLayerAccessVert`\n")
 PyDoc_STRVAR (bpy_bmelemseq_layers_edge_doc, "custom-data layers (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLayerAccessEdge`\n")
 PyDoc_STRVAR (bpy_bmelemseq_layers_face_doc, "custom-data layers (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLayerAccessFace`\n")
 PyDoc_STRVAR (bpy_bmelemseq_layers_loop_doc, "custom-data layers (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLayerAccessLoop`\n")
static PyObject * bpy_bmelemseq_layers_get (BPy_BMElemSeq *self, void *htype)
 PyDoc_STRVAR (bpy_bmfaceseq_active_doc, "active face.\n" "\n" ":type: :class:`bmesh.types.BMFace` | None\n")
static PyObject * bpy_bmfaceseq_active_get (BPy_BMElemSeq *self, void *)
static int bpy_bmfaceseq_active_set (BPy_BMElem *self, PyObject *value, void *)
 PyDoc_STRVAR (bpy_bmesh_copy_doc, ".. method:: copy()\n" "\n" " :return: A copy of this BMesh.\n" " :rtype: :class:`bmesh.types.BMesh`\n")
static PyObject * bpy_bmesh_copy (BPy_BMesh *self)
 PyDoc_STRVAR (bpy_bmesh_clear_doc, ".. method:: clear()\n" "\n" " Clear all mesh data.\n")
static PyObject * bpy_bmesh_clear (BPy_BMesh *self)
 PyDoc_STRVAR (bpy_bmesh_free_doc, ".. method:: free()\n" "\n" " Explicitly free the BMesh data from memory, causing exceptions on further access.\n" "\n" " .. note::\n" "\n" " The BMesh is freed automatically, typically when the script finishes executing.\n" " However in some cases its hard to predict when this will be and its useful to\n" " explicitly free the data.\n")
static PyObject * bpy_bmesh_free (BPy_BMesh *self)
 PyDoc_STRVAR (bpy_bmesh_to_mesh_doc, ".. method:: to_mesh(mesh)\n" "\n" " Writes this BMesh data into an existing Mesh data-block.\n" "\n" " :arg mesh: The mesh data to write into.\n" " :type mesh: :class:`bpy.types.Mesh`\n")
static PyObject * bpy_bmesh_to_mesh (BPy_BMesh *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmesh_from_object_doc, ".. method:: from_object(object, depsgraph, *, " "cage=False, face_normals=True, vertex_normals=True)\n" "\n" " Initialize this bmesh from existing object data-block (only meshes are currently " "supported).\n" "\n" " :arg object: The object data to load.\n" " :type object: :class:`bpy.types.Object`\n" " :type depsgraph: :class:`bpy.types.Depsgraph`\n" " :arg cage: Get the mesh as a deformed cage.\n" " :type cage: bool\n" " :arg face_normals: Calculate face normals.\n" " :type face_normals: bool\n" " :arg vertex_normals: Calculate vertex normals.\n" " :type vertex_normals: bool\n")
static PyObject * bpy_bmesh_from_object (BPy_BMesh *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (bpy_bmesh_from_mesh_doc, ".. method:: from_mesh(mesh, *, " "face_normals=True, vertex_normals=True, use_shape_key=False, shape_key_index=0)\n" "\n" " Initialize this bmesh from existing mesh data-block.\n" "\n" " :arg mesh: The mesh data to load.\n" " :type mesh: :class:`bpy.types.Mesh`\n" " :type face_normals: bool\n" " :type vertex_normals: bool\n" " :arg use_shape_key: Use the locations from a shape key.\n" " :type use_shape_key: bool\n" " :arg shape_key_index: The shape key index to use.\n" " :type shape_key_index: int\n" "\n" " .. note::\n" "\n" " Multiple calls can be used to join multiple meshes.\n" "\n" " Custom-data layers are only copied from ``mesh`` on initialization.\n" " Further calls will copy custom-data to matching layers, layers missing on the target " "mesh won't be added.\n")
static PyObject * bpy_bmesh_from_mesh (BPy_BMesh *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (bpy_bmesh_select_flush_mode_doc, ".. method:: select_flush_mode(*, flush_down=False)\n" "\n" " Flush selection based on the current mode current " ":class:`bmesh.types.BMesh.select_mode`.\n" "\n" " :arg flush_down: Flush selection down from faces to edges & verts or from edges to verts. " "This option is ignored when vertex selection mode is enabled.\n" " :type flush_down: bool\n")
static PyObject * bpy_bmesh_select_flush_mode (BPy_BMesh *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (bpy_bmesh_select_flush_doc, ".. method:: select_flush(select)\n" "\n" " Flush selection from vertices, independent of the current selection mode.\n" "\n" " :arg select: flush selection or de-selected elements.\n" " :type select: bool\n")
static PyObject * bpy_bmesh_select_flush (BPy_BMesh *self, PyObject *value)
 PyDoc_STRVAR (bpy_bmesh_normal_update_doc, ".. method:: normal_update()\n" "\n" " Update normals of mesh faces and verts.\n" "\n" " .. note::\n" "\n" " The normal of any vertex where :attr:`is_wire` is True will be a zero vector.\n")
static PyObject * bpy_bmesh_normal_update (BPy_BMesh *self)
 PyDoc_STRVAR (bpy_bmesh_transform_doc, ".. method:: transform(matrix, *, filter=None)\n" "\n" " Transform the mesh (optionally filtering flagged data only).\n" "\n" " :arg matrix: 4x4x transform matrix.\n" " :type matrix: :class:`mathutils.Matrix`\n" " :arg filter: Flag to filter vertices." ".\n" " :type filter: set[Literal[" BPY_BM_HFLAG_ALL_STR "]]\n")
static PyObject * bpy_bmesh_transform (BPy_BMElem *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (bpy_bmesh_calc_volume_doc, ".. method:: calc_volume(*, signed=False)\n" "\n" " Calculate mesh volume based on face normals.\n" "\n" " :arg signed: when signed is true, negative values may be returned.\n" " :type signed: bool\n" " :return: The volume of the mesh.\n" " :rtype: float\n")
static PyObject * bpy_bmesh_calc_volume (BPy_BMElem *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (bpy_bmesh_calc_loop_triangles_doc, ".. method:: calc_loop_triangles()\n" "\n" " Calculate triangle tessellation from quads/ngons.\n" "\n" " :return: The triangulated faces.\n" " :rtype: list[tuple[:class:`bmesh.types.BMLoop`, " ":class:`bmesh.types.BMLoop`, " ":class:`bmesh.types.BMLoop`]]\n")
static PyObject * bpy_bmesh_calc_loop_triangles (BPy_BMElem *self)
 PyDoc_STRVAR (bpy_bm_elem_select_set_doc, ".. method:: select_set(select)\n" "\n" " Set the selection.\n" " This is different from the *select* attribute because it updates the selection " "state of associated geometry.\n" "\n" " :arg select: Select or de-select.\n" " :type select: bool\n" "\n" " .. note::\n" "\n" " This only flushes down, so selecting a face will select all its " "vertices but de-selecting a vertex " " won't de-select all the faces that use it, before finishing with a mesh " "typically flushing is still needed.\n")
static PyObject * bpy_bm_elem_select_set (BPy_BMElem *self, PyObject *value)
 PyDoc_STRVAR (bpy_bm_elem_hide_set_doc, ".. method:: hide_set(hide)\n" "\n" " Set the hide state.\n" " This is different from the *hide* attribute because it updates the selection and " "hide state of associated geometry.\n" "\n" " :arg hide: Hidden or visible.\n" " :type hide: bool\n")
static PyObject * bpy_bm_elem_hide_set (BPy_BMElem *self, PyObject *value)
 PyDoc_STRVAR (bpy_bm_elem_copy_from_doc, ".. method:: copy_from(other)\n" "\n" " Copy values from another element of matching type.\n")
static PyObject * bpy_bm_elem_copy_from (BPy_BMElem *self, BPy_BMElem *value)
 PyDoc_STRVAR (bpy_bmvert_copy_from_vert_interp_doc, ".. method:: copy_from_vert_interp(vert_pair, fac)\n" "\n" " Interpolate the customdata from a vert between 2 other verts.\n" "\n" " :arg vert_pair: The verts between which to interpolate data from.\n" " :type vert_pair: Sequence[:class:`bmesh.types.BMVert`]\n" " :type fac: float\n")
static PyObject * bpy_bmvert_copy_from_vert_interp (BPy_BMVert *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmvert_copy_from_face_interp_doc, ".. method:: copy_from_face_interp(face)\n" "\n" " Interpolate the customdata from a face onto this loop (the loops vert should " "overlap the face).\n" "\n" " :arg face: The face to interpolate data from.\n" " :type face: :class:`bmesh.types.BMFace`\n")
static PyObject * bpy_bmvert_copy_from_face_interp (BPy_BMVert *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmvert_calc_edge_angle_doc, ".. method:: calc_edge_angle(fallback=None)\n" "\n" " Return the angle between this vert's two connected edges.\n" "\n" " :arg fallback: return this when the vert doesn't have 2 edges\n" " (instead of raising a :exc:`ValueError`).\n" " :type fallback: Any\n" " :return: Angle between edges in radians.\n" " :rtype: float\n")
static PyObject * bpy_bmvert_calc_edge_angle (BPy_BMVert *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmvert_calc_shell_factor_doc, ".. method:: calc_shell_factor()\n" "\n" " Return a multiplier calculated based on the sharpness of the vertex.\n" " Where a flat surface gives 1.0, and higher values sharper edges.\n" " This is used to maintain shell thickness when offsetting verts along their normals.\n" "\n" " :return: offset multiplier\n" " :rtype: float\n")
static PyObject * bpy_bmvert_calc_shell_factor (BPy_BMVert *self)
 PyDoc_STRVAR (bpy_bmvert_normal_update_doc, ".. method:: normal_update()\n" "\n" " Update vertex normal.\n" " This does not update the normals of adjoining faces.\n" "\n" " .. note::\n" "\n" " The vertex normal will be a zero vector if vertex :attr:`is_wire` is True.\n")
static PyObject * bpy_bmvert_normal_update (BPy_BMVert *self)
 PyDoc_STRVAR (bpy_bmedge_calc_length_doc, ".. method:: calc_length()\n" "\n" " :return: The length between both verts.\n" " :rtype: float\n")
static PyObject * bpy_bmedge_calc_length (BPy_BMEdge *self)
 PyDoc_STRVAR (bpy_bmedge_calc_face_angle_doc, ".. method:: calc_face_angle(fallback=None)\n" "\n" " :arg fallback: return this when the edge doesn't have 2 faces\n" " (instead of raising a :exc:`ValueError`).\n" " :type fallback: Any\n" " :return: The angle between 2 connected faces in radians.\n" " :rtype: float\n")
static PyObject * bpy_bmedge_calc_face_angle (BPy_BMEdge *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmedge_calc_face_angle_signed_doc, ".. method:: calc_face_angle_signed(fallback=None)\n" "\n" " :arg fallback: return this when the edge doesn't have 2 faces\n" " (instead of raising a :exc:`ValueError`).\n" " :type fallback: Any\n" " :return: The angle between 2 connected faces in radians (negative for concave join).\n" " :rtype: float\n")
static PyObject * bpy_bmedge_calc_face_angle_signed (BPy_BMEdge *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmedge_calc_tangent_doc, ".. method:: calc_tangent(loop)\n" "\n" " Return the tangent at this edge relative to a face (pointing inward into the face).\n" " This uses the face normal for calculation.\n" "\n" " :arg loop: The loop used for tangent calculation.\n" " :type loop: :class:`bmesh.types.BMLoop`\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n")
static PyObject * bpy_bmedge_calc_tangent (BPy_BMEdge *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmedge_other_vert_doc, ".. method:: other_vert(vert)\n" "\n" " Return the other vertex on this edge or None if the vertex is not used by this edge.\n" "\n" " :arg vert: a vert in this edge.\n" " :type vert: :class:`bmesh.types.BMVert`\n" " :return: The edges other vert.\n" " :rtype: :class:`bmesh.types.BMVert` | None\n")
static PyObject * bpy_bmedge_other_vert (BPy_BMEdge *self, BPy_BMVert *value)
 PyDoc_STRVAR (bpy_bmedge_normal_update_doc, ".. method:: normal_update()\n" "\n" " Update normals of all connected faces and the edge verts.\n" "\n" " .. note::\n" "\n" " The normal of edge vertex will be a zero vector if vertex :attr:`is_wire` is True.\n")
static PyObject * bpy_bmedge_normal_update (BPy_BMEdge *self)
 PyDoc_STRVAR (bpy_bmface_copy_from_face_interp_doc, ".. method:: copy_from_face_interp(face, vert=True)\n" "\n" " Interpolate the customdata from another face onto this one (faces should overlap).\n" "\n" " :arg face: The face to interpolate data from.\n" " :type face: :class:`bmesh.types.BMFace`\n" " :arg vert: When True, also copy vertex data.\n" " :type vert: bool\n")
static PyObject * bpy_bmface_copy_from_face_interp (BPy_BMFace *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmface_copy_doc, ".. method:: copy(*, verts=True, edges=True)\n" "\n" " Make a copy of this face.\n" "\n" " :arg verts: When set, the faces verts will be duplicated too.\n" " :type verts: bool\n" " :arg edges: When set, the faces edges will be duplicated too.\n" " :type edges: bool\n" " :return: The newly created face.\n" " :rtype: :class:`bmesh.types.BMFace`\n")
static PyObject * bpy_bmface_copy (BPy_BMFace *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (bpy_bmface_uv_select_set_doc, ".. method:: uv_select_set(select)\n" "\n" " Select the face.\n" "\n" " :arg select: Select or de-select.\n" " :type select: bool\n" "\n" " .. note::\n" "\n" " Currently this only flushes down, so selecting a face will select all its " "vertices but de-selecting a vertex " " won't de-select all the faces that use it, before finishing with a mesh " "typically flushing is still needed.\n")
static PyObject * bpy_bmface_uv_select_set (BPy_BMFace *self, PyObject *value)
 PyDoc_STRVAR (bpy_bmface_calc_area_doc, ".. method:: calc_area()\n" "\n" " Return the area of the face.\n" "\n" " :return: Return the area of the face.\n" " :rtype: float\n")
static PyObject * bpy_bmface_calc_area (BPy_BMFace *self)
 PyDoc_STRVAR (bpy_bmface_calc_perimeter_doc, ".. method:: calc_perimeter()\n" "\n" " Return the perimeter of the face.\n" "\n" " :return: Return the perimeter of the face.\n" " :rtype: float\n")
static PyObject * bpy_bmface_calc_perimeter (BPy_BMFace *self)
 PyDoc_STRVAR (bpy_bmface_calc_tangent_edge_doc, ".. method:: calc_tangent_edge()\n" "\n" " Return face tangent based on longest edge.\n" "\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n")
static PyObject * bpy_bmface_calc_tangent_edge (BPy_BMFace *self)
 PyDoc_STRVAR (bpy_bmface_calc_tangent_edge_pair_doc, ".. method:: calc_tangent_edge_pair()\n" "\n" " Return face tangent based on the two longest disconnected edges.\n" "\n" " - Tris: Use the edge pair with the most similar lengths.\n" " - Quads: Use the longest edge pair.\n" " - NGons: Use the two longest disconnected edges.\n" "\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n")
static PyObject * bpy_bmface_calc_tangent_edge_pair (BPy_BMFace *self)
 PyDoc_STRVAR (bpy_bmface_calc_tangent_edge_diagonal_doc, ".. method:: calc_tangent_edge_diagonal()\n" "\n" " Return face tangent based on the edge farthest from any vertex.\n" "\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n")
static PyObject * bpy_bmface_calc_tangent_edge_diagonal (BPy_BMFace *self)
 PyDoc_STRVAR (bpy_bmface_calc_tangent_vert_diagonal_doc, ".. method:: calc_tangent_vert_diagonal()\n" "\n" " Return face tangent based on the two most distant vertices.\n" "\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n")
static PyObject * bpy_bmface_calc_tangent_vert_diagonal (BPy_BMFace *self)
 PyDoc_STRVAR (bpy_bmface_calc_center_median_doc, ".. method:: calc_center_median()\n" "\n" " Return median center of the face.\n" "\n" " :return: a 3D vector.\n" " :rtype: :class:`mathutils.Vector`\n")
static PyObject * bpy_bmface_calc_center_mean (BPy_BMFace *self)
 PyDoc_STRVAR (bpy_bmface_calc_center_median_weighted_doc, ".. method:: calc_center_median_weighted()\n" "\n" " Return median center of the face weighted by edge lengths.\n" "\n" " :return: a 3D vector.\n" " :rtype: :class:`mathutils.Vector`\n")
static PyObject * bpy_bmface_calc_center_median_weighted (BPy_BMFace *self)
 PyDoc_STRVAR (bpy_bmface_calc_center_bounds_doc, ".. method:: calc_center_bounds()\n" "\n" " Return bounds center of the face.\n" "\n" " :return: a 3D vector.\n" " :rtype: :class:`mathutils.Vector`\n")
static PyObject * bpy_bmface_calc_center_bounds (BPy_BMFace *self)
 PyDoc_STRVAR (bpy_bmface_normal_update_doc, ".. method:: normal_update()\n" "\n" " Update face normal based on the positions of the face verts.\n" " This does not update the normals of face verts.\n")
static PyObject * bpy_bmface_normal_update (BPy_BMFace *self)
 PyDoc_STRVAR (bpy_bmface_normal_flip_doc, ".. method:: normal_flip()\n" "\n" " Reverses winding of a face, which flips its normal.\n")
static PyObject * bpy_bmface_normal_flip (BPy_BMFace *self)
 PyDoc_STRVAR (bpy_bmloop_copy_from_face_interp_doc, ".. method:: copy_from_face_interp(face, vert=True, multires=True)\n" "\n" " Interpolate the customdata from a face onto this loop (the loops vert should " "overlap the face).\n" "\n" " :arg face: The face to interpolate data from.\n" " :type face: :class:`bmesh.types.BMFace`\n" " :arg vert: When enabled, interpolate the loops vertex data (optional).\n" " :type vert: bool\n" " :arg multires: When enabled, interpolate the loops multires data (optional).\n" " :type multires: bool\n")
static PyObject * bpy_bmloop_copy_from_face_interp (BPy_BMLoop *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmloop_uv_select_vert_set_doc, ".. method:: uv_select_vert_set(select)\n" "\n" " Select the UV vertex.\n" "\n" " :arg select: Select or de-select.\n" " :type select: bool\n" "\n" " .. note::\n" "\n" " Currently this only flushes down, so selecting an edge will select all its " "vertices but de-selecting a vertex " " won't de-select the edges & faces that use it, before finishing with a mesh " "typically flushing with :class:`bmesh.types.BMesh.uv_select_flush_mode` is still needed.\n")
static PyObject * bpy_bmloop_uv_select_vert_set (BPy_BMLoop *self, PyObject *value)
 PyDoc_STRVAR (bpy_bmloop_uv_select_edge_set_doc, ".. method:: uv_select_edge_set(select)\n" "\n" " Set the UV edge selection state.\n" "\n" " :arg select: Select or de-select.\n" " :type select: bool\n" "\n" " .. note::\n" "\n" " This only flushes down, so selecting an edge will select all its " "vertices but de-selecting a vertex " "won't de-select the faces that use it, before finishing with a mesh " "typically flushing with :class:`bmesh.types.BMesh.uv_select_flush_mode` is still needed.\n")
static PyObject * bpy_bmloop_uv_select_edge_set (BPy_BMLoop *self, PyObject *value)
 PyDoc_STRVAR (bpy_bmloop_calc_angle_doc, ".. method:: calc_angle()\n" "\n" " Return the angle at this loops corner of the face.\n" " This is calculated so sharper corners give lower angles.\n" "\n" " :return: The angle in radians.\n" " :rtype: float\n")
static PyObject * bpy_bmloop_calc_angle (BPy_BMLoop *self)
 PyDoc_STRVAR (bpy_bmloop_calc_normal_doc, ".. method:: calc_normal()\n" "\n" " Return normal at this loops corner of the face.\n" " Falls back to the face normal for straight lines.\n" "\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n")
static PyObject * bpy_bmloop_calc_normal (BPy_BMLoop *self)
 PyDoc_STRVAR (bpy_bmloop_calc_tangent_doc, ".. method:: calc_tangent()\n" "\n" " Return the tangent at this loops corner of the face (pointing inward into the face).\n" " Falls back to the face normal for straight lines.\n" "\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n")
static PyObject * bpy_bmloop_calc_tangent (BPy_BMLoop *self)
 PyDoc_STRVAR (bpy_bmvertseq_new_doc, ".. method:: new(co=(0.0, 0.0, 0.0), example=None)\n" "\n" " Create a new vertex.\n" "\n" " :arg co: The initial location of the vertex (optional argument).\n" " :type co: float triplet\n" " :arg example: Existing vert to initialize settings.\n" " :type example: :class:`bmesh.types.BMVert`\n" " :return: The newly created vertex.\n" " :rtype: :class:`bmesh.types.BMVert`\n")
static PyObject * bpy_bmvertseq_new (BPy_BMElemSeq *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmedgeseq_new_doc, ".. method:: new(verts, example=None)\n" "\n" " Create a new edge from a given pair of verts.\n" "\n" " :arg verts: Vertex pair.\n" " :type verts: Sequence[:class:`bmesh.types.BMVert`]\n" " :arg example: Existing edge to initialize settings (optional argument).\n" " :type example: :class:`bmesh.types.BMEdge`\n" " :return: The newly created edge.\n" " :rtype: :class:`bmesh.types.BMEdge`\n")
static PyObject * bpy_bmedgeseq_new (BPy_BMElemSeq *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmfaceseq_new_doc, ".. method:: new(verts, example=None)\n" "\n" " Create a new face from a given set of verts.\n" "\n" " :arg verts: Sequence of 3 or more verts.\n" " :type verts: Sequence[:class:`bmesh.types.BMVert`]\n" " :arg example: Existing face to initialize settings (optional argument).\n" " :type example: :class:`bmesh.types.BMFace`\n" " :return: The newly created face.\n" " :rtype: :class:`bmesh.types.BMFace`\n")
static PyObject * bpy_bmfaceseq_new (BPy_BMElemSeq *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmvertseq_remove_doc, ".. method:: remove(vert)\n" "\n" " Remove a vert.\n" "\n" " :type vert: :class:`bmesh.types.BMVert`\n")
static PyObject * bpy_bmvertseq_remove (BPy_BMElemSeq *self, BPy_BMVert *value)
 PyDoc_STRVAR (bpy_bmedgeseq_remove_doc, ".. method:: remove(edge)\n" "\n" " Remove an edge.\n" "\n" " :type edge: :class:`bmesh.types.BMEdge`\n")
static PyObject * bpy_bmedgeseq_remove (BPy_BMElemSeq *self, BPy_BMEdge *value)
 PyDoc_STRVAR (bpy_bmfaceseq_remove_doc, ".. method:: remove(face)\n" "\n" " Remove a face.\n" "\n" " :type face: :class:`bmesh.types.BMFace`\n")
static PyObject * bpy_bmfaceseq_remove (BPy_BMElemSeq *self, BPy_BMFace *value)
 PyDoc_STRVAR (bpy_bmedgeseq_get__method_doc, ".. method:: get(verts, fallback=None)\n" "\n" " Return an edge which uses the **verts** passed.\n" "\n" " :arg verts: Sequence of verts.\n" " :type verts: Sequence[:class:`bmesh.types.BMVert`]\n" " :arg fallback: Return this value if nothing is found.\n" " :return: The edge found or None\n" " :rtype: :class:`bmesh.types.BMEdge`\n")
static PyObject * bpy_bmedgeseq_get__method (BPy_BMElemSeq *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmfaceseq_get__method_doc, ".. method:: get(verts, fallback=None)\n" "\n" " Return a face which uses the **verts** passed.\n" "\n" " :arg verts: Sequence of verts.\n" " :type verts: Sequence[:class:`bmesh.types.BMVert`]\n" " :arg fallback: Return this value if nothing is found.\n" " :return: The face found or None\n" " :rtype: :class:`bmesh.types.BMFace`\n")
static PyObject * bpy_bmfaceseq_get__method (BPy_BMElemSeq *self, PyObject *args)
 PyDoc_STRVAR (bpy_bmelemseq_index_update_doc, ".. method:: index_update()\n" "\n" " Initialize the index values of this sequence.\n" "\n" " This is the equivalent of looping over all elements and assigning the index values.\n" "\n" " .. code-block:: python\n" "\n" " for index, ele in enumerate(sequence):\n" " ele.index = index\n" "\n" " .. note::\n" "\n" " Running this on sequences besides " ":class:`bmesh.types.BMesh.verts`, " ":class:`bmesh.types.BMesh.edges`, " ":class:`bmesh.types.BMesh.faces`\n" " works but won't result in each element having a valid index, instead its order in the " "sequence will be set.\n")
static PyObject * bpy_bmelemseq_index_update (BPy_BMElemSeq *self)
 PyDoc_STRVAR (bpy_bmelemseq_ensure_lookup_table_doc, ".. method:: ensure_lookup_table()\n" "\n" " Ensure internal data needed for int subscription is initialized with " "verts/edges/faces, eg ``bm.verts[index]``.\n" "\n" " This needs to be called again after adding/removing data in this sequence.\n")
static PyObject * bpy_bmelemseq_ensure_lookup_table (BPy_BMElemSeq *self)
 PyDoc_STRVAR (bpy_bmelemseq_sort_doc, ".. method:: sort(*, key=None, reverse=False)\n" "\n" " Sort the elements of this sequence, using an optional custom sort key.\n" " Indices of elements are not changed, :class:`bmesh.types.BMElemSeq.index_update` " "can be used for that.\n" "\n" " :arg key: The key that sets the ordering of the elements.\n" " :type key: Callable[[" ":class:`bmesh.types.BMVert` | " ":class:`bmesh.types.BMEdge` | " ":class:`bmesh.types.BMFace`], int] | None\n" " :arg reverse: Reverse the order of the elements\n" " :type reverse: bool\n" "\n" " .. note::\n" "\n" " When the 'key' argument is not provided, the elements are reordered following their " "current index value.\n" " In particular this can be used by setting indices manually before calling this " "method.\n" "\n" " .. warning::\n" "\n" " Existing references to the N'th element, will continue to point the data at that " "index.\n")
static int bpy_bmelemseq_sort_cmp_by_keys_ascending (const void *index1_v, const void *index2_v, void *keys_v)
static int bpy_bmelemseq_sort_cmp_by_keys_descending (const void *index1_v, const void *index2_v, void *keys_v)
static PyObject * bpy_bmelemseq_sort (BPy_BMElemSeq *self, PyObject *args, PyObject *kw)
static PyTypeObject * bpy_bm_itype_as_pytype (const char itype)
static Py_ssize_t bpy_bmelemseq_length (BPy_BMElemSeq *self)
static PyObject * bpy_bmelemseq_subscript_int (BPy_BMElemSeq *self, Py_ssize_t keynum)
static PyObject * bpy_bmelemseq_subscript_slice (BPy_BMElemSeq *self, Py_ssize_t start, Py_ssize_t stop)
static PyObject * bpy_bmelemseq_subscript (BPy_BMElemSeq *self, PyObject *key)
static int bpy_bmelemseq_contains (BPy_BMElemSeq *self, PyObject *value)
static PyObject * bpy_bmelem_subscript (BPy_BMElem *self, BPy_BMLayerItem *key)
static int bpy_bmelem_ass_subscript (BPy_BMElem *self, BPy_BMLayerItem *key, PyObject *value)
static PyObject * bpy_bmelemseq_iter (BPy_BMElemSeq *self)
static PyObject * bpy_bmiter_next (BPy_BMIter *self)
static void bpy_bmesh_dealloc (BPy_BMesh *self)
static void bpy_bmvert_dealloc (BPy_BMElem *self)
static void bpy_bmedge_dealloc (BPy_BMElem *self)
static void bpy_bmface_dealloc (BPy_BMElem *self)
static void bpy_bmloop_dealloc (BPy_BMElem *self)
static void bpy_bmelemseq_dealloc (BPy_BMElemSeq *self)
static Py_hash_t bpy_bm_elem_hash (PyObject *self)
static Py_hash_t bpy_bm_hash (PyObject *self)
 PyDoc_STRVAR (bpy_bmesh_doc, "The BMesh data structure\n")
 PyDoc_STRVAR (bpy_bmvert_doc, "The BMesh vertex type\n")
 PyDoc_STRVAR (bpy_bmedge_doc, "The BMesh edge connecting 2 verts\n")
 PyDoc_STRVAR (bpy_bmface_doc, "The BMesh face with 3 or more sides\n")
 PyDoc_STRVAR (bpy_bmloop_doc, "This is normally accessed from :class:`bmesh.types.BMFace.loops` where each face loop " "represents a corner of the face.\n")
 PyDoc_STRVAR (bpy_bmelemseq_doc, "General sequence type used for accessing any sequence of\n" ":class:`bmesh.types.BMVert`, " ":class:`bmesh.types.BMEdge`, " ":class:`bmesh.types.BMFace`, " ":class:`bmesh.types.BMLoop`.\n" "\n" "When accessed via " ":class:`bmesh.types.BMesh.verts`, " ":class:`bmesh.types.BMesh.edges`, " ":class:`bmesh.types.BMesh.faces`\n" "there are also functions to create/remove items.\n")
 PyDoc_STRVAR (bpy_bmiter_doc, "Internal BMesh type for looping over verts/faces/edges,\n" "used for iterating over :class:`bmesh.types.BMElemSeq` types.\n")
static PyObject * bpy_bmesh_repr (BPy_BMesh *self)
static PyObject * bpy_bmvert_repr (BPy_BMVert *self)
static PyObject * bpy_bmedge_repr (BPy_BMEdge *self)
static PyObject * bpy_bmface_repr (BPy_BMFace *self)
static PyObject * bpy_bmloop_repr (BPy_BMLoop *self)
void BPy_BM_init_types ()
 PyDoc_STRVAR (BPy_BM_types_module_doc, "\n" ".. |UV_STICKY_SELECT_MODE_REF| replace:: " "(:class:`bpy.types.ToolSettings.uv_sticky_select_mode` which may be passed in directly).\n" "\n" ".. |UV_STICKY_SELECT_MODE_TYPE| replace:: " "Literal['SHARED_LOCATION', 'DISABLED', 'SHARED_VERTEX']\n" "\n" ".. |UV_SELECT_FLUSH_MODE_NEEDED| replace:: " "This function selection-mode independent, " "typically :class:`bmesh.types.BMesh.uv_select_flush_mode` should be called afterwards.\n" "\n" ".. |UV_SELECT_SYNC_TO_MESH_NEEDED| replace:: " "This function doesn't flush the selection to the mesh, " "typically :class:`bmesh.types.BMesh.uv_select_sync_to_mesh` should be called afterwards.\n")
PyObject * BPyInit_bmesh_types ()
PyObject * BPy_BMesh_CreatePyObject (BMesh *bm, int flag)
PyObject * BPy_BMVert_CreatePyObject (BMesh *bm, BMVert *v)
PyObject * BPy_BMEdge_CreatePyObject (BMesh *bm, BMEdge *e)
PyObject * BPy_BMFace_CreatePyObject (BMesh *bm, BMFace *f)
PyObject * BPy_BMLoop_CreatePyObject (BMesh *bm, BMLoop *l)
PyObject * BPy_BMElemSeq_CreatePyObject (BMesh *bm, BPy_BMElem *py_ele, const char itype)
PyObject * BPy_BMVertSeq_CreatePyObject (BMesh *bm)
PyObject * BPy_BMEdgeSeq_CreatePyObject (BMesh *bm)
PyObject * BPy_BMFaceSeq_CreatePyObject (BMesh *bm)
PyObject * BPy_BMLoopSeq_CreatePyObject (BMesh *bm)
PyObject * BPy_BMIter_CreatePyObject (BMesh *bm)
PyObject * BPy_BMElem_CreatePyObject (BMesh *bm, BMHeader *ele)
int bpy_bm_generic_valid_check (BPy_BMGeneric *self)
int bpy_bm_generic_valid_check_source (BMesh *bm_source, const char *error_prefix, void **args, uint args_tot)
int bpy_bm_check_uv_select_sync_valid (BMesh *bm, const char *error_prefix)
int bpy_bm_uv_layer_offset_or_error (BMesh *bm, const char *error_prefix)
int bpy_bm_check_bm_match_or_error (BMesh *bm_a, BMesh *bm_b, const char *error_prefix)
void bpy_bm_generic_invalidate (BPy_BMGeneric *self)
void * BPy_BMElem_PySeq_As_Array_FAST (BMesh **r_bm, PyObject *seq_fast, Py_ssize_t min, Py_ssize_t max, Py_ssize_t *r_seq_num, const char htype, const bool do_unique_check, const bool do_bm_check, const char *error_prefix)
void * BPy_BMElem_PySeq_As_Array (BMesh **r_bm, PyObject *seq, Py_ssize_t min, Py_ssize_t max, Py_ssize_t *r_seq_num, const char htype, const bool do_unique_check, const bool do_bm_check, const char *error_prefix)
BMVert ** BPy_BMVert_PySeq_As_Array (BMesh **r_bm, PyObject *seq, Py_ssize_t min, Py_ssize_t max, Py_ssize_t *r_seq_num, bool do_unique_check, bool do_bm_check, const char *error_prefix)
BMEdge ** BPy_BMEdge_PySeq_As_Array (BMesh **r_bm, PyObject *seq, Py_ssize_t min, Py_ssize_t max, Py_ssize_t *r_seq_num, bool do_unique_check, bool do_bm_check, const char *error_prefix)
BMFace ** BPy_BMFace_PySeq_As_Array (BMesh **r_bm, PyObject *seq, Py_ssize_t min, Py_ssize_t max, Py_ssize_t *r_seq_num, bool do_unique_check, bool do_bm_check, const char *error_prefix)
BMLoop ** BPy_BMLoop_PySeq_As_Array (BMesh **r_bm, PyObject *seq, Py_ssize_t min, Py_ssize_t max, Py_ssize_t *r_seq_num, bool do_unique_check, bool do_bm_check, const char *error_prefix)
PyObject * BPy_BMElem_Array_As_Tuple (BMesh *bm, BMHeader **elem, Py_ssize_t elem_num)
PyObject * BPy_BMVert_Array_As_Tuple (BMesh *bm, BMVert **elem, Py_ssize_t elem_num)
PyObject * BPy_BMEdge_Array_As_Tuple (BMesh *bm, BMEdge **elem, Py_ssize_t elem_num)
PyObject * BPy_BMFace_Array_As_Tuple (BMesh *bm, BMFace **elem, Py_ssize_t elem_num)
PyObject * BPy_BMLoop_Array_As_Tuple (BMesh *bm, BMLoop *const *elem, Py_ssize_t elem_num)
int BPy_BMElem_CheckHType (PyTypeObject *type, const char htype)
char * BPy_BMElem_StringFromHType_ex (const char htype, char ret[32])
char * BPy_BMElem_StringFromHType (const char htype)
UV Sync Selection
 PyDoc_STRVAR (bpy_bmesh_uv_select_flush_mode_doc, ".. method:: uv_select_flush_mode(*, flush_down=False)\n" "\n" " Flush selection based on the current mode current :class:`BMesh.select_mode`.\n" "\n" " :arg flush_down: Flush selection down from faces to edges & verts or from edges to verts. " "This option is ignored when vertex selection mode is enabled.\n" " :type flush_down: bool\n")
static PyObject * bpy_bmesh_uv_select_flush_mode (BPy_BMesh *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (bpy_bmesh_uv_select_flush_doc, ".. method:: uv_select_flush(select)\n" "\n" " Flush selection from UV vertices to edges & faces independent of the selection mode.\n" "\n" " :arg select: Flush selection or de-selected elements.\n" " :type select: bool\n" "\n" " .. note::\n" "\n" " - |UV_SELECT_SYNC_TO_MESH_NEEDED|\n")
static PyObject * bpy_bmesh_uv_select_flush (BPy_BMesh *self, PyObject *value)
 PyDoc_STRVAR (bpy_bmesh_uv_select_flush_shared_doc, ".. method:: uv_select_flush_shared(select)\n" "\n" " Flush selection from UV vertices to contiguous UV's independent of the selection mode.\n" "\n" " :arg select: Flush selection or de-selected elements.\n" " :type select: bool\n" "\n" " .. note::\n" "\n" " - |UV_SELECT_SYNC_TO_MESH_NEEDED|\n")
static PyObject * bpy_bmesh_uv_select_flush_shared (BPy_BMesh *self, PyObject *value)
 PyDoc_STRVAR (bpy_bmesh_uv_select_sync_from_mesh_doc, ".. method:: uv_select_sync_from_mesh(*, " "sticky_select_mode='SHARED_LOCATION')\n" "\n" " Sync selection from mesh to UVs.\n" "\n" " :arg sticky_select_mode: Behavior when flushing from the mesh to UV selection " "|UV_STICKY_SELECT_MODE_REF|. " "This should only be used when preparing to create a UV selection.\n" " :type sticky_select_mode: |UV_STICKY_SELECT_MODE_TYPE|\n" "\n" " .. note::\n" "\n" " - |UV_SELECT_SYNC_TO_MESH_NEEDED|\n")
static PyObject * bpy_bmesh_uv_select_sync_from_mesh (BPy_BMesh *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (bpy_bmesh_uv_select_sync_to_mesh_doc, ".. method:: uv_select_sync_to_mesh()\n" "\n" " Sync selection from UVs to the mesh.\n")
static PyObject * bpy_bmesh_uv_select_sync_to_mesh (BPy_BMesh *self)
 PyDoc_STRVAR (bpy_bmesh_uv_select_foreach_set_doc, ".. method:: uv_select_foreach_set(select, /, *, " "loop_verts=(), loop_edges=(), faces=(), sticky_select_mode='SHARED_LOCATION')\n" "\n" " Set the UV selection state for loop-vertices, loop-edges & faces.\n" "\n" " This is a close equivalent to selecting in the UV editor.\n" "\n" " :arg select: The selection state to set.\n" " :type select: bool\n" " :arg loop_verts: Loop verts to operate on.\n" " :type loop_verts: Iterable[:class:`bmesh.types.BMLoop`]\n" " :arg loop_edges: Loop edges to operate on.\n" " :type loop_edges: Iterable[:class:`bmesh.types.BMLoop`]\n" " :arg faces: Faces to operate on.\n" " :type faces: Iterable[:class:`bmesh.types.BMFace`]\n" " :arg sticky_select_mode: See |UV_STICKY_SELECT_MODE_REF|.\n" " :type sticky_select_mode: |UV_STICKY_SELECT_MODE_TYPE|\n" "\n" " .. note::\n" "\n" " - |UV_SELECT_FLUSH_MODE_NEEDED|\n" " - |UV_SELECT_SYNC_TO_MESH_NEEDED|\n")
static PyObject * bpy_bmesh_uv_select_foreach_set (BPy_BMesh *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (bpy_bmesh_uv_select_foreach_set_from_mesh_doc, ".. method:: uv_select_foreach_set_from_mesh(select, /, *, " "verts=(), edges=(), faces=(), sticky_select_mode='SHARED_LOCATION')\n" "\n" " Select or de-select mesh elements, updating the UV selection.\n" "\n" " An equivalent to selecting from the 3D viewport " "for selection operations that support maintaining a synchronized UV selection.\n" "\n" " :arg select: The selection state to set.\n" " :type select: bool\n" " :arg verts: Verts to operate on.\n" " :type verts: Iterable[:class:`bmesh.types.BMVert`]\n" " :arg edges: Edges to operate on.\n" " :type edges: Iterable[:class:`bmesh.types.BMEdge`]\n" " :arg faces: Faces to operate on.\n" " :type faces: Iterable[:class:`bmesh.types.BMFace`]\n" " :arg sticky_select_mode: See |UV_STICKY_SELECT_MODE_REF|.\n" " :type sticky_select_mode: |UV_STICKY_SELECT_MODE_TYPE|\n")
static PyObject * bpy_bmesh_uv_select_foreach_set_from_mesh (BPy_BMesh *self, PyObject *args, PyObject *kw)

Variables

PyC_FlagSet bpy_bm_scene_vert_edge_face_flags []
PyC_FlagSet bpy_bm_htype_vert_edge_face_flags []
PyC_FlagSet bpy_bm_htype_all_flags []
PyC_FlagSet bpy_bm_hflag_all_flags []
static PyC_StringEnumItems bpy_bm_uv_select_sticky_items []
static PyGetSetDef bpy_bmesh_getseters []
static PyGetSetDef bpy_bmvert_getseters []
static PyGetSetDef bpy_bmedge_getseters []
static PyGetSetDef bpy_bmface_getseters []
static PyGetSetDef bpy_bmloop_getseters []
static PyGetSetDef bpy_bmvertseq_getseters []
static PyGetSetDef bpy_bmedgeseq_getseters []
static PyGetSetDef bpy_bmfaceseq_getseters []
static PyGetSetDef bpy_bmloopseq_getseters []
static PyMethodDef bpy_bmesh_methods []
static PyMethodDef bpy_bmvert_methods []
static PyMethodDef bpy_bmedge_methods []
static PyMethodDef bpy_bmface_methods []
static PyMethodDef bpy_bmloop_methods []
static PyMethodDef bpy_bmelemseq_methods []
static PyMethodDef bpy_bmvertseq_methods []
static PyMethodDef bpy_bmedgeseq_methods []
static PyMethodDef bpy_bmfaceseq_methods []
static PyMethodDef bpy_bmloopseq_methods []
static PySequenceMethods bpy_bmelemseq_as_sequence
static PyMappingMethods bpy_bmelemseq_as_mapping
static PyMappingMethods bpy_bm_elem_as_mapping
PyTypeObject BPy_BMesh_Type
PyTypeObject BPy_BMVert_Type
PyTypeObject BPy_BMEdge_Type
PyTypeObject BPy_BMFace_Type
PyTypeObject BPy_BMLoop_Type
PyTypeObject BPy_BMElemSeq_Type
PyTypeObject BPy_BMVertSeq_Type
PyTypeObject BPy_BMEdgeSeq_Type
PyTypeObject BPy_BMFaceSeq_Type
PyTypeObject BPy_BMLoopSeq_Type
PyTypeObject BPy_BMIter_Type
static PyModuleDef BPy_BM_types_module_def

Macro Definition Documentation

◆ BPY_BM_HFLAG_ALL_STR

#define BPY_BM_HFLAG_ALL_STR   "'SELECT', 'HIDE', 'SEAM', 'SMOOTH', 'TAG'"

This may be used with a Literal[...] typing expression.

Definition at line 79 of file bmesh_py_types.cc.

Referenced by PyDoc_STRVAR().

◆ BPY_BM_HTYPE_NOLOOP

#define BPY_BM_HTYPE_NOLOOP   "'VERT', 'EDGE', 'FACE'"

This may be used with a Literal[...] typing expression.

Definition at line 76 of file bmesh_py_types.cc.

Referenced by PyDoc_STRVAR().

Function Documentation

◆ bm_dealloc_editmode_warn()

void bm_dealloc_editmode_warn ( BPy_BMesh * self)
static

Definition at line 5490 of file bmesh_py_types.cc.

References BPY_BMFLAG_IS_WRAPPED, and self.

Referenced by bpy_bmesh_dealloc(), and bpy_bmesh_free().

◆ bpy_bm_check_bm_match_or_error()

int bpy_bm_check_bm_match_or_error ( BMesh * bm_a,
BMesh * bm_b,
const char * error_prefix )
nodiscard

◆ bpy_bm_check_uv_select_sync_valid()

int bpy_bm_check_uv_select_sync_valid ( BMesh * bm,
const char * error_prefix )
nodiscard

◆ bpy_bm_elem_copy_from()

◆ bpy_bm_elem_hash()

Py_hash_t bpy_bm_elem_hash ( PyObject * self)
static

Definition at line 4544 of file bmesh_py_types.cc.

References Py_HashPointer, and self.

Referenced by BPy_BM_init_types().

◆ bpy_bm_elem_hflag_get()

PyObject * bpy_bm_elem_hflag_get ( BPy_BMElem * self,
void * flag )
static

Definition at line 145 of file bmesh_py_types.cc.

References BM_elem_flag_test, BPY_BM_CHECK_OBJ, flag, POINTER_AS_INT, and self.

◆ bpy_bm_elem_hflag_set()

int bpy_bm_elem_hflag_set ( BPy_BMElem * self,
PyObject * value,
void * flag )
static

◆ bpy_bm_elem_hide_set()

PyObject * bpy_bm_elem_hide_set ( BPy_BMElem * self,
PyObject * value )
static

Definition at line 2245 of file bmesh_py_types.cc.

References BM_elem_hide_set, BPY_BM_CHECK_OBJ, PyC_Long_AsBool(), and self.

◆ bpy_bm_elem_index_get()

PyObject * bpy_bm_elem_index_get ( BPy_BMElem * self,
void *  )
static

Definition at line 188 of file bmesh_py_types.cc.

References BM_elem_index_get, BPY_BM_CHECK_OBJ, and self.

◆ bpy_bm_elem_index_set()

int bpy_bm_elem_index_set ( BPy_BMElem * self,
PyObject * value,
void *  )
static

Definition at line 195 of file bmesh_py_types.cc.

References BM_elem_index_set, BPY_BM_CHECK_INT, and self.

◆ bpy_bm_elem_select_set()

PyObject * bpy_bm_elem_select_set ( BPy_BMElem * self,
PyObject * value )
static

Definition at line 2219 of file bmesh_py_types.cc.

References BM_elem_select_set(), BPY_BM_CHECK_OBJ, PyC_Long_AsBool(), and self.

◆ bpy_bm_generic_invalidate()

void bpy_bm_generic_invalidate ( BPy_BMGeneric * self)

◆ bpy_bm_generic_valid_check()

int bpy_bm_generic_valid_check ( BPy_BMGeneric * self)
nodiscard

Definition at line 5124 of file bmesh_py_types.cc.

References BM_mesh_is_valid(), LIKELY, and self.

Referenced by bpy_bm_generic_valid_check_source().

◆ bpy_bm_generic_valid_check_source()

int bpy_bm_generic_valid_check_source ( BMesh * bm_source,
const char * error_prefix,
void ** args,
uint args_tot )

◆ bpy_bm_hash()

Py_hash_t bpy_bm_hash ( PyObject * self)
static

Definition at line 4549 of file bmesh_py_types.cc.

References bm, Py_HashPointer, and self.

Referenced by BPy_BM_init_types().

◆ BPy_BM_init_types()

◆ bpy_bm_is_valid_get()

PyObject * bpy_bm_is_valid_get ( BPy_BMGeneric * self,
void *  )
static

Definition at line 352 of file bmesh_py_types.cc.

References BPY_BM_IS_VALID, and self.

◆ bpy_bm_itype_as_pytype()

◆ bpy_bm_uv_layer_offset_or_error()

int bpy_bm_uv_layer_offset_or_error ( BMesh * bm,
const char * error_prefix )
nodiscard

◆ BPy_BMEdge_Array_As_Tuple()

PyObject * BPy_BMEdge_Array_As_Tuple ( BMesh * bm,
BMEdge ** elem,
Py_ssize_t elem_num )
nodiscard

Definition at line 5417 of file bmesh_py_types.cc.

References bm, BPy_BMEdge_CreatePyObject(), i, and ret.

◆ bpy_bmedge_calc_face_angle()

PyObject * bpy_bmedge_calc_face_angle ( BPy_BMEdge * self,
PyObject * args )
static

Definition at line 2498 of file bmesh_py_types.cc.

References angle(), BM_edge_calc_face_angle_ex(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_calc_face_angle_signed()

PyObject * bpy_bmedge_calc_face_angle_signed ( BPy_BMEdge * self,
PyObject * args )
static

◆ bpy_bmedge_calc_length()

PyObject * bpy_bmedge_calc_length ( BPy_BMEdge * self)
static

Definition at line 2482 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, len_v3v3(), and self.

◆ bpy_bmedge_calc_tangent()

PyObject * bpy_bmedge_calc_tangent ( BPy_BMEdge * self,
PyObject * args )
static

◆ BPy_BMEdge_CreatePyObject()

◆ bpy_bmedge_dealloc()

void bpy_bmedge_dealloc ( BPy_BMElem * self)
static

Definition at line 4497 of file bmesh_py_types.cc.

References bm, CD_BM_ELEM_PYPTR, CustomData_bmesh_get(), ptr, and self.

Referenced by BPy_BM_init_types().

◆ bpy_bmedge_is_boundary_get()

PyObject * bpy_bmedge_is_boundary_get ( BPy_BMEdge * self,
void *  )
static

Definition at line 595 of file bmesh_py_types.cc.

References BM_edge_is_boundary(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_is_contiguous_get()

PyObject * bpy_bmedge_is_contiguous_get ( BPy_BMEdge * self,
void *  )
static

Definition at line 559 of file bmesh_py_types.cc.

References BM_edge_is_contiguous(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_is_convex_get()

PyObject * bpy_bmedge_is_convex_get ( BPy_BMEdge * self,
void *  )
static

Definition at line 571 of file bmesh_py_types.cc.

References BM_edge_is_convex(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_is_manifold_get()

PyObject * bpy_bmedge_is_manifold_get ( BPy_BMEdge * self,
void *  )
static

Definition at line 546 of file bmesh_py_types.cc.

References BM_edge_is_manifold(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_is_wire_get()

PyObject * bpy_bmedge_is_wire_get ( BPy_BMEdge * self,
void *  )
static

Definition at line 583 of file bmesh_py_types.cc.

References BM_edge_is_wire(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_normal_update()

PyObject * bpy_bmedge_normal_update ( BPy_BMEdge * self)
static

Definition at line 2643 of file bmesh_py_types.cc.

References BM_edge_normals_update(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_other_vert()

PyObject * bpy_bmedge_other_vert ( BPy_BMEdge * self,
BPy_BMVert * value )
static

◆ BPy_BMEdge_PySeq_As_Array()

BMEdge ** BPy_BMEdge_PySeq_As_Array ( BMesh ** r_bm,
PyObject * seq,
Py_ssize_t min,
Py_ssize_t max,
Py_ssize_t * r_seq_num,
bool do_unique_check,
bool do_bm_check,
const char * error_prefix )
nodiscard

◆ bpy_bmedge_repr()

PyObject * bpy_bmedge_repr ( BPy_BMEdge * self)
static

Definition at line 4626 of file bmesh_py_types.cc.

References bm, BM_elem_index_get, e, and self.

Referenced by BPy_BM_init_types().

◆ BPy_BMEdgeSeq_CreatePyObject()

PyObject * BPy_BMEdgeSeq_CreatePyObject ( BMesh * bm)
nodiscard

Definition at line 5071 of file bmesh_py_types.cc.

References bm, BM_EDGES_OF_MESH, BPy_BMEdgeSeq_Type, and self.

Referenced by bpy_bmedgeseq_get().

◆ bpy_bmedgeseq_get()

PyObject * bpy_bmedgeseq_get ( BPy_BMesh * self,
void *  )
static

Definition at line 240 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMEdgeSeq_CreatePyObject(), and self.

◆ bpy_bmedgeseq_get__method()

PyObject * bpy_bmedgeseq_get__method ( BPy_BMElemSeq * self,
PyObject * args )
static

◆ bpy_bmedgeseq_new()

◆ bpy_bmedgeseq_remove()

PyObject * bpy_bmedgeseq_remove ( BPy_BMElemSeq * self,
BPy_BMEdge * value )
static

◆ BPy_BMElem_Array_As_Tuple()

PyObject * BPy_BMElem_Array_As_Tuple ( BMesh * bm,
BMHeader ** elem,
Py_ssize_t elem_num )
nodiscard

Definition at line 5399 of file bmesh_py_types.cc.

References bm, BPy_BMElem_CreatePyObject(), i, and ret.

◆ bpy_bmelem_ass_subscript()

int bpy_bmelem_ass_subscript ( BPy_BMElem * self,
BPy_BMLayerItem * key,
PyObject * value )
static

Definition at line 4391 of file bmesh_py_types.cc.

References BPY_BM_CHECK_INT, BPy_BMLayerItem_SetItem(), and self.

◆ BPy_BMElem_CheckHType()

int BPy_BMElem_CheckHType ( PyTypeObject * type,
const char htype )
nodiscard

◆ BPy_BMElem_CreatePyObject()

◆ BPy_BMElem_PySeq_As_Array()

void * BPy_BMElem_PySeq_As_Array ( BMesh ** r_bm,
PyObject * seq,
Py_ssize_t min,
Py_ssize_t max,
Py_ssize_t * r_seq_num,
const char htype,
const bool do_unique_check,
const bool do_bm_check,
const char * error_prefix )
nodiscard

◆ BPy_BMElem_PySeq_As_Array_FAST()

void * BPy_BMElem_PySeq_As_Array_FAST ( BMesh ** r_bm,
PyObject * seq_fast,
Py_ssize_t min,
Py_ssize_t max,
Py_ssize_t * r_seq_num,
char htype,
bool do_unique_check,
bool do_bm_check,
const char * error_prefix )
nodiscard

Generic python seq as BMVert/Edge/Face array, return value must be freed with PyMem_FREE(...);

The 'bm_r' value is assigned when empty, and used when set.

Definition at line 5215 of file bmesh_py_types.cc.

References bm, BPy_BMElem::bm, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_INTERNAL_TAG, BPY_BM_IS_VALID, BPy_BMElem_CheckHType(), BPy_BMElem_StringFromHType(), BPy_BMElem::ele, i, max, min, and UNLIKELY.

Referenced by BPy_BMElem_PySeq_As_Array().

◆ BPy_BMElem_StringFromHType()

char * BPy_BMElem_StringFromHType ( const char htype)
nodiscard

◆ BPy_BMElem_StringFromHType_ex()

char * BPy_BMElem_StringFromHType_ex ( char htype,
char ret[32] )
nodiscard

Use for error strings only, not thread safe,

Returns
a string like '(BMVert/BMEdge/BMFace/BMLoop)'

Definition at line 5456 of file bmesh_py_types.cc.

References BLI_string_join_array_by_sep_char(), BM_EDGE, BM_FACE, BM_LOOP, BM_VERT, BPy_BMEdge_Type, BPy_BMFace_Type, BPy_BMLoop_Type, BPy_BMVert_Type, i, and ret.

Referenced by BPy_BMElem_StringFromHType(), bpy_bmlayeritem_ptr_get(), and bpy_slot_from_py_elemseq_check().

◆ bpy_bmelem_subscript()

PyObject * bpy_bmelem_subscript ( BPy_BMElem * self,
BPy_BMLayerItem * key )
static

Definition at line 4384 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMLayerItem_GetItem(), and self.

◆ bpy_bmelemseq_contains()

int bpy_bmelemseq_contains ( BPy_BMElemSeq * self,
PyObject * value )
static

◆ BPy_BMElemSeq_CreatePyObject()

PyObject * BPy_BMElemSeq_CreatePyObject ( BMesh * bm,
BPy_BMElem * py_ele,
const char itype )
nodiscard

Definition at line 5052 of file bmesh_py_types.cc.

References bm, BPy_BMElemSeq_Type, itype, and self.

Referenced by bpy_bmelemseq_elem_get().

◆ bpy_bmelemseq_dealloc()

void bpy_bmelemseq_dealloc ( BPy_BMElemSeq * self)
static

Definition at line 4536 of file bmesh_py_types.cc.

References self.

Referenced by BPy_BM_init_types().

◆ bpy_bmelemseq_elem_get()

PyObject * bpy_bmelemseq_elem_get ( BPy_BMElem * self,
void * itype )
static

◆ bpy_bmelemseq_ensure_lookup_table()

PyObject * bpy_bmelemseq_ensure_lookup_table ( BPy_BMElemSeq * self)
static

◆ bpy_bmelemseq_index_update()

◆ bpy_bmelemseq_iter()

PyObject * bpy_bmelemseq_iter ( BPy_BMElemSeq * self)
static

◆ bpy_bmelemseq_layers_get()

PyObject * bpy_bmelemseq_layers_get ( BPy_BMElemSeq * self,
void * htype )
static

◆ bpy_bmelemseq_length()

◆ bpy_bmelemseq_sort()

◆ bpy_bmelemseq_sort_cmp_by_keys_ascending()

int bpy_bmelemseq_sort_cmp_by_keys_ascending ( const void * index1_v,
const void * index2_v,
void * keys_v )
static

◆ bpy_bmelemseq_sort_cmp_by_keys_descending()

int bpy_bmelemseq_sort_cmp_by_keys_descending ( const void * index1_v,
const void * index2_v,
void * keys_v )
static

Definition at line 3645 of file bmesh_py_types.cc.

References bpy_bmelemseq_sort_cmp_by_keys_ascending().

Referenced by bpy_bmelemseq_sort().

◆ bpy_bmelemseq_subscript()

PyObject * bpy_bmelemseq_subscript ( BPy_BMElemSeq * self,
PyObject * key )
static

◆ bpy_bmelemseq_subscript_int()

PyObject * bpy_bmelemseq_subscript_int ( BPy_BMElemSeq * self,
Py_ssize_t keynum )
static

◆ bpy_bmelemseq_subscript_slice()

PyObject * bpy_bmelemseq_subscript_slice ( BPy_BMElemSeq * self,
Py_ssize_t start,
Py_ssize_t stop )
static

◆ bpy_bmesh_calc_loop_triangles()

PyObject * bpy_bmesh_calc_loop_triangles ( BPy_BMElem * self)
static

◆ bpy_bmesh_calc_volume()

PyObject * bpy_bmesh_calc_volume ( BPy_BMElem * self,
PyObject * args,
PyObject * kw )
static

Definition at line 2149 of file bmesh_py_types.cc.

References BM_mesh_calc_volume(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmesh_clear()

PyObject * bpy_bmesh_clear ( BPy_BMesh * self)
static

Definition at line 1235 of file bmesh_py_types.cc.

References bm, BM_mesh_clear(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmesh_copy()

PyObject * bpy_bmesh_copy ( BPy_BMesh * self)
static

◆ BPy_BMesh_CreatePyObject()

PyObject * BPy_BMesh_CreatePyObject ( BMesh * bm,
int flag )
nodiscard

◆ bpy_bmesh_dealloc()

void bpy_bmesh_dealloc ( BPy_BMesh * self)
static

◆ bpy_bmesh_free()

PyObject * bpy_bmesh_free ( BPy_BMesh * self)
static

◆ bpy_bmesh_from_mesh()

PyObject * bpy_bmesh_from_mesh ( BPy_BMesh * self,
PyObject * args,
PyObject * kw )
static

◆ bpy_bmesh_from_object()

◆ bpy_bmesh_is_wrapped_get()

PyObject * bpy_bmesh_is_wrapped_get ( BPy_BMesh * self,
void *  )
static

Definition at line 363 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPY_BMFLAG_IS_WRAPPED, and self.

◆ bpy_bmesh_normal_update()

PyObject * bpy_bmesh_normal_update ( BPy_BMesh * self)
static

Definition at line 2064 of file bmesh_py_types.cc.

References BM_mesh_normals_update(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmesh_repr()

PyObject * bpy_bmesh_repr ( BPy_BMesh * self)
static

Definition at line 4598 of file bmesh_py_types.cc.

References bm, and self.

Referenced by BPy_BM_init_types().

◆ bpy_bmesh_select_flush()

PyObject * bpy_bmesh_select_flush ( BPy_BMesh * self,
PyObject * value )
static

◆ bpy_bmesh_select_flush_mode()

PyObject * bpy_bmesh_select_flush_mode ( BPy_BMesh * self,
PyObject * args,
PyObject * kw )
static

◆ bpy_bmesh_select_history_get()

PyObject * bpy_bmesh_select_history_get ( BPy_BMesh * self,
void *  )
static

Definition at line 409 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMEditSel_CreatePyObject(), and self.

◆ bpy_bmesh_select_history_set()

int bpy_bmesh_select_history_set ( BPy_BMesh * self,
PyObject * value,
void *  )
static

Definition at line 416 of file bmesh_py_types.cc.

References BPY_BM_CHECK_INT, BPy_BMEditSel_Assign(), and self.

◆ bpy_bmesh_select_mode_get()

PyObject * bpy_bmesh_select_mode_get ( BPy_BMesh * self,
void *  )
static

◆ bpy_bmesh_select_mode_set()

int bpy_bmesh_select_mode_set ( BPy_BMesh * self,
PyObject * value,
void *  )
static

◆ bpy_bmesh_to_mesh()

◆ bpy_bmesh_transform()

◆ bpy_bmesh_uv_select_flush()

PyObject * bpy_bmesh_uv_select_flush ( BPy_BMesh * self,
PyObject * value )
static

◆ bpy_bmesh_uv_select_flush_mode()

PyObject * bpy_bmesh_uv_select_flush_mode ( BPy_BMesh * self,
PyObject * args,
PyObject * kw )
static

◆ bpy_bmesh_uv_select_flush_shared()

PyObject * bpy_bmesh_uv_select_flush_shared ( BPy_BMesh * self,
PyObject * value )
static

◆ bpy_bmesh_uv_select_foreach_set()

◆ bpy_bmesh_uv_select_foreach_set_from_mesh()

◆ bpy_bmesh_uv_select_sync_from_mesh()

◆ bpy_bmesh_uv_select_sync_to_mesh()

PyObject * bpy_bmesh_uv_select_sync_to_mesh ( BPy_BMesh * self)
static

◆ bpy_bmesh_uv_select_sync_valid_get()

PyObject * bpy_bmesh_uv_select_sync_valid_get ( BPy_BMesh * self,
void *  )
static

Definition at line 432 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmesh_uv_select_sync_valid_set()

int bpy_bmesh_uv_select_sync_valid_set ( BPy_BMesh * self,
PyObject * value,
void *  )
static

Definition at line 439 of file bmesh_py_types.cc.

References BPY_BM_CHECK_INT, PyC_Long_AsBool(), and self.

◆ BPy_BMFace_Array_As_Tuple()

PyObject * BPy_BMFace_Array_As_Tuple ( BMesh * bm,
BMFace ** elem,
Py_ssize_t elem_num )
nodiscard

Definition at line 5427 of file bmesh_py_types.cc.

References bm, BPy_BMFace_CreatePyObject(), i, and ret.

Referenced by bpy_bm_utils_face_split_edgenet().

◆ bpy_bmface_calc_area()

PyObject * bpy_bmface_calc_area ( BPy_BMFace * self)
static

Definition at line 2776 of file bmesh_py_types.cc.

References BM_face_calc_area(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmface_calc_center_bounds()

PyObject * bpy_bmface_calc_center_bounds ( BPy_BMFace * self)
static

◆ bpy_bmface_calc_center_mean()

PyObject * bpy_bmface_calc_center_mean ( BPy_BMFace * self)
static

◆ bpy_bmface_calc_center_median_weighted()

PyObject * bpy_bmface_calc_center_median_weighted ( BPy_BMFace * self)
static

◆ bpy_bmface_calc_perimeter()

PyObject * bpy_bmface_calc_perimeter ( BPy_BMFace * self)
static

Definition at line 2791 of file bmesh_py_types.cc.

References BM_face_calc_perimeter(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmface_calc_tangent_edge()

PyObject * bpy_bmface_calc_tangent_edge ( BPy_BMFace * self)
static

◆ bpy_bmface_calc_tangent_edge_diagonal()

PyObject * bpy_bmface_calc_tangent_edge_diagonal ( BPy_BMFace * self)
static

◆ bpy_bmface_calc_tangent_edge_pair()

PyObject * bpy_bmface_calc_tangent_edge_pair ( BPy_BMFace * self)
static

◆ bpy_bmface_calc_tangent_vert_diagonal()

PyObject * bpy_bmface_calc_tangent_vert_diagonal ( BPy_BMFace * self)
static

◆ bpy_bmface_copy()

PyObject * bpy_bmface_copy ( BPy_BMFace * self,
PyObject * args,
PyObject * kw )
static

◆ bpy_bmface_copy_from_face_interp()

PyObject * bpy_bmface_copy_from_face_interp ( BPy_BMFace * self,
PyObject * args )
static

◆ BPy_BMFace_CreatePyObject()

◆ bpy_bmface_dealloc()

void bpy_bmface_dealloc ( BPy_BMElem * self)
static

Definition at line 4510 of file bmesh_py_types.cc.

References bm, CD_BM_ELEM_PYPTR, CustomData_bmesh_get(), ptr, and self.

Referenced by BPy_BM_init_types().

◆ bpy_bmface_material_index_get()

PyObject * bpy_bmface_material_index_get ( BPy_BMFace * self,
void *  )
static

Definition at line 633 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmface_material_index_set()

int bpy_bmface_material_index_set ( BPy_BMFace * self,
PyObject * value,
void *  )
static

Definition at line 639 of file bmesh_py_types.cc.

References BPY_BM_CHECK_INT, MAXMAT, and self.

◆ bpy_bmface_normal_flip()

PyObject * bpy_bmface_normal_flip ( BPy_BMFace * self)
static

Definition at line 2949 of file bmesh_py_types.cc.

References BM_face_normal_flip(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmface_normal_get()

PyObject * bpy_bmface_normal_get ( BPy_BMFace * self,
void *  )
static

Definition at line 610 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, self, and Vector_CreatePyObject_wrap().

◆ bpy_bmface_normal_set()

int bpy_bmface_normal_set ( BPy_BMFace * self,
PyObject * value,
void *  )
static

Definition at line 616 of file bmesh_py_types.cc.

References BPY_BM_CHECK_INT, mathutils_array_parse(), and self.

◆ bpy_bmface_normal_update()

PyObject * bpy_bmface_normal_update ( BPy_BMFace * self)
static

Definition at line 2934 of file bmesh_py_types.cc.

References BM_face_normal_update(), BPY_BM_CHECK_OBJ, and self.

◆ BPy_BMFace_PySeq_As_Array()

BMFace ** BPy_BMFace_PySeq_As_Array ( BMesh ** r_bm,
PyObject * seq,
Py_ssize_t min,
Py_ssize_t max,
Py_ssize_t * r_seq_num,
bool do_unique_check,
bool do_bm_check,
const char * error_prefix )
nodiscard

◆ bpy_bmface_repr()

PyObject * bpy_bmface_repr ( BPy_BMFace * self)
static

Definition at line 4644 of file bmesh_py_types.cc.

References bm, BM_elem_index_get, BMFace::len, and self.

Referenced by BPy_BM_init_types().

◆ bpy_bmface_uv_select_set()

PyObject * bpy_bmface_uv_select_set ( BPy_BMFace * self,
PyObject * value )
static

Definition at line 2755 of file bmesh_py_types.cc.

References bm, BM_face_uvselect_set(), BPY_BM_CHECK_OBJ, PyC_Long_AsBool(), and self.

◆ bpy_bmfaceseq_active_get()

PyObject * bpy_bmfaceseq_active_get ( BPy_BMElemSeq * self,
void *  )
static

Definition at line 804 of file bmesh_py_types.cc.

References bm, BPY_BM_CHECK_OBJ, BPy_BMElem_CreatePyObject(), and self.

◆ bpy_bmfaceseq_active_set()

int bpy_bmfaceseq_active_set ( BPy_BMElem * self,
PyObject * value,
void *  )
static

Definition at line 816 of file bmesh_py_types.cc.

References bm, BPY_BM_CHECK_SOURCE_INT, BPy_BMFace_Check, and self.

◆ BPy_BMFaceSeq_CreatePyObject()

PyObject * BPy_BMFaceSeq_CreatePyObject ( BMesh * bm)
nodiscard

Definition at line 5080 of file bmesh_py_types.cc.

References bm, BM_FACES_OF_MESH, BPy_BMFaceSeq_Type, and self.

Referenced by bpy_bmfaceseq_get().

◆ bpy_bmfaceseq_get()

PyObject * bpy_bmfaceseq_get ( BPy_BMesh * self,
void *  )
static

Definition at line 252 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMFaceSeq_CreatePyObject(), and self.

◆ bpy_bmfaceseq_get__method()

PyObject * bpy_bmfaceseq_get__method ( BPy_BMElemSeq * self,
PyObject * args )
static

◆ bpy_bmfaceseq_new()

PyObject * bpy_bmfaceseq_new ( BPy_BMElemSeq * self,
PyObject * args )
static

◆ bpy_bmfaceseq_remove()

PyObject * bpy_bmfaceseq_remove ( BPy_BMElemSeq * self,
BPy_BMFace * value )
static

◆ BPy_BMIter_CreatePyObject()

PyObject * BPy_BMIter_CreatePyObject ( BMesh * bm)
nodiscard

Definition at line 5098 of file bmesh_py_types.cc.

References bm, BPy_BMIter_Type, and self.

Referenced by bpy_bmelemseq_iter().

◆ bpy_bmiter_next()

PyObject * bpy_bmiter_next ( BPy_BMIter * self)
static

Definition at line 4439 of file bmesh_py_types.cc.

References BPy_BMElem_CreatePyObject(), and self.

Referenced by BPy_BM_init_types().

◆ BPy_BMLoop_Array_As_Tuple()

PyObject * BPy_BMLoop_Array_As_Tuple ( BMesh * bm,
BMLoop *const * elem,
Py_ssize_t elem_num )
nodiscard

Definition at line 5437 of file bmesh_py_types.cc.

References bm, BPy_BMLoop_CreatePyObject(), i, and ret.

Referenced by bpy_bmesh_calc_loop_triangles().

◆ bpy_bmloop_calc_angle()

PyObject * bpy_bmloop_calc_angle ( BPy_BMLoop * self)
static

Definition at line 3074 of file bmesh_py_types.cc.

References BM_loop_calc_face_angle(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmloop_calc_normal()

PyObject * bpy_bmloop_calc_normal ( BPy_BMLoop * self)
static

◆ bpy_bmloop_calc_tangent()

PyObject * bpy_bmloop_calc_tangent ( BPy_BMLoop * self)
static

◆ bpy_bmloop_copy_from_face_interp()

PyObject * bpy_bmloop_copy_from_face_interp ( BPy_BMLoop * self,
PyObject * args )
static

◆ BPy_BMLoop_CreatePyObject()

◆ bpy_bmloop_dealloc()

void bpy_bmloop_dealloc ( BPy_BMElem * self)
static

Definition at line 4523 of file bmesh_py_types.cc.

References bm, CD_BM_ELEM_PYPTR, CustomData_bmesh_get(), ptr, and self.

Referenced by BPy_BM_init_types().

◆ bpy_bmloop_edge_get()

PyObject * bpy_bmloop_edge_get ( BPy_BMLoop * self,
void *  )
static

Definition at line 681 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMEdge_CreatePyObject(), and self.

◆ bpy_bmloop_face_get()

PyObject * bpy_bmloop_face_get ( BPy_BMLoop * self,
void *  )
static

Definition at line 693 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMFace_CreatePyObject(), and self.

◆ bpy_bmloop_is_convex_get()

PyObject * bpy_bmloop_is_convex_get ( BPy_BMLoop * self,
void *  )
static

Definition at line 754 of file bmesh_py_types.cc.

References BM_loop_is_convex(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmloop_link_loop_next_get()

PyObject * bpy_bmloop_link_loop_next_get ( BPy_BMLoop * self,
void *  )
static

Definition at line 705 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMLoop_CreatePyObject(), and self.

◆ bpy_bmloop_link_loop_prev_get()

PyObject * bpy_bmloop_link_loop_prev_get ( BPy_BMLoop * self,
void *  )
static

Definition at line 717 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMLoop_CreatePyObject(), and self.

◆ bpy_bmloop_link_loop_radial_next_get()

PyObject * bpy_bmloop_link_loop_radial_next_get ( BPy_BMLoop * self,
void *  )
static

Definition at line 729 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMLoop_CreatePyObject(), and self.

◆ bpy_bmloop_link_loop_radial_prev_get()

PyObject * bpy_bmloop_link_loop_radial_prev_get ( BPy_BMLoop * self,
void *  )
static

Definition at line 741 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMLoop_CreatePyObject(), and self.

◆ BPy_BMLoop_PySeq_As_Array()

BMLoop ** BPy_BMLoop_PySeq_As_Array ( BMesh ** r_bm,
PyObject * seq,
Py_ssize_t min,
Py_ssize_t max,
Py_ssize_t * r_seq_num,
bool do_unique_check,
bool do_bm_check,
const char * error_prefix )
nodiscard

Definition at line 5386 of file bmesh_py_types.cc.

References BM_LOOP, BPy_BMElem_PySeq_As_Array(), max, and min.

Referenced by bpy_bmesh_uv_select_foreach_set().

◆ bpy_bmloop_repr()

PyObject * bpy_bmloop_repr ( BPy_BMLoop * self)
static

Definition at line 4657 of file bmesh_py_types.cc.

References bm, BM_elem_index_get, l, and self.

Referenced by BPy_BM_init_types().

◆ bpy_bmloop_uv_select_edge_set()

PyObject * bpy_bmloop_uv_select_edge_set ( BPy_BMLoop * self,
PyObject * value )
static

◆ bpy_bmloop_uv_select_vert_set()

PyObject * bpy_bmloop_uv_select_vert_set ( BPy_BMLoop * self,
PyObject * value )
static

◆ bpy_bmloop_vert_get()

PyObject * bpy_bmloop_vert_get ( BPy_BMLoop * self,
void *  )
static

Definition at line 669 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMVert_CreatePyObject(), and self.

◆ BPy_BMLoopSeq_CreatePyObject()

PyObject * BPy_BMLoopSeq_CreatePyObject ( BMesh * bm)
nodiscard

Definition at line 5089 of file bmesh_py_types.cc.

References bm, BPy_BMLoopSeq_Type, and self.

Referenced by bpy_bmloopseq_get().

◆ bpy_bmloopseq_get()

PyObject * bpy_bmloopseq_get ( BPy_BMesh * self,
void *  )
static

Definition at line 268 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMLoopSeq_CreatePyObject(), and self.

◆ BPy_BMVert_Array_As_Tuple()

PyObject * BPy_BMVert_Array_As_Tuple ( BMesh * bm,
BMVert ** elem,
Py_ssize_t elem_num )
nodiscard

Definition at line 5408 of file bmesh_py_types.cc.

References bm, BPy_BMVert_CreatePyObject(), i, and ret.

Referenced by bpy_bm_utils_vert_separate().

◆ bpy_bmvert_calc_edge_angle()

PyObject * bpy_bmvert_calc_edge_angle ( BPy_BMVert * self,
PyObject * args )
static

Definition at line 2405 of file bmesh_py_types.cc.

References angle(), BM_vert_calc_edge_angle_ex(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmvert_calc_shell_factor()

PyObject * bpy_bmvert_calc_shell_factor ( BPy_BMVert * self)
static

Definition at line 2446 of file bmesh_py_types.cc.

References BM_vert_calc_shell_factor(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmvert_co_get()

PyObject * bpy_bmvert_co_get ( BPy_BMVert * self,
void *  )
static

Definition at line 461 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, self, and Vector_CreatePyObject_wrap().

◆ bpy_bmvert_co_set()

int bpy_bmvert_co_set ( BPy_BMVert * self,
PyObject * value,
void *  )
static

Definition at line 467 of file bmesh_py_types.cc.

References BPY_BM_CHECK_INT, mathutils_array_parse(), and self.

◆ bpy_bmvert_copy_from_face_interp()

PyObject * bpy_bmvert_copy_from_face_interp ( BPy_BMVert * self,
PyObject * args )
static

◆ bpy_bmvert_copy_from_vert_interp()

PyObject * bpy_bmvert_copy_from_vert_interp ( BPy_BMVert * self,
PyObject * args )
static

◆ BPy_BMVert_CreatePyObject()

◆ bpy_bmvert_dealloc()

void bpy_bmvert_dealloc ( BPy_BMElem * self)
static

Definition at line 4484 of file bmesh_py_types.cc.

References bm, CD_BM_ELEM_PYPTR, CustomData_bmesh_get(), ptr, and self.

Referenced by BPy_BM_init_types().

◆ bpy_bmvert_is_boundary_get()

PyObject * bpy_bmvert_is_boundary_get ( BPy_BMVert * self,
void *  )
static

Definition at line 531 of file bmesh_py_types.cc.

References BM_vert_is_boundary(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmvert_is_manifold_get()

PyObject * bpy_bmvert_is_manifold_get ( BPy_BMVert * self,
void *  )
static

Definition at line 507 of file bmesh_py_types.cc.

References BM_vert_is_manifold(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmvert_is_wire_get()

PyObject * bpy_bmvert_is_wire_get ( BPy_BMVert * self,
void *  )
static

Definition at line 519 of file bmesh_py_types.cc.

References BM_vert_is_wire(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmvert_normal_get()

PyObject * bpy_bmvert_normal_get ( BPy_BMVert * self,
void *  )
static

Definition at line 484 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, self, and Vector_CreatePyObject_wrap().

◆ bpy_bmvert_normal_set()

int bpy_bmvert_normal_set ( BPy_BMVert * self,
PyObject * value,
void *  )
static

Definition at line 490 of file bmesh_py_types.cc.

References BPY_BM_CHECK_INT, mathutils_array_parse(), and self.

◆ bpy_bmvert_normal_update()

PyObject * bpy_bmvert_normal_update ( BPy_BMVert * self)
static

Definition at line 2463 of file bmesh_py_types.cc.

References BM_vert_normal_update(), BPY_BM_CHECK_OBJ, and self.

◆ BPy_BMVert_PySeq_As_Array()

BMVert ** BPy_BMVert_PySeq_As_Array ( BMesh ** r_bm,
PyObject * seq,
Py_ssize_t min,
Py_ssize_t max,
Py_ssize_t * r_seq_num,
bool do_unique_check,
bool do_bm_check,
const char * error_prefix )
nodiscard

◆ bpy_bmvert_repr()

PyObject * bpy_bmvert_repr ( BPy_BMVert * self)
static

Definition at line 4614 of file bmesh_py_types.cc.

References bm, BM_elem_index_get, self, and v.

Referenced by BPy_BM_init_types().

◆ BPy_BMVertSeq_CreatePyObject()

PyObject * BPy_BMVertSeq_CreatePyObject ( BMesh * bm)
nodiscard

Definition at line 5062 of file bmesh_py_types.cc.

References bm, BM_VERTS_OF_MESH, BPy_BMVertSeq_Type, and self.

Referenced by bpy_bmvertseq_get().

◆ bpy_bmvertseq_get()

PyObject * bpy_bmvertseq_get ( BPy_BMesh * self,
void *  )
static

Definition at line 228 of file bmesh_py_types.cc.

References BPY_BM_CHECK_OBJ, BPy_BMVertSeq_CreatePyObject(), and self.

◆ bpy_bmvertseq_new()

◆ bpy_bmvertseq_remove()

PyObject * bpy_bmvertseq_remove ( BPy_BMElemSeq * self,
BPy_BMVert * value )
static

◆ BPyInit_bmesh_types()

◆ PyDoc_STRVAR() [1/123]

PyDoc_STRVAR ( bpy_bm_elem_copy_from_doc ,
".. method:: copy_from(other)\n" "\n" " Copy values from another element of matching type.\n"  )

◆ PyDoc_STRVAR() [2/123]

PyDoc_STRVAR ( bpy_bm_elem_hide_doc ,
"Hidden state of this element.\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [3/123]

PyDoc_STRVAR ( bpy_bm_elem_hide_set_doc ,
".. method:: hide_set(hide)\n" "\n" " Set the hide state.\n" " This is different from the *hide* attribute because it updates the selection and " "hide state of associated geometry.\n" "\n" " :arg hide: Hidden or visible.\n" " :type hide: bool\n"  )

◆ PyDoc_STRVAR() [4/123]

PyDoc_STRVAR ( bpy_bm_elem_index_doc ,
"Index of this element.\n" "\n" ":type: int\n" "\n" ".. note::\n" "\n" " This value is not necessarily valid,
while editing the mesh it can become *dirty *.\n" "\n" " It 's also possible to assign any number to this attribute for a scripts internal logic.\n" "\n" " To ensure the value is up to date - see :class:`bmesh.types.BMElemSeq.index_update`.\n"  )

◆ PyDoc_STRVAR() [5/123]

PyDoc_STRVAR ( bpy_bm_elem_seam_doc ,
"Seam for UV unwrapping.\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [6/123]

PyDoc_STRVAR ( bpy_bm_elem_select_doc ,
"Selected state of this element.\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [7/123]

PyDoc_STRVAR ( bpy_bm_elem_select_set_doc ,
".. method:: select_set(select)\n" "\n" " Set the selection.\n" " This is different from the *select* attribute because it updates the selection " "state of associated geometry.\n" "\n" " :arg select: Select or de-select.\n" " :type select: bool\n" "\n" " .. note::\n" "\n" " This only flushes down,
so selecting a face will select all its " "vertices but de-selecting a vertex " " won 't de-select all the faces that use it,
before finishing with a mesh " "typically flushing is still needed.\n"  )

◆ PyDoc_STRVAR() [8/123]

PyDoc_STRVAR ( bpy_bm_elem_smooth_doc ,
"Smooth state of this element.\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [9/123]

PyDoc_STRVAR ( bpy_bm_elem_tag_doc ,
"Generic attribute scripts can use for own logic\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [10/123]

PyDoc_STRVAR ( bpy_bm_elem_uv_select_doc ,
"UV selected state of this element.\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [11/123]

PyDoc_STRVAR ( bpy_bm_is_valid_doc ,
"True when this element is valid (hasn't been removed).\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [12/123]

PyDoc_STRVAR ( BPy_BM_types_module_doc ,
"\n" ".. |UV_STICKY_SELECT_MODE_REF| replace:: " "(:class:`bpy.types.ToolSettings.uv_sticky_select_mode` which may be passed in directly).\n" "\n" ".. |UV_STICKY_SELECT_MODE_TYPE| replace:: " "Literal\n" "\n" ".. |UV_SELECT_FLUSH_MODE_NEEDED| replace:: " "This function selection-mode independent[ 'SHARED_LOCATION', 'DISABLED', 'SHARED_VERTEX'],
" "typically :class:`bmesh.types.BMesh.uv_select_flush_mode` should be called afterwards.\n" "\n" "..|UV_SELECT_SYNC_TO_MESH_NEEDED|replace::" "This function doesn 't flush the selection to the mesh,
" "typically :class:`bmesh.types.BMesh.uv_select_sync_to_mesh` should be called afterwards.\n"  )

◆ PyDoc_STRVAR() [13/123]

PyDoc_STRVAR ( bpy_bmedge_calc_face_angle_doc ,
".. method:: calc_face_angle(fallback=None)\n" "\n" " :arg fallback: return this when the edge doesn't have 2 faces\n" " (instead of raising a :exc:`ValueError`).\n" " :type fallback: Any\n" " :return: The angle between 2 connected faces in radians.\n" " :rtype: float\n"  )

◆ PyDoc_STRVAR() [14/123]

PyDoc_STRVAR ( bpy_bmedge_calc_face_angle_signed_doc ,
".. method:: calc_face_angle_signed(fallback=None)\n" "\n" " :arg fallback: return this when the edge doesn't have 2 faces\n" " (instead of raising a :exc:`ValueError`).\n" " :type fallback: Any\n" " :return: The angle between 2 connected faces in radians (negative for concave join).\n" " :rtype: float\n"  )

◆ PyDoc_STRVAR() [15/123]

PyDoc_STRVAR ( bpy_bmedge_calc_length_doc ,
".. method:: calc_length()\n" "\n" " :return: The length between both verts.\n" " :rtype: float\n"  )

◆ PyDoc_STRVAR() [16/123]

PyDoc_STRVAR ( bpy_bmedge_calc_tangent_doc ,
".. method:: calc_tangent(loop)\n" "\n" " Return the tangent at this edge relative to a face (pointing inward into the face).\n" " This uses the face normal for calculation.\n" "\n" " :arg loop: The loop used for tangent calculation.\n" " :type loop: :class:`bmesh.types.BMLoop`\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [17/123]

PyDoc_STRVAR ( bpy_bmedge_doc ,
"The BMesh edge connecting 2 verts\n"  )

◆ PyDoc_STRVAR() [18/123]

PyDoc_STRVAR ( bpy_bmedge_is_boundary_doc ,
"True when this edge is at the boundary of a face (read-only).\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [19/123]

PyDoc_STRVAR ( bpy_bmedge_is_contiguous_doc ,
"True when this edge is manifold,
between two faces with the same winding " "(read-only).\n" "\n" ":type:bool\n"  )

◆ PyDoc_STRVAR() [20/123]

PyDoc_STRVAR ( bpy_bmedge_is_convex_doc ,
"True when this edge joins two convex faces,
depends on a valid face normal(read-only).\n" "\n" ":type:bool\n"  )

◆ PyDoc_STRVAR() [21/123]

PyDoc_STRVAR ( bpy_bmedge_is_manifold_doc ,
"True when this edge is manifold (read-only).\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [22/123]

PyDoc_STRVAR ( bpy_bmedge_is_wire_doc ,
"True when this edge is not connected to any faces (read-only).\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [23/123]

PyDoc_STRVAR ( bpy_bmedge_link_faces_doc ,
"Faces connected to this edge,
(read-only).\n" "\n" ":type::class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMFace`\n"  )

◆ PyDoc_STRVAR() [24/123]

PyDoc_STRVAR ( bpy_bmedge_link_loops_doc ,
"Loops connected to this edge,
(read-only).\n" "\n" ":type::class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMLoop`\n"  )

◆ PyDoc_STRVAR() [25/123]

PyDoc_STRVAR ( bpy_bmedge_normal_update_doc ,
".. method:: normal_update()\n" "\n" " Update normals of all connected faces and the edge verts.\n" "\n" " .. note::\n" "\n" " The normal of edge vertex will be a zero vector if vertex :attr:`is_wire` is True.\n"  )

◆ PyDoc_STRVAR() [26/123]

PyDoc_STRVAR ( bpy_bmedge_other_vert_doc ,
".. method:: other_vert(vert)\n" "\n" " Return the other vertex on this edge or None if the vertex is not used by this edge.\n" "\n" " :arg vert: a vert in this edge.\n" " :type vert: :class:`bmesh.types.BMVert`\n" " :return: The edges other vert.\n" " :rtype: :class:`bmesh.types.BMVert` | None\n"  )

◆ PyDoc_STRVAR() [27/123]

PyDoc_STRVAR ( bpy_bmedge_verts_doc ,
"Verts this edge uses always 2,
(read-only).\n" "\n" ":type::class:`bmesh.types.BMElemSeq` of " ":class:`bmesh.types.BMVert`\n"  )

◆ PyDoc_STRVAR() [28/123]

PyDoc_STRVAR ( bpy_bmedgeseq_doc ,
"This meshes edge sequence (read-only).\n" "\n" ":type: :class:`bmesh.types.BMEdgeSeq`\n"  )

◆ PyDoc_STRVAR() [29/123]

PyDoc_STRVAR ( bpy_bmedgeseq_get__method_doc ,
".. method:: get(verts, fallback=None)\n" "\n" " Return an edge which uses the **verts** passed.\n" "\n" " :arg verts: Sequence of verts.\n" " :type verts: Sequence\n" " :arg fallback: Return this value if nothing is found.\n" " :return: The edge found or None\n" " :rtype: :class:`bmesh.types.BMEdge`\n" [:class:`bmesh.types.BMVert`] )

◆ PyDoc_STRVAR() [30/123]

PyDoc_STRVAR ( bpy_bmedgeseq_new_doc ,
".. method:: new(verts, example=None)\n" "\n" " Create a new edge from a given pair of verts.\n" "\n" " :arg verts: Vertex pair.\n" " :type verts: Sequence\n" " :arg example: Existing edge to initialize settings (optional argument).\n" " :type example: :class:`bmesh.types.BMEdge`\n" " :return: The newly created edge.\n" " :rtype: :class:`bmesh.types.BMEdge`\n" [:class:`bmesh.types.BMVert`] )

◆ PyDoc_STRVAR() [31/123]

PyDoc_STRVAR ( bpy_bmedgeseq_remove_doc ,
".. method:: remove(edge)\n" "\n" " Remove an edge.\n" "\n" " :type edge: :class:`bmesh.types.BMEdge`\n"  )

◆ PyDoc_STRVAR() [32/123]

PyDoc_STRVAR ( bpy_bmelemseq_doc ,
"General sequence type used for accessing any sequence of\n" ":class:`bmesh.types.BMVert` ,
" ":class:`bmesh.types.BMEdge` ,
" ":class:`bmesh.types.BMFace` ,
" ":class:`bmesh.types.BMLoop`.\n" "\n" "When accessed via " ":class:`bmesh.types.BMesh.verts` ,
" ":class:`bmesh.types.BMesh.edges` ,
" ":class:`bmesh.types.BMesh.faces`\n" "there are also functions to create/remove items.\n"  )

◆ PyDoc_STRVAR() [33/123]

PyDoc_STRVAR ( bpy_bmelemseq_ensure_lookup_table_doc ,
".. method:: ensure_lookup_table()\n" "\n" " Ensure internal data needed for int subscription is initialized with " "verts/edges/ faces,
eg ``bm.verts``.\n" "\n" " This needs to be called again after adding/removing data in this sequence.\n" [index] )

◆ PyDoc_STRVAR() [34/123]

PyDoc_STRVAR ( bpy_bmelemseq_index_update_doc ,
".. method:: index_update()\n" "\n" " Initialize the index values of this sequence.\n" "\n" " This is the equivalent of looping over all elements and assigning the index values.\n" "\n" " .. code-block:: python\n" "\n" " for index,
ele in enumerate(sequence):\n" " ele. index = index\n" "\n" "   .. note::\n" "\n" "      Running this on sequences besides " ":class:`bmesh.types.BMesh.verts`,
" ":class:`bmesh.types.BMesh.edges` ,
" ":class:`bmesh.types.BMesh.faces`\n" " works but won 't result in each element having a valid index,
instead its order in the " "sequence will be set.\n"  )

◆ PyDoc_STRVAR() [35/123]

PyDoc_STRVAR ( bpy_bmelemseq_layers_edge_doc ,
"custom-data layers (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLayerAccessEdge`\n"  )

◆ PyDoc_STRVAR() [36/123]

PyDoc_STRVAR ( bpy_bmelemseq_layers_face_doc ,
"custom-data layers (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLayerAccessFace`\n"  )

◆ PyDoc_STRVAR() [37/123]

PyDoc_STRVAR ( bpy_bmelemseq_layers_loop_doc ,
"custom-data layers (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLayerAccessLoop`\n"  )

◆ PyDoc_STRVAR() [38/123]

PyDoc_STRVAR ( bpy_bmelemseq_layers_vert_doc ,
"custom-data layers (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLayerAccessVert`\n"  )

◆ PyDoc_STRVAR() [39/123]

PyDoc_STRVAR ( bpy_bmelemseq_sort_doc ,
".. method:: sort(*, key=None, reverse=False)\n" "\n" " Sort the elements of this sequence,
using an optional custom sort key.\n" " Indices of elements are not changed,
:class:`bmesh.types.BMElemSeq.index_update` " "can be used for that.\n" "\n" " :arg key:The key that sets the ordering of the elements.\n" " :type key:Callable [[" ":class:`bmesh.types.BMVert`|" ":class:`bmesh.types.BMEdge`|" ":class:`bmesh.types.BMFace`],
int]|None\n" " :arg reverse:Reverse the order of the elements\n" " :type reverse:bool\n" "\n" " .. note::\n" "\n" " When the 'key' argument is not provided,
the elements are reordered following their " "current index value.\n" " In particular this can be used by setting indices manually before calling this " "method.\n" "\n" " .. warning::\n" "\n" " Existing references to the N 'th element,
will continue to point the data at that " "index.\n"  )

◆ PyDoc_STRVAR() [40/123]

PyDoc_STRVAR ( bpy_bmesh_calc_loop_triangles_doc ,
".. method:: calc_loop_triangles()\n" "\n" " Calculate triangle tessellation from quads/ngons.\n" "\n" " :return: The triangulated faces.\n" " :rtype: list]\n" [tuple[:class:`bmesh.types.BMLoop`, " ":class:`bmesh.types.BMLoop`, " ":class:`bmesh.types.BMLoop`] )

◆ PyDoc_STRVAR() [41/123]

PyDoc_STRVAR ( bpy_bmesh_calc_volume_doc ,
".. method:: calc_volume(*, signed=False)\n" "\n" " Calculate mesh volume based on face normals.\n" "\n" " :arg signed: when signed is true,
negative values may be returned.\n" " :type signed:bool\n" " :return:The volume of the mesh.\n" " :rtype:float\n"  )

◆ PyDoc_STRVAR() [42/123]

PyDoc_STRVAR ( bpy_bmesh_clear_doc ,
".. method:: clear()\n" "\n" " Clear all mesh data.\n"  )

◆ PyDoc_STRVAR() [43/123]

PyDoc_STRVAR ( bpy_bmesh_copy_doc ,
".. method:: copy()\n" "\n" " :return: A copy of this BMesh.\n" " :rtype: :class:`bmesh.types.BMesh`\n"  )

◆ PyDoc_STRVAR() [44/123]

PyDoc_STRVAR ( bpy_bmesh_doc ,
"The BMesh data structure\n"  )

◆ PyDoc_STRVAR() [45/123]

PyDoc_STRVAR ( bpy_bmesh_free_doc ,
".. method:: free()\n" "\n" " Explicitly free the BMesh data from memory,
causing exceptions on further access.\n" "\n" " .. note::\n" "\n" " The BMesh is freed automatically,
typically when the script finishes executing.\n" " However in some cases its hard to predict when this will be and its useful to\n" " explicitly free the data.\n"  )

◆ PyDoc_STRVAR() [46/123]

PyDoc_STRVAR ( bpy_bmesh_from_mesh_doc ,
".. method:: from_mesh(mesh, *, " "face_normals=True, vertex_normals=True, use_shape_key=False, shape_key_index=0)\n" "\n" " Initialize this bmesh from existing mesh data-block.\n" "\n" " :arg mesh: The mesh data to load.\n" " :type mesh: :class:`bpy.types.Mesh`\n" " :type face_normals: bool\n" " :type vertex_normals: bool\n" " :arg use_shape_key: Use the locations from a shape key.\n" " :type use_shape_key: bool\n" " :arg shape_key_index: The shape key index to use.\n" " :type shape_key_index: int\n" "\n" " .. note::\n" "\n" " Multiple calls can be used to join multiple meshes.\n" "\n" " Custom-data layers are only copied from ``mesh`` on initialization.\n" " Further calls will copy custom-data to matching layers,
layers missing on the target " "mesh won 't be added.\n"  )

◆ PyDoc_STRVAR() [47/123]

PyDoc_STRVAR ( bpy_bmesh_from_object_doc ,
".. method:: from_object(object, depsgraph, *, " "cage=False, face_normals=True, vertex_normals=True)\n" "\n" " Initialize this bmesh from existing object data-block (only meshes are currently " "supported).\n" "\n" " :arg object: The object data to load.\n" " :type object: :class:`bpy.types.Object`\n" " :type depsgraph: :class:`bpy.types.Depsgraph`\n" " :arg cage: Get the mesh as a deformed cage.\n" " :type cage: bool\n" " :arg face_normals: Calculate face normals.\n" " :type face_normals: bool\n" " :arg vertex_normals: Calculate vertex normals.\n" " :type vertex_normals: bool\n"  )

◆ PyDoc_STRVAR() [48/123]

PyDoc_STRVAR ( bpy_bmesh_is_wrapped_doc ,
"True when this mesh is owned by blender (typically the editmode BMesh).\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [49/123]

PyDoc_STRVAR ( bpy_bmesh_normal_update_doc ,
".. method:: normal_update()\n" "\n" " Update normals of mesh faces and verts.\n" "\n" " .. note::\n" "\n" " The normal of any vertex where :attr:`is_wire` is True will be a zero vector.\n"  )

◆ PyDoc_STRVAR() [50/123]

PyDoc_STRVAR ( bpy_bmesh_select_flush_doc ,
".. method:: select_flush(select)\n" "\n" " Flush selection from vertices,
independent of the current selection mode.\n" "\n" " :arg select:flush selection or de-selected elements.\n" " :type select:bool\n"  )

◆ PyDoc_STRVAR() [51/123]

PyDoc_STRVAR ( bpy_bmesh_select_flush_mode_doc ,
".. method:: select_flush_mode(*, flush_down=False)\n" "\n" " Flush selection based on the current mode current " ":class:`bmesh.types.BMesh.select_mode`.\n" "\n" " :arg flush_down: Flush selection down from faces to edges & verts or from edges to verts. " "This option is ignored when vertex selection mode is enabled.\n" " :type flush_down: bool\n"  )

◆ PyDoc_STRVAR() [52/123]

PyDoc_STRVAR ( bpy_bmesh_select_history_doc ,
"Sequence of selected items (the last is displayed as active).\n" "\n" ":type: " ":class:`bmesh.types.BMEditSelSeq`\n"  )

◆ PyDoc_STRVAR() [53/123]

PyDoc_STRVAR ( bpy_bmesh_select_mode_doc ,
"The selection mode,
cannot be assigned an empty set.\n" "\n" ":type:set]\n" [Literal[" BPY_BM_HTYPE_NOLOOP "] )

References BPY_BM_HTYPE_NOLOOP.

◆ PyDoc_STRVAR() [54/123]

PyDoc_STRVAR ( bpy_bmesh_to_mesh_doc ,
".. method:: to_mesh(mesh)\n" "\n" " Writes this BMesh data into an existing Mesh data-block.\n" "\n" " :arg mesh: The mesh data to write into.\n" " :type mesh: :class:`bpy.types.Mesh`\n"  )

◆ PyDoc_STRVAR() [55/123]

PyDoc_STRVAR ( bpy_bmesh_transform_doc ,
".. method:: transform(matrix, *, filter=None)\n" "\n" " Transform the mesh (optionally filtering flagged data only).\n" "\n" " :arg matrix: 4x4x transform matrix.\n" " :type matrix: :class:`mathutils.Matrix`\n" " :arg filter: Flag to filter vertices." ".\n" " :type filter: set]\n" [Literal[" BPY_BM_HFLAG_ALL_STR "] )

References BPY_BM_HFLAG_ALL_STR.

◆ PyDoc_STRVAR() [56/123]

PyDoc_STRVAR ( bpy_bmesh_uv_select_flush_doc ,
".. method:: uv_select_flush(select)\n" "\n" " Flush selection from UV vertices to edges & faces independent of the selection mode.\n" "\n" " :arg select: Flush selection or de-selected elements.\n" " :type select: bool\n" "\n" " .. note::\n" "\n" " - |UV_SELECT_SYNC_TO_MESH_NEEDED|\n"  )

◆ PyDoc_STRVAR() [57/123]

PyDoc_STRVAR ( bpy_bmesh_uv_select_flush_mode_doc ,
".. method:: uv_select_flush_mode(*, flush_down=False)\n" "\n" " Flush selection based on the current mode current :class:`BMesh.select_mode`.\n" "\n" " :arg flush_down: Flush selection down from faces to edges & verts or from edges to verts. " "This option is ignored when vertex selection mode is enabled.\n" " :type flush_down: bool\n"  )

◆ PyDoc_STRVAR() [58/123]

PyDoc_STRVAR ( bpy_bmesh_uv_select_flush_shared_doc ,
".. method:: uv_select_flush_shared(select)\n" "\n" " Flush selection from UV vertices to contiguous UV's independent of the selection mode.\n" "\n" " :arg select: Flush selection or de-selected elements.\n" " :type select: bool\n" "\n" " .. note::\n" "\n" " - |UV_SELECT_SYNC_TO_MESH_NEEDED|\n"  )

◆ PyDoc_STRVAR() [59/123]

PyDoc_STRVAR ( bpy_bmesh_uv_select_foreach_set_doc ,
".. method:: uv_select_foreach_set(select, /, *, " "loop_verts=(), loop_edges=(), faces=(), sticky_select_mode='SHARED_LOCATION')\n" "\n" " Set the UV selection state for loop- vertices,
loop-edges &faces.\n" "\n" " This is a close equivalent to selecting in the UV editor.\n" "\n" " :arg select:The selection state to set.\n" " :type select:bool\n" " :arg loop_verts:Loop verts to operate on.\n" " :type loop_verts:Iterable\n" " :arg loop_edges:Loop edges to operate on.\n" " :type loop_edges:Iterable\n" " :arg faces:Faces to operate on.\n" " :type faces:Iterable\n" " :arg sticky_select_mode:See|UV_STICKY_SELECT_MODE_REF|.\n" " :type sticky_select_mode:|UV_STICKY_SELECT_MODE_TYPE|\n" "\n" " .. note::\n" "\n" " -|UV_SELECT_FLUSH_MODE_NEEDED|\n" " -|UV_SELECT_SYNC_TO_MESH_NEEDED|\n" [:class:`bmesh.types.BMLoop`][:class:`bmesh.types.BMLoop`][:class:`bmesh.types.BMFace`] )

◆ PyDoc_STRVAR() [60/123]

PyDoc_STRVAR ( bpy_bmesh_uv_select_foreach_set_from_mesh_doc ,
".. method:: uv_select_foreach_set_from_mesh(select, /, *, " "verts=(), edges=(), faces=(), sticky_select_mode='SHARED_LOCATION')\n" "\n" " Select or de-select mesh elements,
updating the UV selection.\n" "\n" " An equivalent to selecting from the 3D viewport " "for selection operations that support maintaining a synchronized UV selection.\n" "\n" " :arg select:The selection state to set.\n" " :type select:bool\n" " :arg verts:Verts to operate on.\n" " :type verts:Iterable\n" " :arg edges:Edges to operate on.\n" " :type edges:Iterable\n" " :arg faces:Faces to operate on.\n" " :type faces:Iterable\n" " :arg sticky_select_mode:See|UV_STICKY_SELECT_MODE_REF|.\n" " :type sticky_select_mode:|UV_STICKY_SELECT_MODE_TYPE|\n" [:class:`bmesh.types.BMVert`][:class:`bmesh.types.BMEdge`][:class:`bmesh.types.BMFace`] )

◆ PyDoc_STRVAR() [61/123]

PyDoc_STRVAR ( bpy_bmesh_uv_select_sync_from_mesh_doc ,
".. method:: uv_select_sync_from_mesh(*, " "sticky_select_mode='SHARED_LOCATION')\n" "\n" " Sync selection from mesh to UVs.\n" "\n" " :arg sticky_select_mode: Behavior when flushing from the mesh to UV selection " "|UV_STICKY_SELECT_MODE_REF|. " "This should only be used when preparing to create a UV selection.\n" " :type sticky_select_mode: |UV_STICKY_SELECT_MODE_TYPE|\n" "\n" " .. note::\n" "\n" " - |UV_SELECT_SYNC_TO_MESH_NEEDED|\n"  )

◆ PyDoc_STRVAR() [62/123]

PyDoc_STRVAR ( bpy_bmesh_uv_select_sync_to_mesh_doc ,
".. method:: uv_select_sync_to_mesh()\n" "\n" " Sync selection from UVs to the mesh.\n"  )

◆ PyDoc_STRVAR() [63/123]

PyDoc_STRVAR ( bpy_bmesh_uv_select_sync_valid_doc ,
"When true,
the UV selection has been synchronized. " "Setting to False means the UV selection will be ignored. " "While setting to true is supported it is up to the script author to " "ensure a correct selection state before doing so.\n" ":type:" "bool\n"  )

◆ PyDoc_STRVAR() [64/123]

PyDoc_STRVAR ( bpy_bmface_calc_area_doc ,
".. method:: calc_area()\n" "\n" " Return the area of the face.\n" "\n" " :return: Return the area of the face.\n" " :rtype: float\n"  )

◆ PyDoc_STRVAR() [65/123]

PyDoc_STRVAR ( bpy_bmface_calc_center_bounds_doc ,
".. method:: calc_center_bounds()\n" "\n" " Return bounds center of the face.\n" "\n" " :return: a 3D vector.\n" " :rtype: :class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [66/123]

PyDoc_STRVAR ( bpy_bmface_calc_center_median_doc ,
".. method:: calc_center_median()\n" "\n" " Return median center of the face.\n" "\n" " :return: a 3D vector.\n" " :rtype: :class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [67/123]

PyDoc_STRVAR ( bpy_bmface_calc_center_median_weighted_doc ,
".. method:: calc_center_median_weighted()\n" "\n" " Return median center of the face weighted by edge lengths.\n" "\n" " :return: a 3D vector.\n" " :rtype: :class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [68/123]

PyDoc_STRVAR ( bpy_bmface_calc_perimeter_doc ,
".. method:: calc_perimeter()\n" "\n" " Return the perimeter of the face.\n" "\n" " :return: Return the perimeter of the face.\n" " :rtype: float\n"  )

◆ PyDoc_STRVAR() [69/123]

PyDoc_STRVAR ( bpy_bmface_calc_tangent_edge_diagonal_doc ,
".. method:: calc_tangent_edge_diagonal()\n" "\n" " Return face tangent based on the edge farthest from any vertex.\n" "\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [70/123]

PyDoc_STRVAR ( bpy_bmface_calc_tangent_edge_doc ,
".. method:: calc_tangent_edge()\n" "\n" " Return face tangent based on longest edge.\n" "\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [71/123]

PyDoc_STRVAR ( bpy_bmface_calc_tangent_edge_pair_doc ,
".. method:: calc_tangent_edge_pair()\n" "\n" " Return face tangent based on the two longest disconnected edges.\n" "\n" " - Tris: Use the edge pair with the most similar lengths.\n" " - Quads: Use the longest edge pair.\n" " - NGons: Use the two longest disconnected edges.\n" "\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [72/123]

PyDoc_STRVAR ( bpy_bmface_calc_tangent_vert_diagonal_doc ,
".. method:: calc_tangent_vert_diagonal()\n" "\n" " Return face tangent based on the two most distant vertices.\n" "\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [73/123]

PyDoc_STRVAR ( bpy_bmface_copy_doc ,
".. method:: copy(*, verts=True, edges=True)\n" "\n" " Make a copy of this face.\n" "\n" " :arg verts: When set,
the faces verts will be duplicated too.\n" " :type verts:bool\n" " :arg edges:When set,
the faces edges will be duplicated too.\n" " :type edges:bool\n" " :return:The newly created face.\n" " :rtype::class:`bmesh.types.BMFace`\n"  )

◆ PyDoc_STRVAR() [74/123]

PyDoc_STRVAR ( bpy_bmface_copy_from_face_interp_doc ,
".. method:: copy_from_face_interp(face, vert=True)\n" "\n" " Interpolate the customdata from another face onto this one (faces should overlap).\n" "\n" " :arg face: The face to interpolate data from.\n" " :type face: :class:`bmesh.types.BMFace`\n" " :arg vert: When True,
also copy vertex data.\n" " :type vert:bool\n"  )

◆ PyDoc_STRVAR() [75/123]

PyDoc_STRVAR ( bpy_bmface_doc ,
"The BMesh face with 3 or more sides\n"  )

◆ PyDoc_STRVAR() [76/123]

PyDoc_STRVAR ( bpy_bmface_edges_doc ,
"Edges of this face,
(read-only).\n" "\n" ":type::class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMEdge`\n"  )

◆ PyDoc_STRVAR() [77/123]

PyDoc_STRVAR ( bpy_bmface_loops_doc ,
"Loops of this face,
(read-only).\n" "\n" ":type::class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMLoop`\n"  )

◆ PyDoc_STRVAR() [78/123]

PyDoc_STRVAR ( bpy_bmface_material_index_doc ,
"The face's material index.\n" "\n" ":type: int\n"  )

◆ PyDoc_STRVAR() [79/123]

PyDoc_STRVAR ( bpy_bmface_normal_doc ,
"The normal for this face as a 3D,
wrapped vector.\n" "\n" ":type::class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [80/123]

PyDoc_STRVAR ( bpy_bmface_normal_flip_doc ,
".. method:: normal_flip()\n" "\n" " Reverses winding of a face,
which flips its normal.\n"  )

◆ PyDoc_STRVAR() [81/123]

PyDoc_STRVAR ( bpy_bmface_normal_update_doc ,
".. method:: normal_update()\n" "\n" " Update face normal based on the positions of the face verts.\n" " This does not update the normals of face verts.\n"  )

◆ PyDoc_STRVAR() [82/123]

PyDoc_STRVAR ( bpy_bmface_uv_select_set_doc ,
".. method:: uv_select_set(select)\n" "\n" " Select the face.\n" "\n" " :arg select: Select or de-select.\n" " :type select: bool\n" "\n" " .. note::\n" "\n" " Currently this only flushes down,
so selecting a face will select all its " "vertices but de-selecting a vertex " " won 't de-select all the faces that use it,
before finishing with a mesh " "typically flushing is still needed.\n"  )

◆ PyDoc_STRVAR() [83/123]

PyDoc_STRVAR ( bpy_bmface_verts_doc ,
"Verts of this face,
(read-only).\n" "\n" ":type::class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMVert`\n"  )

◆ PyDoc_STRVAR() [84/123]

PyDoc_STRVAR ( bpy_bmfaceseq_active_doc ,
"active face.\n" "\n" ":type: :class:`bmesh.types.BMFace` | None\n"  )

◆ PyDoc_STRVAR() [85/123]

PyDoc_STRVAR ( bpy_bmfaceseq_doc ,
"This meshes face sequence (read-only).\n" "\n" ":type: :class:`bmesh.types.BMFaceSeq`\n"  )

◆ PyDoc_STRVAR() [86/123]

PyDoc_STRVAR ( bpy_bmfaceseq_get__method_doc ,
".. method:: get(verts, fallback=None)\n" "\n" " Return a face which uses the **verts** passed.\n" "\n" " :arg verts: Sequence of verts.\n" " :type verts: Sequence\n" " :arg fallback: Return this value if nothing is found.\n" " :return: The face found or None\n" " :rtype: :class:`bmesh.types.BMFace`\n" [:class:`bmesh.types.BMVert`] )

◆ PyDoc_STRVAR() [87/123]

PyDoc_STRVAR ( bpy_bmfaceseq_new_doc ,
".. method:: new(verts, example=None)\n" "\n" " Create a new face from a given set of verts.\n" "\n" " :arg verts: Sequence of 3 or more verts.\n" " :type verts: Sequence\n" " :arg example: Existing face to initialize settings (optional argument).\n" " :type example: :class:`bmesh.types.BMFace`\n" " :return: The newly created face.\n" " :rtype: :class:`bmesh.types.BMFace`\n" [:class:`bmesh.types.BMVert`] )

◆ PyDoc_STRVAR() [88/123]

PyDoc_STRVAR ( bpy_bmfaceseq_remove_doc ,
".. method:: remove(face)\n" "\n" " Remove a face.\n" "\n" " :type face: :class:`bmesh.types.BMFace`\n"  )

◆ PyDoc_STRVAR() [89/123]

PyDoc_STRVAR ( bpy_bmiter_doc ,
"Internal BMesh type for looping over verts/faces/ edges,
\n" "used for iterating over :class:`bmesh.types.BMElemSeq` types.\n"  )

◆ PyDoc_STRVAR() [90/123]

PyDoc_STRVAR ( bpy_bmloop_calc_angle_doc ,
".. method:: calc_angle()\n" "\n" " Return the angle at this loops corner of the face.\n" " This is calculated so sharper corners give lower angles.\n" "\n" " :return: The angle in radians.\n" " :rtype: float\n"  )

◆ PyDoc_STRVAR() [91/123]

PyDoc_STRVAR ( bpy_bmloop_calc_normal_doc ,
".. method:: calc_normal()\n" "\n" " Return normal at this loops corner of the face.\n" " Falls back to the face normal for straight lines.\n" "\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [92/123]

PyDoc_STRVAR ( bpy_bmloop_calc_tangent_doc ,
".. method:: calc_tangent()\n" "\n" " Return the tangent at this loops corner of the face (pointing inward into the face).\n" " Falls back to the face normal for straight lines.\n" "\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [93/123]

PyDoc_STRVAR ( bpy_bmloop_copy_from_face_interp_doc ,
".. method:: copy_from_face_interp(face, vert=True, multires=True)\n" "\n" " Interpolate the customdata from a face onto this loop (the loops vert should " "overlap the face).\n" "\n" " :arg face: The face to interpolate data from.\n" " :type face: :class:`bmesh.types.BMFace`\n" " :arg vert: When enabled,
interpolate the loops vertex data(optional).\n" " :type vert:bool\n" " :arg multires:When enabled,
interpolate the loops multires data(optional).\n" " :type multires:bool\n"  )

◆ PyDoc_STRVAR() [94/123]

PyDoc_STRVAR ( bpy_bmloop_doc ,
"This is normally accessed from :class:`bmesh.types.BMFace.loops` where each face loop " "represents a corner of the face.\n"  )

◆ PyDoc_STRVAR() [95/123]

PyDoc_STRVAR ( bpy_bmloop_edge_doc ,
"The loop's edge between this loop and the next,
(read-only).\n" "\n" ":type::class:`bmesh.types.BMEdge`\n"  )

◆ PyDoc_STRVAR() [96/123]

PyDoc_STRVAR ( bpy_bmloop_face_doc ,
"The face this loop makes (read-only).\n" "\n" ":type: :class:`bmesh.types.BMFace`\n"  )

◆ PyDoc_STRVAR() [97/123]

PyDoc_STRVAR ( bpy_bmloop_is_convex_doc ,
"True when this loop is at the convex corner of a face,
depends on a valid face " "normal(read-only).\n" "\n" ":type:bool\n"  )

◆ PyDoc_STRVAR() [98/123]

PyDoc_STRVAR ( bpy_bmloop_link_loop_next_doc ,
"The next face corner (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLoop`\n"  )

◆ PyDoc_STRVAR() [99/123]

PyDoc_STRVAR ( bpy_bmloop_link_loop_prev_doc ,
"The previous face corner (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLoop`\n"  )

◆ PyDoc_STRVAR() [100/123]

PyDoc_STRVAR ( bpy_bmloop_link_loop_radial_next_doc ,
"The next loop around the edge (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLoop`\n"  )

◆ PyDoc_STRVAR() [101/123]

PyDoc_STRVAR ( bpy_bmloop_link_loop_radial_prev_doc ,
"The previous loop around the edge (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLoop`\n"  )

◆ PyDoc_STRVAR() [102/123]

PyDoc_STRVAR ( bpy_bmloop_uv_select_edge_set_doc ,
".. method:: uv_select_edge_set(select)\n" "\n" " Set the UV edge selection state.\n" "\n" " :arg select: Select or de-select.\n" " :type select: bool\n" "\n" " .. note::\n" "\n" " This only flushes down,
so selecting an edge will select all its " "vertices but de-selecting a vertex " "won 't de-select the faces that use it,
before finishing with a mesh " "typically flushing with :class:`bmesh.types.BMesh.uv_select_flush_mode` is still needed.\n"  )

◆ PyDoc_STRVAR() [103/123]

PyDoc_STRVAR ( bpy_bmloop_uv_select_vert_set_doc ,
".. method:: uv_select_vert_set(select)\n" "\n" " Select the UV vertex.\n" "\n" " :arg select: Select or de-select.\n" " :type select: bool\n" "\n" " .. note::\n" "\n" " Currently this only flushes down,
so selecting an edge will select all its " "vertices but de-selecting a vertex " " won 't de-select the edges &faces that use it,
before finishing with a mesh " "typically flushing with :class:`bmesh.types.BMesh.uv_select_flush_mode` is still needed.\n"  )

◆ PyDoc_STRVAR() [104/123]

PyDoc_STRVAR ( bpy_bmloop_vert_doc ,
"The loop's vertex (read-only).\n" "\n" ":type: :class:`bmesh.types.BMVert`\n"  )

◆ PyDoc_STRVAR() [105/123]

PyDoc_STRVAR ( bpy_bmloops_link_loops_doc ,
"Loops connected to this loop,
(read-only).\n" "\n" ":type::class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMLoop`\n"  )

◆ PyDoc_STRVAR() [106/123]

PyDoc_STRVAR ( bpy_bmloopseq_doc ,
"This meshes loops (read-only).\n" "\n" ":type: :class:`bmesh.types.BMLoopSeq`\n" "\n" ".. note::\n" "\n" " Loops must be accessed via faces,
this is only exposed for layer access.\n"  )

◆ PyDoc_STRVAR() [107/123]

PyDoc_STRVAR ( bpy_bmvert_calc_edge_angle_doc ,
".. method:: calc_edge_angle(fallback=None)\n" "\n" " Return the angle between this vert's two connected edges.\n" "\n" " :arg fallback: return this when the vert doesn't have 2 edges\n" " (instead of raising a :exc:`ValueError`).\n" " :type fallback: Any\n" " :return: Angle between edges in radians.\n" " :rtype: float\n"  )

◆ PyDoc_STRVAR() [108/123]

PyDoc_STRVAR ( bpy_bmvert_calc_shell_factor_doc ,
".. method:: calc_shell_factor()\n" "\n" " Return a multiplier calculated based on the sharpness of the vertex.\n" " Where a flat surface gives 1. 0,
and higher values sharper edges.\n" " This is used to maintain shell thickness when offsetting verts along their normals.\n" "\n" " :return:offset multiplier\n" " :rtype:float\n"  )

◆ PyDoc_STRVAR() [109/123]

PyDoc_STRVAR ( bpy_bmvert_co_doc ,
"The coordinates for this vertex as a 3D,
wrapped vector.\n" "\n" ":type:" ":class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [110/123]

PyDoc_STRVAR ( bpy_bmvert_copy_from_face_interp_doc ,
".. method:: copy_from_face_interp(face)\n" "\n" " Interpolate the customdata from a face onto this loop (the loops vert should " "overlap the face).\n" "\n" " :arg face: The face to interpolate data from.\n" " :type face: :class:`bmesh.types.BMFace`\n"  )

◆ PyDoc_STRVAR() [111/123]

PyDoc_STRVAR ( bpy_bmvert_copy_from_vert_interp_doc ,
".. method:: copy_from_vert_interp(vert_pair, fac)\n" "\n" " Interpolate the customdata from a vert between 2 other verts.\n" "\n" " :arg vert_pair: The verts between which to interpolate data from.\n" " :type vert_pair: Sequence\n" " :type fac: float\n" [:class:`bmesh.types.BMVert`] )

◆ PyDoc_STRVAR() [112/123]

PyDoc_STRVAR ( bpy_bmvert_doc ,
"The BMesh vertex type\n"  )

◆ PyDoc_STRVAR() [113/123]

PyDoc_STRVAR ( bpy_bmvert_is_boundary_doc ,
"True when this vertex is connected to boundary edges (read-only).\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [114/123]

PyDoc_STRVAR ( bpy_bmvert_is_manifold_doc ,
"True when this vertex is manifold (read-only).\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [115/123]

PyDoc_STRVAR ( bpy_bmvert_is_wire_doc ,
"True when this vertex is not connected to any faces (read-only).\n" "\n" ":type: bool\n"  )

◆ PyDoc_STRVAR() [116/123]

PyDoc_STRVAR ( bpy_bmvert_link_edges_doc ,
"Edges connected to this vertex (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMEdge`\n"  )

◆ PyDoc_STRVAR() [117/123]

PyDoc_STRVAR ( bpy_bmvert_link_faces_doc ,
"Faces connected to this vertex (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMFace`\n"  )

◆ PyDoc_STRVAR() [118/123]

PyDoc_STRVAR ( bpy_bmvert_link_loops_doc ,
"Loops that use this vertex (read-only).\n" "\n" ":type: :class:`bmesh.types.BMElemSeq` of :class:`bmesh.types.BMLoop`\n"  )

◆ PyDoc_STRVAR() [119/123]

PyDoc_STRVAR ( bpy_bmvert_normal_doc ,
"The normal for this vertex as a 3D,
wrapped vector.\n" "\n" ":type::class:`mathutils.Vector`\n"  )

◆ PyDoc_STRVAR() [120/123]

PyDoc_STRVAR ( bpy_bmvert_normal_update_doc ,
".. method:: normal_update()\n" "\n" " Update vertex normal.\n" " This does not update the normals of adjoining faces.\n" "\n" " .. note::\n" "\n" " The vertex normal will be a zero vector if vertex :attr:`is_wire` is True.\n"  )

◆ PyDoc_STRVAR() [121/123]

PyDoc_STRVAR ( bpy_bmvertseq_doc ,
"This meshes vert sequence (read-only).\n" "\n" ":type: :class:`bmesh.types.BMVertSeq`\n"  )

◆ PyDoc_STRVAR() [122/123]

PyDoc_STRVAR ( bpy_bmvertseq_new_doc ,
".. method:: new(co=(0.0, 0.0, 0.0), example=None)\n" "\n" " Create a new vertex.\n" "\n" " :arg co: The initial location of the vertex (optional argument).\n" " :type co: float triplet\n" " :arg example: Existing vert to initialize settings.\n" " :type example: :class:`bmesh.types.BMVert`\n" " :return: The newly created vertex.\n" " :rtype: :class:`bmesh.types.BMVert`\n"  )

◆ PyDoc_STRVAR() [123/123]

PyDoc_STRVAR ( bpy_bmvertseq_remove_doc ,
".. method:: remove(vert)\n" "\n" " Remove a vert.\n" "\n" " :type vert: :class:`bmesh.types.BMVert`\n"  )

Variable Documentation

◆ bpy_bm_elem_as_mapping

PyMappingMethods bpy_bm_elem_as_mapping
static
Initial value:
= {
(lenfunc) nullptr,
(binaryfunc)bpy_bmelem_subscript,
(objobjargproc)bpy_bmelem_ass_subscript,
}
static int bpy_bmelem_ass_subscript(BPy_BMElem *self, BPy_BMLayerItem *key, PyObject *value)
static PyObject * bpy_bmelem_subscript(BPy_BMElem *self, BPy_BMLayerItem *key)

Definition at line 4419 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ bpy_bm_hflag_all_flags

PyC_FlagSet bpy_bm_hflag_all_flags[]
Initial value:
= {
{BM_ELEM_SELECT, "SELECT"},
{BM_ELEM_HIDDEN, "HIDE"},
{BM_ELEM_SEAM, "SEAM"},
{BM_ELEM_SMOOTH, "SMOOTH"},
{BM_ELEM_TAG, "TAG"},
{0, nullptr},
}
@ BM_ELEM_HIDDEN
@ BM_ELEM_SEAM
@ BM_ELEM_SELECT
@ BM_ELEM_SMOOTH
@ BM_ELEM_TAG

Definition at line 81 of file bmesh_py_types.cc.

Referenced by bpy_bmesh_transform().

◆ bpy_bm_htype_all_flags

PyC_FlagSet bpy_bm_htype_all_flags[]
Initial value:
= {
{BM_VERT, "VERT"},
{BM_LOOP, "EDGE"},
{BM_FACE, "FACE"},
{BM_LOOP, "LOOP"},
{0, nullptr},
}
@ BM_LOOP
#define BM_FACE
#define BM_VERT

Definition at line 67 of file bmesh_py_types.cc.

◆ bpy_bm_htype_vert_edge_face_flags

PyC_FlagSet bpy_bm_htype_vert_edge_face_flags[]
Initial value:
= {
{BM_VERT, "VERT"},
{BM_EDGE, "EDGE"},
{BM_FACE, "FACE"},
{0, nullptr},
}
#define BM_EDGE

Definition at line 60 of file bmesh_py_types.cc.

◆ bpy_bm_scene_vert_edge_face_flags

PyC_FlagSet bpy_bm_scene_vert_edge_face_flags[]
Initial value:
= {
{1, "VERT"},
{2, "EDGE"},
{4, "FACE"},
{0, nullptr},
}

Definition at line 53 of file bmesh_py_types.cc.

Referenced by bpy_bmesh_select_mode_get(), and bpy_bmesh_select_mode_set().

◆ BPy_BM_types_module_def

PyModuleDef BPy_BM_types_module_def
static
Initial value:
= {
"bmesh.types",
BPy_BM_types_module_doc,
0,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
}

Definition at line 4867 of file bmesh_py_types.cc.

Referenced by BPyInit_bmesh_types().

◆ bpy_bm_uv_select_sticky_items

PyC_StringEnumItems bpy_bm_uv_select_sticky_items[]
static
Initial value:
= {
{UV_STICKY_LOCATION, "SHARED_LOCATION"},
{UV_STICKY_DISABLE, "DISABLED"},
{UV_STICKY_VERT, "SHARED_VERTEX"},
{0, nullptr},
}
@ UV_STICKY_VERT
@ UV_STICKY_LOCATION
@ UV_STICKY_DISABLE

Definition at line 92 of file bmesh_py_types.cc.

Referenced by bpy_bmesh_uv_select_foreach_set(), bpy_bmesh_uv_select_foreach_set_from_mesh(), and bpy_bmesh_uv_select_sync_from_mesh().

◆ bpy_bmedge_getseters

PyGetSetDef bpy_bmedge_getseters[]
static

Definition at line 936 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ bpy_bmedge_methods

PyMethodDef bpy_bmedge_methods[]
static
Initial value:
= {
{"select_set", (PyCFunction)bpy_bm_elem_select_set, METH_O, bpy_bm_elem_select_set_doc},
{"hide_set", (PyCFunction)bpy_bm_elem_hide_set, METH_O, bpy_bm_elem_hide_set_doc},
{"copy_from", (PyCFunction)bpy_bm_elem_copy_from, METH_O, bpy_bm_elem_copy_from_doc},
{"other_vert", (PyCFunction)bpy_bmedge_other_vert, METH_O, bpy_bmedge_other_vert_doc},
{"calc_length", (PyCFunction)bpy_bmedge_calc_length, METH_NOARGS, bpy_bmedge_calc_length_doc},
{"calc_face_angle",
METH_VARARGS,
bpy_bmedge_calc_face_angle_doc},
{"calc_face_angle_signed",
METH_VARARGS,
bpy_bmedge_calc_face_angle_signed_doc},
{"calc_tangent",
METH_VARARGS,
bpy_bmedge_calc_tangent_doc},
{"normal_update",
METH_NOARGS,
bpy_bmedge_normal_update_doc},
{nullptr, nullptr, 0, nullptr},
}
static PyObject * bpy_bmedge_calc_face_angle_signed(BPy_BMEdge *self, PyObject *args)
static PyObject * bpy_bm_elem_hide_set(BPy_BMElem *self, PyObject *value)
static PyObject * bpy_bmedge_calc_face_angle(BPy_BMEdge *self, PyObject *args)
static PyObject * bpy_bmedge_normal_update(BPy_BMEdge *self)
static PyObject * bpy_bmedge_calc_tangent(BPy_BMEdge *self, PyObject *args)
static PyObject * bpy_bmedge_calc_length(BPy_BMEdge *self)
static PyObject * bpy_bm_elem_select_set(BPy_BMElem *self, PyObject *value)
static PyObject * bpy_bmedge_other_vert(BPy_BMEdge *self, BPy_BMVert *value)
static PyObject * bpy_bm_elem_copy_from(BPy_BMElem *self, BPy_BMElem *value)

Definition at line 3927 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ BPy_BMEdge_Type

◆ bpy_bmedgeseq_getseters

PyGetSetDef bpy_bmedgeseq_getseters[]
static
Initial value:
= {
{"layers",
(setter) nullptr,
bpy_bmelemseq_layers_edge_doc,
(void *)BM_EDGE},
{nullptr, nullptr, nullptr, nullptr, nullptr}
}
static PyObject * bpy_bmelemseq_layers_get(BPy_BMElemSeq *self, void *htype)

Definition at line 1170 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ bpy_bmedgeseq_methods

PyMethodDef bpy_bmedgeseq_methods[]
static
Initial value:
= {
{"new", (PyCFunction)bpy_bmedgeseq_new, METH_VARARGS, bpy_bmedgeseq_new_doc},
{"remove", (PyCFunction)bpy_bmedgeseq_remove, METH_O, bpy_bmedgeseq_remove_doc},
{"get", (PyCFunction)bpy_bmedgeseq_get__method, METH_VARARGS, bpy_bmedgeseq_get__method_doc},
{"index_update",
METH_NOARGS,
bpy_bmelemseq_index_update_doc},
{"ensure_lookup_table",
METH_NOARGS,
bpy_bmelemseq_ensure_lookup_table_doc},
{"sort",
(PyCFunction)bpy_bmelemseq_sort,
METH_VARARGS | METH_KEYWORDS,
bpy_bmelemseq_sort_doc},
{nullptr, nullptr, 0, nullptr},
}
static PyObject * bpy_bmedgeseq_remove(BPy_BMElemSeq *self, BPy_BMEdge *value)
static PyObject * bpy_bmedgeseq_get__method(BPy_BMElemSeq *self, PyObject *args)
static PyObject * bpy_bmelemseq_index_update(BPy_BMElemSeq *self)
static PyObject * bpy_bmedgeseq_new(BPy_BMElemSeq *self, PyObject *args)
static PyObject * bpy_bmelemseq_sort(BPy_BMElemSeq *self, PyObject *args, PyObject *kw)
static PyObject * bpy_bmelemseq_ensure_lookup_table(BPy_BMElemSeq *self)

Definition at line 4067 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ BPy_BMEdgeSeq_Type

PyTypeObject BPy_BMEdgeSeq_Type

◆ bpy_bmelemseq_as_mapping

PyMappingMethods bpy_bmelemseq_as_mapping
static
Initial value:
= {
(objobjargproc) nullptr,
}
static PyObject * bpy_bmelemseq_subscript(BPy_BMElemSeq *self, PyObject *key)
static Py_ssize_t bpy_bmelemseq_length(BPy_BMElemSeq *self)

Definition at line 4412 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ bpy_bmelemseq_as_sequence

PySequenceMethods bpy_bmelemseq_as_sequence
static
Initial value:
= {
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
}
static PyObject * bpy_bmelemseq_subscript_int(BPy_BMElemSeq *self, Py_ssize_t keynum)
static int bpy_bmelemseq_contains(BPy_BMElemSeq *self, PyObject *value)

Definition at line 4398 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ bpy_bmelemseq_methods

PyMethodDef bpy_bmelemseq_methods[]
static
Initial value:
= {
{"index_update",
METH_NOARGS,
bpy_bmelemseq_index_update_doc},
{nullptr, nullptr, 0, nullptr},
}

Definition at line 4038 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types(), and BPy_BM_init_types_customdata().

◆ BPy_BMElemSeq_Type

PyTypeObject BPy_BMElemSeq_Type

◆ bpy_bmesh_getseters

PyGetSetDef bpy_bmesh_getseters[]
static

Definition at line 838 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ bpy_bmesh_methods

PyMethodDef bpy_bmesh_methods[]
static

Definition at line 3820 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ BPy_BMesh_Type

◆ bpy_bmface_getseters

PyGetSetDef bpy_bmface_getseters[]
static

Definition at line 1015 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ bpy_bmface_methods

PyMethodDef bpy_bmface_methods[]
static

Definition at line 3956 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ BPy_BMFace_Type

◆ bpy_bmfaceseq_getseters

PyGetSetDef bpy_bmfaceseq_getseters[]
static
Initial value:
= {
{"layers",
(setter) nullptr,
bpy_bmelemseq_layers_face_doc,
(void *)BM_FACE},
{"active",
bpy_bmfaceseq_active_doc,
nullptr},
{nullptr, nullptr, nullptr, nullptr, nullptr}
}
static int bpy_bmfaceseq_active_set(BPy_BMElem *self, PyObject *value, void *)
static PyObject * bpy_bmfaceseq_active_get(BPy_BMElemSeq *self, void *)

Definition at line 1178 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ bpy_bmfaceseq_methods

PyMethodDef bpy_bmfaceseq_methods[]
static
Initial value:
= {
{"new", (PyCFunction)bpy_bmfaceseq_new, METH_VARARGS, bpy_bmfaceseq_new_doc},
{"remove", (PyCFunction)bpy_bmfaceseq_remove, METH_O, bpy_bmfaceseq_remove_doc},
{"get", (PyCFunction)bpy_bmfaceseq_get__method, METH_VARARGS, bpy_bmfaceseq_get__method_doc},
{"index_update",
METH_NOARGS,
bpy_bmelemseq_index_update_doc},
{"ensure_lookup_table",
METH_NOARGS,
bpy_bmelemseq_ensure_lookup_table_doc},
{"sort",
(PyCFunction)bpy_bmelemseq_sort,
METH_VARARGS | METH_KEYWORDS,
bpy_bmelemseq_sort_doc},
{nullptr, nullptr, 0, nullptr},
}
static PyObject * bpy_bmfaceseq_remove(BPy_BMElemSeq *self, BPy_BMFace *value)
static PyObject * bpy_bmfaceseq_get__method(BPy_BMElemSeq *self, PyObject *args)
static PyObject * bpy_bmfaceseq_new(BPy_BMElemSeq *self, PyObject *args)

Definition at line 4089 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ BPy_BMFaceSeq_Type

PyTypeObject BPy_BMFaceSeq_Type

◆ BPy_BMIter_Type

PyTypeObject BPy_BMIter_Type

◆ bpy_bmloop_getseters

PyGetSetDef bpy_bmloop_getseters[]
static

Definition at line 1084 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ bpy_bmloop_methods

PyMethodDef bpy_bmloop_methods[]
static
Initial value:
= {
{"copy_from", (PyCFunction)bpy_bm_elem_copy_from, METH_O, bpy_bm_elem_copy_from_doc},
{"copy_from_face_interp",
METH_VARARGS,
bpy_bmloop_copy_from_face_interp_doc},
{"uv_select_vert_set",
METH_O,
bpy_bmloop_uv_select_vert_set_doc},
{"uv_select_edge_set",
METH_O,
bpy_bmloop_uv_select_edge_set_doc},
{"calc_angle", (PyCFunction)bpy_bmloop_calc_angle, METH_NOARGS, bpy_bmloop_calc_angle_doc},
{"calc_normal", (PyCFunction)bpy_bmloop_calc_normal, METH_NOARGS, bpy_bmloop_calc_normal_doc},
{"calc_tangent",
METH_NOARGS,
bpy_bmloop_calc_tangent_doc},
{nullptr, nullptr, 0, nullptr},
}
static PyObject * bpy_bmloop_calc_tangent(BPy_BMLoop *self)
static PyObject * bpy_bmloop_calc_normal(BPy_BMLoop *self)
static PyObject * bpy_bmloop_calc_angle(BPy_BMLoop *self)
static PyObject * bpy_bmloop_uv_select_vert_set(BPy_BMLoop *self, PyObject *value)
static PyObject * bpy_bmloop_uv_select_edge_set(BPy_BMLoop *self, PyObject *value)
static PyObject * bpy_bmloop_copy_from_face_interp(BPy_BMLoop *self, PyObject *args)

Definition at line 4013 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ BPy_BMLoop_Type

◆ bpy_bmloopseq_getseters

PyGetSetDef bpy_bmloopseq_getseters[]
static
Initial value:
= {
{"layers",
(setter) nullptr,
bpy_bmelemseq_layers_loop_doc,
(void *)BM_LOOP},
{nullptr, nullptr, nullptr, nullptr, nullptr}
}

Definition at line 1192 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ bpy_bmloopseq_methods

PyMethodDef bpy_bmloopseq_methods[]
static
Initial value:
= {
{nullptr, nullptr, 0, nullptr},
}

Definition at line 4111 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ BPy_BMLoopSeq_Type

PyTypeObject BPy_BMLoopSeq_Type

◆ bpy_bmvert_getseters

PyGetSetDef bpy_bmvert_getseters[]
static

Definition at line 872 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ bpy_bmvert_methods

PyMethodDef bpy_bmvert_methods[]
static
Initial value:
= {
{"select_set", (PyCFunction)bpy_bm_elem_select_set, METH_O, bpy_bm_elem_select_set_doc},
{"hide_set", (PyCFunction)bpy_bm_elem_hide_set, METH_O, bpy_bm_elem_hide_set_doc},
{"copy_from", (PyCFunction)bpy_bm_elem_copy_from, METH_O, bpy_bm_elem_copy_from_doc},
{"copy_from_face_interp",
METH_VARARGS,
bpy_bmvert_copy_from_face_interp_doc},
{"copy_from_vert_interp",
METH_VARARGS,
bpy_bmvert_copy_from_vert_interp_doc},
{"calc_edge_angle",
METH_VARARGS,
bpy_bmvert_calc_edge_angle_doc},
{"calc_shell_factor",
METH_NOARGS,
bpy_bmvert_calc_shell_factor_doc},
{"normal_update",
METH_NOARGS,
bpy_bmvert_normal_update_doc},
{nullptr, nullptr, 0, nullptr},
}
static PyObject * bpy_bmvert_normal_update(BPy_BMVert *self)
static PyObject * bpy_bmvert_calc_edge_angle(BPy_BMVert *self, PyObject *args)
static PyObject * bpy_bmvert_calc_shell_factor(BPy_BMVert *self)
static PyObject * bpy_bmvert_copy_from_vert_interp(BPy_BMVert *self, PyObject *args)
static PyObject * bpy_bmvert_copy_from_face_interp(BPy_BMVert *self, PyObject *args)

Definition at line 3897 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ BPy_BMVert_Type

◆ bpy_bmvertseq_getseters

PyGetSetDef bpy_bmvertseq_getseters[]
static
Initial value:
= {
{"layers",
(setter) nullptr,
bpy_bmelemseq_layers_vert_doc,
(void *)BM_VERT},
{nullptr, nullptr, nullptr, nullptr, nullptr}
}

Definition at line 1162 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ bpy_bmvertseq_methods

PyMethodDef bpy_bmvertseq_methods[]
static
Initial value:
= {
{"new", (PyCFunction)bpy_bmvertseq_new, METH_VARARGS, bpy_bmvertseq_new_doc},
{"remove", (PyCFunction)bpy_bmvertseq_remove, METH_O, bpy_bmvertseq_remove_doc},
{"index_update",
METH_NOARGS,
bpy_bmelemseq_index_update_doc},
{"ensure_lookup_table",
METH_NOARGS,
bpy_bmelemseq_ensure_lookup_table_doc},
{"sort",
(PyCFunction)bpy_bmelemseq_sort,
METH_VARARGS | METH_KEYWORDS,
bpy_bmelemseq_sort_doc},
{nullptr, nullptr, 0, nullptr},
}
static PyObject * bpy_bmvertseq_remove(BPy_BMElemSeq *self, BPy_BMVert *value)
static PyObject * bpy_bmvertseq_new(BPy_BMElemSeq *self, PyObject *args)

Definition at line 4047 of file bmesh_py_types.cc.

Referenced by BPy_BM_init_types().

◆ BPy_BMVertSeq_Type

PyTypeObject BPy_BMVertSeq_Type