Blender  V3.3
Macros | Functions | Variables
bmesh_py_types.c File Reference
#include "BLI_math.h"
#include "BLI_sort.h"
#include "DNA_material_types.h"
#include "DNA_mesh_types.h"
#include "DNA_object_types.h"
#include "BKE_customdata.h"
#include "BKE_global.h"
#include "BKE_lib_id.h"
#include "BKE_mesh.h"
#include "BKE_mesh_runtime.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"
#include "bmesh.h"
#include <Python.h>
#include "../mathutils/mathutils.h"
#include "../generic/py_capi_utils.h"
#include "../generic/python_utildefines.h"
#include "bmesh_py_types.h"
#include "bmesh_py_types_customdata.h"
#include "bmesh_py_types_meshdata.h"
#include "bmesh_py_types_select.h"

Go to the source code of this file.

Macros

#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: boolean")
 
 PyDoc_STRVAR (bpy_bm_elem_hide_doc, "Hidden state of this element.\n\n:type: boolean")
 
 PyDoc_STRVAR (bpy_bm_elem_tag_doc, "Generic attribute scripts can use for own logic\n\n:type: boolean")
 
 PyDoc_STRVAR (bpy_bm_elem_smooth_doc, "Smooth state of this element.\n\n:type: boolean")
 
 PyDoc_STRVAR (bpy_bm_elem_seam_doc, "Seam for UV unwrapping.\n\n:type: boolean")
 
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:`BMElemSeq.index_update`.\n")
 
static PyObject * bpy_bm_elem_index_get (BPy_BMElem *self, void *UNUSED(flag))
 
static int bpy_bm_elem_index_set (BPy_BMElem *self, PyObject *value, void *UNUSED(flag))
 
 PyDoc_STRVAR (bpy_bmvertseq_doc, "This meshes vert sequence (read-only).\n\n:type: :class:`BMVertSeq`")
 
static PyObject * bpy_bmvertseq_get (BPy_BMesh *self, void *UNUSED(closure))
 
 PyDoc_STRVAR (bpy_bmedgeseq_doc, "This meshes edge sequence (read-only).\n\n:type: :class:`BMEdgeSeq`")
 
static PyObject * bpy_bmedgeseq_get (BPy_BMesh *self, void *UNUSED(closure))
 
 PyDoc_STRVAR (bpy_bmfaceseq_doc, "This meshes face sequence (read-only).\n\n:type: :class:`BMFaceSeq`")
 
static PyObject * bpy_bmfaceseq_get (BPy_BMesh *self, void *UNUSED(closure))
 
 PyDoc_STRVAR (bpy_bmloopseq_doc, "This meshes loops (read-only).\n\n:type: :class:`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 *UNUSED(closure))
 
 PyDoc_STRVAR (bpy_bmvert_link_edges_doc, "Edges connected to this vertex (read-only).\n\n:type: :class:`BMElemSeq` of :class:`BMEdge`")
 
 PyDoc_STRVAR (bpy_bmvert_link_faces_doc, "Faces connected to this vertex (read-only).\n\n:type: :class:`BMElemSeq` of :class:`BMFace`")
 
 PyDoc_STRVAR (bpy_bmvert_link_loops_doc, "Loops that use this vertex (read-only).\n\n:type: :class:`BMElemSeq` of :class:`BMLoop`")
 
 PyDoc_STRVAR (bpy_bmedge_verts_doc, "Verts this edge uses (always 2), (read-only).\n\n:type: :class:`BMElemSeq` of " ":class:`BMVert`")
 
 PyDoc_STRVAR (bpy_bmedge_link_faces_doc, "Faces connected to this edge, (read-only).\n\n:type: :class:`BMElemSeq` of :class:`BMFace`")
 
 PyDoc_STRVAR (bpy_bmedge_link_loops_doc, "Loops connected to this edge, (read-only).\n\n:type: :class:`BMElemSeq` of :class:`BMLoop`")
 
 PyDoc_STRVAR (bpy_bmface_verts_doc, "Verts of this face, (read-only).\n\n:type: :class:`BMElemSeq` of :class:`BMVert`")
 
 PyDoc_STRVAR (bpy_bmface_edges_doc, "Edges of this face, (read-only).\n\n:type: :class:`BMElemSeq` of :class:`BMEdge`")
 
 PyDoc_STRVAR (bpy_bmface_loops_doc, "Loops of this face, (read-only).\n\n:type: :class:`BMElemSeq` of :class:`BMLoop`")
 
 PyDoc_STRVAR (bpy_bmloops_link_loops_doc, "Loops connected to this loop, (read-only).\n\n:type: :class:`BMElemSeq` of :class:`BMLoop`")
 
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: boolean")
 
static PyObject * bpy_bm_is_valid_get (BPy_BMGeneric *self)
 
 PyDoc_STRVAR (bpy_bmesh_is_wrapped_doc, "True when this mesh is owned by blender (typically the editmode BMesh).\n\n:type: boolean")
 
static PyObject * bpy_bmesh_is_wrapped_get (BPy_BMesh *self)
 
 PyDoc_STRVAR (bpy_bmesh_select_mode_doc, "The selection mode, values can be {'VERT', 'EDGE', 'FACE'}, can't be assigned an " "empty set.\n\n:type: set")
 
static PyObject * bpy_bmesh_select_mode_get (BPy_BMesh *self)
 
static int bpy_bmesh_select_mode_set (BPy_BMesh *self, PyObject *value)
 
 PyDoc_STRVAR (bpy_bmesh_select_history_doc, "Sequence of selected items (the last is displayed as active).\n\n:type: " ":class:`BMEditSelSeq`")
 
static PyObject * bpy_bmesh_select_history_get (BPy_BMesh *self)
 
static int bpy_bmesh_select_history_set (BPy_BMesh *self, PyObject *value)
 
 PyDoc_STRVAR (bpy_bmvert_co_doc, "The coordinates for this vertex as a 3D, wrapped vector.\n\n:type: " ":class:`mathutils.Vector`")
 
static PyObject * bpy_bmvert_co_get (BPy_BMVert *self)
 
static int bpy_bmvert_co_set (BPy_BMVert *self, PyObject *value)
 
 PyDoc_STRVAR (bpy_bmvert_normal_doc, "The normal for this vertex as a 3D, wrapped vector.\n\n:type: :class:`mathutils.Vector`")
 
static PyObject * bpy_bmvert_normal_get (BPy_BMVert *self)
 
static int bpy_bmvert_normal_set (BPy_BMVert *self, PyObject *value)
 
 PyDoc_STRVAR (bpy_bmvert_is_manifold_doc, "True when this vertex is manifold (read-only).\n\n:type: boolean")
 
static PyObject * bpy_bmvert_is_manifold_get (BPy_BMVert *self)
 
 PyDoc_STRVAR (bpy_bmvert_is_wire_doc, "True when this vertex is not connected to any faces (read-only).\n\n:type: boolean")
 
static PyObject * bpy_bmvert_is_wire_get (BPy_BMVert *self)
 
 PyDoc_STRVAR (bpy_bmvert_is_boundary_doc, "True when this vertex is connected to boundary edges (read-only).\n\n:type: boolean")
 
static PyObject * bpy_bmvert_is_boundary_get (BPy_BMVert *self)
 
 PyDoc_STRVAR (bpy_bmedge_is_manifold_doc, "True when this edge is manifold (read-only).\n\n:type: boolean")
 
static PyObject * bpy_bmedge_is_manifold_get (BPy_BMEdge *self)
 
 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: boolean")
 
static PyObject * bpy_bmedge_is_contiguous_get (BPy_BMEdge *self)
 
 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: boolean")
 
static PyObject * bpy_bmedge_is_convex_get (BPy_BMEdge *self)
 
 PyDoc_STRVAR (bpy_bmedge_is_wire_doc, "True when this edge is not connected to any faces (read-only).\n\n:type: boolean")
 
static PyObject * bpy_bmedge_is_wire_get (BPy_BMEdge *self)
 
 PyDoc_STRVAR (bpy_bmedge_is_boundary_doc, "True when this edge is at the boundary of a face (read-only).\n\n:type: boolean")
 
static PyObject * bpy_bmedge_is_boundary_get (BPy_BMEdge *self)
 
 PyDoc_STRVAR (bpy_bmface_normal_doc, "The normal for this face as a 3D, wrapped vector.\n\n:type: :class:`mathutils.Vector`")
 
static PyObject * bpy_bmface_normal_get (BPy_BMFace *self)
 
static int bpy_bmface_normal_set (BPy_BMFace *self, PyObject *value)
 
 PyDoc_STRVAR (bpy_bmface_material_index_doc, "The face's material index.\n\n:type: int")
 
static PyObject * bpy_bmface_material_index_get (BPy_BMFace *self)
 
static int bpy_bmface_material_index_set (BPy_BMFace *self, PyObject *value)
 
 PyDoc_STRVAR (bpy_bmloop_vert_doc, "The loop's vertex (read-only).\n\n:type: :class:`BMVert`")
 
static PyObject * bpy_bmloop_vert_get (BPy_BMLoop *self)
 
 PyDoc_STRVAR (bpy_bmloop_edge_doc, "The loop's edge (between this loop and the next), (read-only).\n\n:type: :class:`BMEdge`")
 
static PyObject * bpy_bmloop_edge_get (BPy_BMLoop *self)
 
 PyDoc_STRVAR (bpy_bmloop_face_doc, "The face this loop makes (read-only).\n\n:type: :class:`BMFace`")
 
static PyObject * bpy_bmloop_face_get (BPy_BMLoop *self)
 
 PyDoc_STRVAR (bpy_bmloop_link_loop_next_doc, "The next face corner (read-only).\n\n:type: :class:`BMLoop`")
 
static PyObject * bpy_bmloop_link_loop_next_get (BPy_BMLoop *self)
 
 PyDoc_STRVAR (bpy_bmloop_link_loop_prev_doc, "The previous face corner (read-only).\n\n:type: :class:`BMLoop`")
 
static PyObject * bpy_bmloop_link_loop_prev_get (BPy_BMLoop *self)
 
 PyDoc_STRVAR (bpy_bmloop_link_loop_radial_next_doc, "The next loop around the edge (read-only).\n\n:type: :class:`BMLoop`")
 
static PyObject * bpy_bmloop_link_loop_radial_next_get (BPy_BMLoop *self)
 
 PyDoc_STRVAR (bpy_bmloop_link_loop_radial_prev_doc, "The previous loop around the edge (read-only).\n\n:type: :class:`BMLoop`")
 
static PyObject * bpy_bmloop_link_loop_radial_prev_get (BPy_BMLoop *self)
 
 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: boolean")
 
static PyObject * bpy_bmloop_is_convex_get (BPy_BMLoop *self)
 
 PyDoc_STRVAR (bpy_bmelemseq_layers_vert_doc, "custom-data layers (read-only).\n\n:type: :class:`BMLayerAccessVert`")
 
 PyDoc_STRVAR (bpy_bmelemseq_layers_edge_doc, "custom-data layers (read-only).\n\n:type: :class:`BMLayerAccessEdge`")
 
 PyDoc_STRVAR (bpy_bmelemseq_layers_face_doc, "custom-data layers (read-only).\n\n:type: :class:`BMLayerAccessFace`")
 
 PyDoc_STRVAR (bpy_bmelemseq_layers_loop_doc, "custom-data layers (read-only).\n\n:type: :class:`BMLayerAccessLoop`")
 
static PyObject * bpy_bmelemseq_layers_get (BPy_BMElemSeq *self, void *htype)
 
 PyDoc_STRVAR (bpy_bmfaceseq_active_doc, "active face.\n\n:type: :class:`BMFace` or None")
 
static PyObject * bpy_bmfaceseq_active_get (BPy_BMElemSeq *self, void *UNUSED(closure))
 
static int bpy_bmfaceseq_active_set (BPy_BMElem *self, PyObject *value, void *UNUSED(closure))
 
 PyDoc_STRVAR (bpy_bmesh_copy_doc, ".. method:: copy()\n" "\n" " :return: A copy of this BMesh.\n" " :rtype: :class:`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 datablock.\n" "\n" " :arg mesh: The mesh data to write into.\n" " :type mesh: :class:`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:`Object`\n" " :arg cage: Get the mesh as a deformed cage.\n" " :type cage: boolean\n" " :arg face_normals: Calculate face normals.\n" " :type face_normals: boolean\n" " :arg vertex_normals: Calculate vertex normals.\n" " :type vertex_normals: boolean\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 datablock.\n" "\n" " :arg mesh: The mesh data to load.\n" " :type mesh: :class:`Mesh`\n" " :arg use_shape_key: Use the locations from a shape key.\n" " :type use_shape_key: boolean\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()\n" "\n" " flush selection based on the current mode current :class:`BMesh.select_mode`.\n")
 
static PyObject * bpy_bmesh_select_flush_mode (BPy_BMesh *self)
 
 PyDoc_STRVAR (bpy_bmesh_select_flush_doc, ".. method:: select_flush(select)\n" "\n" " Flush selection, independent of the current selection mode.\n" "\n" " :arg select: flush selection or de-selected elements.\n" " :type select: boolean\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: transform matrix.\n" " :type matrix: 4x4 :class:`mathutils.Matrix`\n" " :arg filter: set of values in " BPY_BM_HFLAG_ALL_STR ".\n" " :type filter: set\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 of :class:`BMLoop` tuples\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: boolean\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_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: boolean\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 vert to interpolate data from.\n" " :type vert_pair: :class:`BMVert`\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:`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:`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:`BMVert`\n" " :return: The edges other vert.\n" " :rtype: :class:`BMVert` or 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:`BMFace`\n" " :arg vert: When True, also copy vertex data.\n" " :type vert: boolean\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: boolean\n" " :arg edges: When set, the faces edges will be duplicated too.\n" " :type edges: boolean\n" " :return: The newly created face.\n" " :rtype: :class:`BMFace`\n")
 
static PyObject * bpy_bmface_copy (BPy_BMFace *self, PyObject *args, PyObject *kw)
 
 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:`BMFace`\n" " :arg vert: When enabled, interpolate the loops vertex data (optional).\n" " :type vert: boolean\n" " :arg multires: When enabled, interpolate the loops multires data (optional).\n" " :type multires: boolean\n")
 
static PyObject * bpy_bmloop_copy_from_face_interp (BPy_BMLoop *self, PyObject *args)
 
 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:`BMVert`\n" " :return: The newly created edge.\n" " :rtype: :class:`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: pair of :class:`BMVert`\n" " :arg example: Existing edge to initialize settings (optional argument).\n" " :type example: :class:`BMEdge`\n" " :return: The newly created edge.\n" " :rtype: :class:`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: :class:`BMVert`\n" " :arg example: Existing face to initialize settings (optional argument).\n" " :type example: :class:`BMFace`\n" " :return: The newly created face.\n" " :rtype: :class:`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")
 
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")
 
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")
 
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: :class:`BMVert`\n" " :arg fallback: Return this value if nothing is found.\n" " :return: The edge found or None\n" " :rtype: :class:`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: :class:`BMVert`\n" " :arg fallback: Return this value if nothing is found.\n" " :return: The face found or None\n" " :rtype: :class:`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.verts`, :class:`BMesh.edges`, " ":class:`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.")
 
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, BMElemeSeq.index_update() can be used for that.\n" "\n" " :arg key: The key that sets the ordering of the elements.\n" " :type key: :function: returning a number\n" " :arg reverse: Reverse the order of the elements\n" " :type reverse: :boolean:\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, int 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:`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:`BMVert`, :class:`BMEdge`, :class:`BMFace`, :class:`BMLoop`.\n" "\n" "When accessed via :class:`BMesh.verts`, :class:`BMesh.edges`, :class:`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:`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 (void)
 
PyObject * BPyInit_bmesh_types (void)
 
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)
 
void bpy_bm_generic_invalidate (BPy_BMGeneric *self)
 
voidBPy_BMElem_PySeq_As_Array_FAST (BMesh **r_bm, PyObject *seq_fast, Py_ssize_t min, Py_ssize_t max, Py_ssize_t *r_size, const char htype, const bool do_unique_check, const bool do_bm_check, const char *error_prefix)
 
voidBPy_BMElem_PySeq_As_Array (BMesh **r_bm, PyObject *seq, Py_ssize_t min, Py_ssize_t max, Py_ssize_t *r_size, const char htype, const bool do_unique_check, const bool do_bm_check, const char *error_prefix)
 
PyObject * BPy_BMElem_Array_As_Tuple (BMesh *bm, BMHeader **elem, Py_ssize_t elem_len)
 
PyObject * BPy_BMVert_Array_As_Tuple (BMesh *bm, BMVert **elem, Py_ssize_t elem_len)
 
PyObject * BPy_BMEdge_Array_As_Tuple (BMesh *bm, BMEdge **elem, Py_ssize_t elem_len)
 
PyObject * BPy_BMFace_Array_As_Tuple (BMesh *bm, BMFace **elem, Py_ssize_t elem_len)
 
PyObject * BPy_BMLoop_Array_As_Tuple (BMesh *bm, BMLoop **elem, Py_ssize_t elem_len)
 
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)
 

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 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 struct PyMethodDef bpy_bmesh_methods []
 
static struct PyMethodDef bpy_bmvert_methods []
 
static struct PyMethodDef bpy_bmedge_methods []
 
static struct PyMethodDef bpy_bmface_methods []
 
static struct PyMethodDef bpy_bmloop_methods []
 
static struct PyMethodDef bpy_bmelemseq_methods []
 
static struct PyMethodDef bpy_bmvertseq_methods []
 
static struct PyMethodDef bpy_bmedgeseq_methods []
 
static struct PyMethodDef bpy_bmfaceseq_methods []
 
static struct 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 struct 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')"

Definition at line 66 of file bmesh_py_types.c.

Function Documentation

◆ bm_dealloc_editmode_warn()

static void bm_dealloc_editmode_warn ( BPy_BMesh self)
static

Definition at line 4277 of file bmesh_py_types.c.

References BPY_BMFLAG_IS_WRAPPED, and self.

Referenced by bpy_bmesh_dealloc(), and bpy_bmesh_free().

◆ bpy_bm_elem_copy_from()

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

◆ bpy_bm_elem_hash()

static Py_hash_t bpy_bm_elem_hash ( PyObject *  self)
static

Definition at line 3457 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ bpy_bm_elem_hflag_get()

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

Definition at line 93 of file bmesh_py_types.c.

References BM_elem_flag_test, BPY_BM_CHECK_OBJ, POINTER_AS_INT, and self.

◆ bpy_bm_elem_hflag_set()

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

◆ bpy_bm_elem_hide_set()

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

Definition at line 1451 of file bmesh_py_types.c.

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

◆ bpy_bm_elem_index_get()

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

Definition at line 135 of file bmesh_py_types.c.

References BM_elem_index_get, BPY_BM_CHECK_OBJ, and self.

◆ bpy_bm_elem_index_set()

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

Definition at line 142 of file bmesh_py_types.c.

References BM_elem_index_set, BPY_BM_CHECK_INT, and self.

◆ bpy_bm_elem_select_set()

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

Definition at line 1427 of file bmesh_py_types.c.

References BM_elem_select_set(), BPY_BM_CHECK_OBJ, NULL, 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)

Definition at line 3990 of file bmesh_py_types.c.

References BM_mesh_validate(), 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()

static Py_hash_t bpy_bm_hash ( PyObject *  self)
static

Definition at line 3462 of file bmesh_py_types.c.

References bm.

Referenced by BPy_BM_init_types().

◆ BPy_BM_init_types()

void BPy_BM_init_types ( void  )

◆ bpy_bm_is_valid_get()

static PyObject* bpy_bm_is_valid_get ( BPy_BMGeneric self)
static

Definition at line 245 of file bmesh_py_types.c.

References BPY_BM_IS_VALID.

◆ bpy_bm_itype_as_pytype()

static PyTypeObject* bpy_bm_itype_as_pytype ( const char  itype)
static

◆ BPy_BMEdge_Array_As_Tuple()

PyObject* BPy_BMEdge_Array_As_Tuple ( BMesh bm,
BMEdge **  elem,
Py_ssize_t  elem_len 
)

Definition at line 4206 of file bmesh_py_types.c.

References bm, BPy_BMEdge_CreatePyObject(), and ret.

◆ bpy_bmedge_calc_face_angle()

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

Definition at line 1657 of file bmesh_py_types.c.

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

◆ bpy_bmedge_calc_face_angle_signed()

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

◆ bpy_bmedge_calc_length()

static PyObject* bpy_bmedge_calc_length ( BPy_BMEdge self)
static

Definition at line 1643 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, len_v3v3(), and self.

◆ bpy_bmedge_calc_tangent()

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

◆ BPy_BMEdge_CreatePyObject()

PyObject* BPy_BMEdge_CreatePyObject ( BMesh bm,
BMEdge e 
)

◆ bpy_bmedge_dealloc()

static void bpy_bmedge_dealloc ( BPy_BMElem self)
static

Definition at line 3413 of file bmesh_py_types.c.

References bm, CD_BM_ELEM_PYPTR, CustomData_bmesh_get(), BMesh::edata, NULL, ptr, and self.

Referenced by BPy_BM_init_types().

◆ bpy_bmedge_is_boundary_get()

static PyObject* bpy_bmedge_is_boundary_get ( BPy_BMEdge self)
static

Definition at line 412 of file bmesh_py_types.c.

References BM_edge_is_boundary(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_is_contiguous_get()

static PyObject* bpy_bmedge_is_contiguous_get ( BPy_BMEdge self)
static

Definition at line 387 of file bmesh_py_types.c.

References BM_edge_is_contiguous(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_is_convex_get()

static PyObject* bpy_bmedge_is_convex_get ( BPy_BMEdge self)
static

Definition at line 396 of file bmesh_py_types.c.

References BM_edge_is_convex(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_is_manifold_get()

static PyObject* bpy_bmedge_is_manifold_get ( BPy_BMEdge self)
static

Definition at line 378 of file bmesh_py_types.c.

References BM_edge_is_manifold(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_is_wire_get()

static PyObject* bpy_bmedge_is_wire_get ( BPy_BMEdge self)
static

Definition at line 404 of file bmesh_py_types.c.

References BM_edge_is_wire(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_normal_update()

static PyObject* bpy_bmedge_normal_update ( BPy_BMEdge self)
static

Definition at line 1796 of file bmesh_py_types.c.

References BM_edge_normals_update(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmedge_other_vert()

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

◆ bpy_bmedge_repr()

static PyObject* bpy_bmedge_repr ( BPy_BMEdge self)
static

Definition at line 3515 of file bmesh_py_types.c.

References bm, BM_elem_index_get, BMVert::e, and e.

Referenced by BPy_BM_init_types().

◆ BPy_BMEdgeSeq_CreatePyObject()

PyObject* BPy_BMEdgeSeq_CreatePyObject ( BMesh bm)

Definition at line 3937 of file bmesh_py_types.c.

References bm, BM_EDGES_OF_MESH, BPy_BMEdgeSeq_Type, and NULL.

Referenced by bpy_bmedgeseq_get().

◆ bpy_bmedgeseq_get()

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

Definition at line 179 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, BPy_BMEdgeSeq_CreatePyObject(), and self.

◆ bpy_bmedgeseq_get__method()

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

◆ bpy_bmedgeseq_new()

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

◆ bpy_bmedgeseq_remove()

static 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_len 
)

Definition at line 4188 of file bmesh_py_types.c.

References bm, BPy_BMElem_CreatePyObject(), and ret.

◆ bpy_bmelem_ass_subscript()

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

Definition at line 3308 of file bmesh_py_types.c.

References BPY_BM_CHECK_INT, and BPy_BMLayerItem_SetItem().

◆ BPy_BMElem_CheckHType()

int BPy_BMElem_CheckHType ( PyTypeObject *  type,
const char  htype 
)

◆ BPy_BMElem_CreatePyObject()

PyObject* BPy_BMElem_CreatePyObject ( BMesh bm,
BMHeader ele 
)

◆ 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_size,
const char  htype,
const bool  do_unique_check,
const bool  do_bm_check,
const char *  error_prefix 
)

◆ 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_size,
char  htype,
bool  do_unique_check,
bool  do_bm_check,
const char *  error_prefix 
)

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 4053 of file bmesh_py_types.c.

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, max, min, NULL, and UNLIKELY.

Referenced by BPy_BMElem_PySeq_As_Array().

◆ BPy_BMElem_StringFromHType()

char* BPy_BMElem_StringFromHType ( const char  htype)

◆ BPy_BMElem_StringFromHType_ex()

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

Use for error strings only, not thread safe,

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

Definition at line 4245 of file bmesh_py_types.c.

References BM_EDGE, BM_FACE, BM_LOOP, BM_VERT, BPy_BMEdge_Type, BPy_BMFace_Type, BPy_BMLoop_Type, BPy_BMVert_Type, and ret.

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

◆ bpy_bmelem_subscript()

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

Definition at line 3301 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, and BPy_BMLayerItem_GetItem().

◆ bpy_bmelemseq_contains()

static 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 
)

Definition at line 3918 of file bmesh_py_types.c.

References bm, BPy_BMElemSeq_Type, and itype.

Referenced by bpy_bmelemseq_elem_get().

◆ bpy_bmelemseq_dealloc()

static void bpy_bmelemseq_dealloc ( BPy_BMElemSeq self)
static

Definition at line 3449 of file bmesh_py_types.c.

References self.

Referenced by BPy_BM_init_types().

◆ bpy_bmelemseq_elem_get()

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

◆ bpy_bmelemseq_ensure_lookup_table()

static PyObject* bpy_bmelemseq_ensure_lookup_table ( BPy_BMElemSeq self)
static

◆ bpy_bmelemseq_index_update()

static PyObject* bpy_bmelemseq_index_update ( BPy_BMElemSeq self)
static

◆ bpy_bmelemseq_iter()

static PyObject* bpy_bmelemseq_iter ( BPy_BMElemSeq self)
static

◆ bpy_bmelemseq_layers_get()

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

◆ bpy_bmelemseq_length()

static Py_ssize_t bpy_bmelemseq_length ( BPy_BMElemSeq self)
static

◆ bpy_bmelemseq_sort()

static PyObject* bpy_bmelemseq_sort ( BPy_BMElemSeq self,
PyObject *  args,
PyObject *  kw 
)
static

Definition at line 2635 of file bmesh_py_types.c.

◆ bpy_bmelemseq_sort_cmp_by_keys_ascending()

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

Definition at line 2610 of file bmesh_py_types.c.

Referenced by bpy_bmelemseq_sort_cmp_by_keys_descending().

◆ bpy_bmelemseq_sort_cmp_by_keys_descending()

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

Definition at line 2628 of file bmesh_py_types.c.

References bpy_bmelemseq_sort_cmp_by_keys_ascending().

◆ bpy_bmelemseq_subscript()

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

◆ bpy_bmelemseq_subscript_int()

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

◆ bpy_bmelemseq_subscript_slice()

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

◆ bpy_bmesh_calc_loop_triangles()

static PyObject* bpy_bmesh_calc_loop_triangles ( BPy_BMElem self)
static

◆ bpy_bmesh_calc_volume()

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

Definition at line 1357 of file bmesh_py_types.c.

References BM_mesh_calc_volume(), BPY_BM_CHECK_OBJ, NULL, and self.

◆ bpy_bmesh_clear()

static PyObject* bpy_bmesh_clear ( BPy_BMesh self)
static

Definition at line 960 of file bmesh_py_types.c.

References bm, BM_mesh_clear(), and BPY_BM_CHECK_OBJ.

◆ bpy_bmesh_copy()

static PyObject* bpy_bmesh_copy ( BPy_BMesh self)
static

◆ BPy_BMesh_CreatePyObject()

PyObject* BPy_BMesh_CreatePyObject ( BMesh bm,
int  flag 
)

◆ bpy_bmesh_dealloc()

static void bpy_bmesh_dealloc ( BPy_BMesh self)
static

◆ bpy_bmesh_free()

static PyObject* bpy_bmesh_free ( BPy_BMesh self)
static

◆ bpy_bmesh_from_mesh()

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

◆ bpy_bmesh_from_object()

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

◆ bpy_bmesh_is_wrapped_get()

static PyObject* bpy_bmesh_is_wrapped_get ( BPy_BMesh self)
static

Definition at line 253 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, BPY_BMFLAG_IS_WRAPPED, and self.

◆ bpy_bmesh_normal_update()

static PyObject* bpy_bmesh_normal_update ( BPy_BMesh self)
static

Definition at line 1272 of file bmesh_py_types.c.

References BM_mesh_normals_update(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmesh_repr()

static PyObject* bpy_bmesh_repr ( BPy_BMesh self)
static

Definition at line 3487 of file bmesh_py_types.c.

References bm, BMesh::totedge, BMesh::totface, BMesh::totloop, and BMesh::totvert.

Referenced by BPy_BM_init_types().

◆ bpy_bmesh_select_flush()

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

◆ bpy_bmesh_select_flush_mode()

static PyObject* bpy_bmesh_select_flush_mode ( BPy_BMesh self)
static

Definition at line 1226 of file bmesh_py_types.c.

References BM_mesh_select_mode_flush(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmesh_select_history_get()

static PyObject* bpy_bmesh_select_history_get ( BPy_BMesh self)
static

Definition at line 291 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, BPy_BMEditSel_CreatePyObject(), and self.

◆ bpy_bmesh_select_history_set()

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

Definition at line 298 of file bmesh_py_types.c.

References BPY_BM_CHECK_INT, and BPy_BMEditSel_Assign().

◆ bpy_bmesh_select_mode_get()

static PyObject* bpy_bmesh_select_mode_get ( BPy_BMesh self)
static

◆ bpy_bmesh_select_mode_set()

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

◆ bpy_bmesh_to_mesh()

static PyObject* bpy_bmesh_to_mesh ( BPy_BMesh self,
PyObject *  args 
)
static

◆ bpy_bmesh_transform()

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

◆ BPy_BMFace_Array_As_Tuple()

PyObject* BPy_BMFace_Array_As_Tuple ( BMesh bm,
BMFace **  elem,
Py_ssize_t  elem_len 
)

Definition at line 4216 of file bmesh_py_types.c.

References bm, BPy_BMFace_CreatePyObject(), and ret.

Referenced by bpy_bm_utils_face_split_edgenet().

◆ bpy_bmface_calc_area()

static PyObject* bpy_bmface_calc_area ( BPy_BMFace self)
static

Definition at line 1893 of file bmesh_py_types.c.

References BM_face_calc_area(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmface_calc_center_bounds()

static PyObject* bpy_bmface_calc_center_bounds ( BPy_BMFace self)
static

◆ bpy_bmface_calc_center_mean()

static PyObject* bpy_bmface_calc_center_mean ( BPy_BMFace self)
static

◆ bpy_bmface_calc_center_median_weighted()

static PyObject* bpy_bmface_calc_center_median_weighted ( BPy_BMFace self)
static

◆ bpy_bmface_calc_perimeter()

static PyObject* bpy_bmface_calc_perimeter ( BPy_BMFace self)
static

Definition at line 1906 of file bmesh_py_types.c.

References BM_face_calc_perimeter(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmface_calc_tangent_edge()

static PyObject* bpy_bmface_calc_tangent_edge ( BPy_BMFace self)
static

◆ bpy_bmface_calc_tangent_edge_diagonal()

static PyObject* bpy_bmface_calc_tangent_edge_diagonal ( BPy_BMFace self)
static

◆ bpy_bmface_calc_tangent_edge_pair()

static PyObject* bpy_bmface_calc_tangent_edge_pair ( BPy_BMFace self)
static

◆ bpy_bmface_calc_tangent_vert_diagonal()

static PyObject* bpy_bmface_calc_tangent_vert_diagonal ( BPy_BMFace self)
static

◆ bpy_bmface_copy()

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

◆ bpy_bmface_copy_from_face_interp()

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

◆ BPy_BMFace_CreatePyObject()

PyObject* BPy_BMFace_CreatePyObject ( BMesh bm,
BMFace f 
)

◆ bpy_bmface_dealloc()

static void bpy_bmface_dealloc ( BPy_BMElem self)
static

Definition at line 3425 of file bmesh_py_types.c.

References bm, CD_BM_ELEM_PYPTR, CustomData_bmesh_get(), NULL, BMesh::pdata, ptr, and self.

Referenced by BPy_BM_init_types().

◆ bpy_bmface_material_index_get()

static PyObject* bpy_bmface_material_index_get ( BPy_BMFace self)
static

Definition at line 442 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmface_material_index_set()

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

Definition at line 448 of file bmesh_py_types.c.

References BPY_BM_CHECK_INT, and MAXMAT.

◆ bpy_bmface_normal_flip()

static PyObject* bpy_bmface_normal_flip ( BPy_BMFace self)
static

Definition at line 2046 of file bmesh_py_types.c.

References BM_face_normal_flip(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmface_normal_get()

static PyObject* bpy_bmface_normal_get ( BPy_BMFace self)
static

Definition at line 424 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject_wrap().

◆ bpy_bmface_normal_set()

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

Definition at line 430 of file bmesh_py_types.c.

References BPY_BM_CHECK_INT, mathutils_array_parse(), and self.

◆ bpy_bmface_normal_update()

static PyObject* bpy_bmface_normal_update ( BPy_BMFace self)
static

Definition at line 2033 of file bmesh_py_types.c.

References BM_face_normal_update(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmface_repr()

static PyObject* bpy_bmface_repr ( BPy_BMFace self)
static

Definition at line 3533 of file bmesh_py_types.c.

References bm, BM_elem_index_get, and BMFace::len.

Referenced by BPy_BM_init_types().

◆ bpy_bmfaceseq_active_get()

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

Definition at line 560 of file bmesh_py_types.c.

References BMesh::act_face, bm, BPY_BM_CHECK_OBJ, and BPy_BMElem_CreatePyObject().

◆ bpy_bmfaceseq_active_set()

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

Definition at line 572 of file bmesh_py_types.c.

References BMesh::act_face, bm, BPY_BM_CHECK_SOURCE_INT, BPy_BMFace_Check, and NULL.

◆ BPy_BMFaceSeq_CreatePyObject()

PyObject* BPy_BMFaceSeq_CreatePyObject ( BMesh bm)

Definition at line 3946 of file bmesh_py_types.c.

References bm, BM_FACES_OF_MESH, BPy_BMFaceSeq_Type, and NULL.

Referenced by bpy_bmfaceseq_get().

◆ bpy_bmfaceseq_get()

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

Definition at line 187 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, BPy_BMFaceSeq_CreatePyObject(), and self.

◆ bpy_bmfaceseq_get__method()

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

◆ bpy_bmfaceseq_new()

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

◆ bpy_bmfaceseq_remove()

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

◆ BPy_BMIter_CreatePyObject()

PyObject* BPy_BMIter_CreatePyObject ( BMesh bm)

Definition at line 3964 of file bmesh_py_types.c.

References bm, and BPy_BMIter_Type.

Referenced by bpy_bmelemseq_iter().

◆ bpy_bmiter_next()

static PyObject* bpy_bmiter_next ( BPy_BMIter self)
static

Definition at line 3356 of file bmesh_py_types.c.

References BPy_BMElem_CreatePyObject(), NULL, and self.

Referenced by BPy_BM_init_types().

◆ BPy_BMLoop_Array_As_Tuple()

PyObject* BPy_BMLoop_Array_As_Tuple ( BMesh bm,
BMLoop **  elem,
Py_ssize_t  elem_len 
)

Definition at line 4226 of file bmesh_py_types.c.

References bm, BPy_BMLoop_CreatePyObject(), and ret.

Referenced by bpy_bmesh_calc_loop_triangles().

◆ bpy_bmloop_calc_angle()

static PyObject* bpy_bmloop_calc_angle ( BPy_BMLoop self)
static

Definition at line 2106 of file bmesh_py_types.c.

References BM_loop_calc_face_angle(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmloop_calc_normal()

static PyObject* bpy_bmloop_calc_normal ( BPy_BMLoop self)
static

◆ bpy_bmloop_calc_tangent()

static PyObject* bpy_bmloop_calc_tangent ( BPy_BMLoop self)
static

◆ bpy_bmloop_copy_from_face_interp()

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

◆ BPy_BMLoop_CreatePyObject()

PyObject* BPy_BMLoop_CreatePyObject ( BMesh bm,
BMLoop l 
)

◆ bpy_bmloop_dealloc()

static void bpy_bmloop_dealloc ( BPy_BMElem self)
static

Definition at line 3437 of file bmesh_py_types.c.

References bm, CD_BM_ELEM_PYPTR, CustomData_bmesh_get(), BMesh::ldata, NULL, ptr, and self.

Referenced by BPy_BM_init_types().

◆ bpy_bmloop_edge_get()

static PyObject* bpy_bmloop_edge_get ( BPy_BMLoop self)
static

Definition at line 482 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, BPy_BMEdge_CreatePyObject(), and self.

◆ bpy_bmloop_face_get()

static PyObject* bpy_bmloop_face_get ( BPy_BMLoop self)
static

Definition at line 490 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, BPy_BMFace_CreatePyObject(), and self.

◆ bpy_bmloop_is_convex_get()

static PyObject* bpy_bmloop_is_convex_get ( BPy_BMLoop self)
static

Definition at line 531 of file bmesh_py_types.c.

References BM_loop_is_convex(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmloop_link_loop_next_get()

static PyObject* bpy_bmloop_link_loop_next_get ( BPy_BMLoop self)
static

Definition at line 498 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, BPy_BMLoop_CreatePyObject(), and self.

◆ bpy_bmloop_link_loop_prev_get()

static PyObject* bpy_bmloop_link_loop_prev_get ( BPy_BMLoop self)
static

Definition at line 506 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, BPy_BMLoop_CreatePyObject(), and self.

◆ bpy_bmloop_link_loop_radial_next_get()

static PyObject* bpy_bmloop_link_loop_radial_next_get ( BPy_BMLoop self)
static

Definition at line 514 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, BPy_BMLoop_CreatePyObject(), and self.

◆ bpy_bmloop_link_loop_radial_prev_get()

static PyObject* bpy_bmloop_link_loop_radial_prev_get ( BPy_BMLoop self)
static

Definition at line 522 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, BPy_BMLoop_CreatePyObject(), and self.

◆ bpy_bmloop_repr()

static PyObject* bpy_bmloop_repr ( BPy_BMLoop self)
static

Definition at line 3546 of file bmesh_py_types.c.

References bm, BM_elem_index_get, BMLoop::e, BMLoop::f, l, and BMLoop::v.

Referenced by BPy_BM_init_types().

◆ bpy_bmloop_vert_get()

static PyObject* bpy_bmloop_vert_get ( BPy_BMLoop self)
static

Definition at line 473 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, BPy_BMVert_CreatePyObject(), and self.

◆ BPy_BMLoopSeq_CreatePyObject()

PyObject* BPy_BMLoopSeq_CreatePyObject ( BMesh bm)

Definition at line 3955 of file bmesh_py_types.c.

References bm, BPy_BMLoopSeq_Type, and NULL.

Referenced by bpy_bmloopseq_get().

◆ bpy_bmloopseq_get()

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

Definition at line 199 of file bmesh_py_types.c.

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_len 
)

Definition at line 4197 of file bmesh_py_types.c.

References bm, BPy_BMVert_CreatePyObject(), and ret.

Referenced by bpy_bm_utils_vert_separate().

◆ bpy_bmvert_calc_edge_angle()

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

Definition at line 1571 of file bmesh_py_types.c.

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

◆ bpy_bmvert_calc_shell_factor()

static PyObject* bpy_bmvert_calc_shell_factor ( BPy_BMVert self)
static

Definition at line 1611 of file bmesh_py_types.c.

References BM_vert_calc_shell_factor(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmvert_co_get()

static PyObject* bpy_bmvert_co_get ( BPy_BMVert self)
static

Definition at line 311 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject_wrap().

◆ bpy_bmvert_co_set()

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

Definition at line 317 of file bmesh_py_types.c.

References BPY_BM_CHECK_INT, mathutils_array_parse(), and self.

◆ bpy_bmvert_copy_from_face_interp()

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

◆ bpy_bmvert_copy_from_vert_interp()

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

◆ BPy_BMVert_CreatePyObject()

PyObject* BPy_BMVert_CreatePyObject ( BMesh bm,
BMVert v 
)

◆ bpy_bmvert_dealloc()

static void bpy_bmvert_dealloc ( BPy_BMElem self)
static

Definition at line 3401 of file bmesh_py_types.c.

References bm, CD_BM_ELEM_PYPTR, CustomData_bmesh_get(), NULL, ptr, self, and BMesh::vdata.

Referenced by BPy_BM_init_types().

◆ bpy_bmvert_is_boundary_get()

static PyObject* bpy_bmvert_is_boundary_get ( BPy_BMVert self)
static

Definition at line 367 of file bmesh_py_types.c.

References BM_vert_is_boundary(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmvert_is_manifold_get()

static PyObject* bpy_bmvert_is_manifold_get ( BPy_BMVert self)
static

Definition at line 350 of file bmesh_py_types.c.

References BM_vert_is_manifold(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmvert_is_wire_get()

static PyObject* bpy_bmvert_is_wire_get ( BPy_BMVert self)
static

Definition at line 358 of file bmesh_py_types.c.

References BM_vert_is_wire(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmvert_normal_get()

static PyObject* bpy_bmvert_normal_get ( BPy_BMVert self)
static

Definition at line 331 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject_wrap().

◆ bpy_bmvert_normal_set()

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

Definition at line 337 of file bmesh_py_types.c.

References BPY_BM_CHECK_INT, mathutils_array_parse(), and self.

◆ bpy_bmvert_normal_update()

static PyObject* bpy_bmvert_normal_update ( BPy_BMVert self)
static

Definition at line 1626 of file bmesh_py_types.c.

References BM_vert_normal_update(), BPY_BM_CHECK_OBJ, and self.

◆ bpy_bmvert_repr()

static PyObject* bpy_bmvert_repr ( BPy_BMVert self)
static

Definition at line 3503 of file bmesh_py_types.c.

References bm, BM_elem_index_get, and v.

Referenced by BPy_BM_init_types().

◆ BPy_BMVertSeq_CreatePyObject()

PyObject* BPy_BMVertSeq_CreatePyObject ( BMesh bm)

Definition at line 3928 of file bmesh_py_types.c.

References bm, BM_VERTS_OF_MESH, BPy_BMVertSeq_Type, and NULL.

Referenced by bpy_bmvertseq_get().

◆ bpy_bmvertseq_get()

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

Definition at line 171 of file bmesh_py_types.c.

References BPY_BM_CHECK_OBJ, BPy_BMVertSeq_CreatePyObject(), and self.

◆ bpy_bmvertseq_new()

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

◆ bpy_bmvertseq_remove()

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

◆ BPyInit_bmesh_types()

PyObject* BPyInit_bmesh_types ( void  )

◆ PyDoc_STRVAR() [1/110]

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/110]

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

◆ PyDoc_STRVAR() [3/110]

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: boolean\n"   
)

◆ PyDoc_STRVAR() [4/110]

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:`BMElemSeq.index_update`.\n"   
)

◆ PyDoc_STRVAR() [5/110]

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

◆ PyDoc_STRVAR() [6/110]

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

◆ PyDoc_STRVAR() [7/110]

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: boolean\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() [8/110]

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

◆ PyDoc_STRVAR() [9/110]

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

◆ PyDoc_STRVAR() [10/110]

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

◆ PyDoc_STRVAR() [11/110]

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() [12/110]

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() [13/110]

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

◆ PyDoc_STRVAR() [14/110]

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:`BMLoop`\n" " :return: a normalized vector.\n" " :rtype: :class:`mathutils.Vector`\n"   
)

◆ PyDoc_STRVAR() [15/110]

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

◆ PyDoc_STRVAR() [16/110]

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

◆ PyDoc_STRVAR() [17/110]

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:boolean"   
)

◆ PyDoc_STRVAR() [18/110]

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:boolean"   
)

◆ PyDoc_STRVAR() [19/110]

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

◆ PyDoc_STRVAR() [20/110]

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

◆ PyDoc_STRVAR() [21/110]

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

◆ PyDoc_STRVAR() [22/110]

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

◆ PyDoc_STRVAR() [23/110]

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() [24/110]

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:`BMVert`\n" " :return: The edges other vert.\n" " :rtype: :class:`BMVert` or None\n"   
)

◆ PyDoc_STRVAR() [25/110]

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

◆ PyDoc_STRVAR() [26/110]

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

◆ PyDoc_STRVAR() [27/110]

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: :class:`BMVert`\n" " :arg fallback: Return this value if nothing is found.\n" " :return: The edge found or None\n" " :rtype: :class:`BMEdge`\n"   
)

◆ PyDoc_STRVAR() [28/110]

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: pair of :class:`BMVert`\n" " :arg example: Existing edge to initialize settings (optional argument).\n" " :type example: :class:`BMEdge`\n" " :return: The newly created edge.\n" " :rtype: :class:`BMEdge`\n"   
)

◆ PyDoc_STRVAR() [29/110]

PyDoc_STRVAR ( bpy_bmedgeseq_remove_doc  ,
".. method:: remove(edge)\n" "\n" " Remove an edge.\n"   
)

◆ PyDoc_STRVAR() [30/110]

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

◆ PyDoc_STRVAR() [31/110]

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."  [index] 
)

◆ PyDoc_STRVAR() [32/110]

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.verts`,
:class:`BMesh.edges`  ,
" ":class:`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() [33/110]

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

◆ PyDoc_STRVAR() [34/110]

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

◆ PyDoc_STRVAR() [35/110]

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

◆ PyDoc_STRVAR() [36/110]

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

◆ PyDoc_STRVAR() [37/110]

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,
BMElemeSeq.index_update() can be used for that.\n" "\n" " :arg key:The key that sets the ordering of the elements.\n" " :type key::function:returning a number\n" " :arg reverse:Reverse the order of the elements\n" " :type reverse::boolean:\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() [38/110]

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 of :class:`BMLoop` tuples\n"   
)

◆ PyDoc_STRVAR() [39/110]

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() [40/110]

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

◆ PyDoc_STRVAR() [41/110]

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

◆ PyDoc_STRVAR() [42/110]

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

◆ PyDoc_STRVAR() [43/110]

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() [44/110]

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 datablock.\n" "\n" " :arg mesh: The mesh data to load.\n" " :type mesh: :class:`Mesh`\n" " :arg use_shape_key: Use the locations from a shape key.\n" " :type use_shape_key: boolean\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() [45/110]

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:`Object`\n" " :arg cage: Get the mesh as a deformed cage.\n" " :type cage: boolean\n" " :arg face_normals: Calculate face normals.\n" " :type face_normals: boolean\n" " :arg vertex_normals: Calculate vertex normals.\n" " :type vertex_normals: boolean\n"   
)

◆ PyDoc_STRVAR() [46/110]

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

◆ PyDoc_STRVAR() [47/110]

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() [48/110]

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

◆ PyDoc_STRVAR() [49/110]

PyDoc_STRVAR ( bpy_bmesh_select_flush_mode_doc  ,
".. method:: select_flush_mode()\n" "\n" " flush selection based on the current mode current :class:`BMesh.select_mode`.\n"   
)

◆ PyDoc_STRVAR() [50/110]

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

◆ PyDoc_STRVAR() [51/110]

PyDoc_STRVAR ( bpy_bmesh_select_mode_doc  ,
"The selection  mode,
values can be { 'VERT', 'EDGE', 'FACE'}  ,
can 't be assigned an " "empty set.\n\n:type:set"   
)

◆ PyDoc_STRVAR() [52/110]

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

◆ PyDoc_STRVAR() [53/110]

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: transform matrix.\n" " :type matrix: 4x4 :class:`mathutils.Matrix`\n" " :arg filter: set of values in " BPY_BM_HFLAG_ALL_STR ".\n" " :type filter: set\n"   
)

◆ PyDoc_STRVAR() [54/110]

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() [55/110]

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() [56/110]

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() [57/110]

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() [58/110]

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() [59/110]

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() [60/110]

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() [61/110]

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() [62/110]

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() [63/110]

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:boolean\n" " :arg edges:When  set,
the faces edges will be duplicated too.\n" " :type edges:boolean\n" " :return:The newly created face.\n" " :rtype::class:`BMFace`\n"   
)

◆ PyDoc_STRVAR() [64/110]

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:`BMFace`\n" " :arg vert: When  True,
also copy vertex data.\n" " :type vert:boolean\n"   
)

◆ PyDoc_STRVAR() [65/110]

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

◆ PyDoc_STRVAR() [66/110]

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

◆ PyDoc_STRVAR() [67/110]

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

◆ PyDoc_STRVAR() [68/110]

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

◆ PyDoc_STRVAR() [69/110]

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

◆ PyDoc_STRVAR() [70/110]

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

◆ PyDoc_STRVAR() [71/110]

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() [72/110]

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

◆ PyDoc_STRVAR() [73/110]

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

◆ PyDoc_STRVAR() [74/110]

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

◆ PyDoc_STRVAR() [75/110]

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: :class:`BMVert`\n" " :arg fallback: Return this value if nothing is found.\n" " :return: The face found or None\n" " :rtype: :class:`BMFace`\n"   
)

◆ PyDoc_STRVAR() [76/110]

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: :class:`BMVert`\n" " :arg example: Existing face to initialize settings (optional argument).\n" " :type example: :class:`BMFace`\n" " :return: The newly created face.\n" " :rtype: :class:`BMFace`\n"   
)

◆ PyDoc_STRVAR() [77/110]

PyDoc_STRVAR ( bpy_bmfaceseq_remove_doc  ,
".. method:: remove(face)\n" "\n" " Remove a face.\n"   
)

◆ PyDoc_STRVAR() [78/110]

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

◆ PyDoc_STRVAR() [79/110]

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() [80/110]

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() [81/110]

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() [82/110]

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:`BMFace`\n" " :arg vert: When  enabled,
interpolate the loops vertex data(optional).\n" " :type vert:boolean\n" " :arg multires:When  enabled,
interpolate the loops multires data(optional).\n" " :type multires:boolean\n"   
)

◆ PyDoc_STRVAR() [83/110]

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

◆ PyDoc_STRVAR() [84/110]

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

◆ PyDoc_STRVAR() [85/110]

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

◆ PyDoc_STRVAR() [86/110]

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:boolean"   
)

◆ PyDoc_STRVAR() [87/110]

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

◆ PyDoc_STRVAR() [88/110]

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

◆ PyDoc_STRVAR() [89/110]

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

◆ PyDoc_STRVAR() [90/110]

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

◆ PyDoc_STRVAR() [91/110]

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

◆ PyDoc_STRVAR() [92/110]

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

◆ PyDoc_STRVAR() [93/110]

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

◆ PyDoc_STRVAR() [94/110]

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() [95/110]

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() [96/110]

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

◆ PyDoc_STRVAR() [97/110]

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:`BMFace`\n"   
)

◆ PyDoc_STRVAR() [98/110]

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 vert to interpolate data from.\n" " :type vert_pair: :class:`BMVert`\n"   
)

◆ PyDoc_STRVAR() [99/110]

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

◆ PyDoc_STRVAR() [100/110]

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

◆ PyDoc_STRVAR() [101/110]

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

◆ PyDoc_STRVAR() [102/110]

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

◆ PyDoc_STRVAR() [103/110]

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

◆ PyDoc_STRVAR() [104/110]

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

◆ PyDoc_STRVAR() [105/110]

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

◆ PyDoc_STRVAR() [106/110]

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

◆ PyDoc_STRVAR() [107/110]

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() [108/110]

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

◆ PyDoc_STRVAR() [109/110]

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:`BMVert`\n" " :return: The newly created edge.\n" " :rtype: :class:`BMVert`\n"   
)

◆ PyDoc_STRVAR() [110/110]

PyDoc_STRVAR ( bpy_bmvertseq_remove_doc  ,
".. method:: remove(vert)\n" "\n" " Remove a vert.\n"   
)

Variable Documentation

◆ bpy_bm_elem_as_mapping

PyMappingMethods bpy_bm_elem_as_mapping
static
Initial value:
= {
(lenfunc)NULL,
(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 3336 of file bmesh_py_types.c.

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, NULL},
}
@ BM_ELEM_HIDDEN
Definition: bmesh_class.h:472
@ BM_ELEM_SEAM
Definition: bmesh_class.h:473
@ BM_ELEM_SELECT
Definition: bmesh_class.h:471
@ BM_ELEM_SMOOTH
Definition: bmesh_class.h:477
@ BM_ELEM_TAG
Definition: bmesh_class.h:484

Definition at line 68 of file bmesh_py_types.c.

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, NULL},
}
@ BM_LOOP
Definition: bmesh_class.h:385
@ BM_FACE
Definition: bmesh_class.h:386
@ BM_VERT
Definition: bmesh_class.h:383

Definition at line 58 of file bmesh_py_types.c.

◆ 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, NULL},
}
@ BM_EDGE
Definition: bmesh_class.h:384

Definition at line 51 of file bmesh_py_types.c.

◆ 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, NULL},
}

Definition at line 44 of file bmesh_py_types.c.

Referenced by bpy_bmesh_select_mode_get(), and bpy_bmesh_select_mode_set().

◆ BPy_BM_types_module_def

struct PyModuleDef BPy_BM_types_module_def
static
Initial value:
= {
PyModuleDef_HEAD_INIT,
"bmesh.types",
NULL,
0,
NULL,
NULL,
NULL,
NULL,
NULL,
}

Definition at line 3581 of file bmesh_py_types.c.

Referenced by BPyInit_bmesh_types().

◆ bpy_bmedge_getseters

PyGetSetDef bpy_bmedge_getseters[]
static

Definition at line 684 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ bpy_bmedge_methods

struct 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},
{NULL, NULL, 0, NULL},
}
static PyObject * bpy_bm_elem_copy_from(BPy_BMElem *self, BPy_BMElem *value)
static PyObject * bpy_bmedge_calc_face_angle(BPy_BMEdge *self, PyObject *args)
static PyObject * bpy_bm_elem_hide_set(BPy_BMElem *self, PyObject *value)
static PyObject * bpy_bmedge_normal_update(BPy_BMEdge *self)
static PyObject * bpy_bmedge_other_vert(BPy_BMEdge *self, BPy_BMVert *value)
static PyObject * bpy_bmedge_calc_length(BPy_BMEdge *self)
static PyObject * bpy_bmedge_calc_face_angle_signed(BPy_BMEdge *self, PyObject *args)
static PyObject * bpy_bmedge_calc_tangent(BPy_BMEdge *self, PyObject *args)
static PyObject * bpy_bm_elem_select_set(BPy_BMElem *self, PyObject *value)

Definition at line 2635 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ BPy_BMEdge_Type

PyTypeObject BPy_BMEdge_Type

◆ bpy_bmedgeseq_getseters

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

Definition at line 895 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ bpy_bmedgeseq_methods

struct 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},
{NULL, NULL, 0, NULL},
}
static PyObject * bpy_bmedgeseq_get__method(BPy_BMElemSeq *self, PyObject *args)
static PyObject * bpy_bmelemseq_ensure_lookup_table(BPy_BMElemSeq *self)
static PyObject * bpy_bmedgeseq_new(BPy_BMElemSeq *self, PyObject *args)
static PyObject * bpy_bmelemseq_index_update(BPy_BMElemSeq *self)
static PyObject * bpy_bmedgeseq_remove(BPy_BMElemSeq *self, BPy_BMEdge *value)
static PyObject * bpy_bmelemseq_sort(BPy_BMElemSeq *self, PyObject *args, PyObject *kw)

Definition at line 2635 of file bmesh_py_types.c.

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)NULL,
}
static Py_ssize_t bpy_bmelemseq_length(BPy_BMElemSeq *self)
static PyObject * bpy_bmelemseq_subscript(BPy_BMElemSeq *self, PyObject *key)

Definition at line 3329 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ bpy_bmelemseq_as_sequence

PySequenceMethods bpy_bmelemseq_as_sequence
static
Initial value:
= {
NULL,
NULL,
NULL,
(ssizeobjargproc)NULL,
NULL,
(objobjproc)bpy_bmelemseq_contains,
(binaryfunc)NULL,
(ssizeargfunc)NULL,
}
static PyObject * bpy_bmelemseq_subscript_int(BPy_BMElemSeq *self, int keynum)
static int bpy_bmelemseq_contains(BPy_BMElemSeq *self, PyObject *value)

Definition at line 3315 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ bpy_bmelemseq_methods

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

Definition at line 2635 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ BPy_BMElemSeq_Type

PyTypeObject BPy_BMElemSeq_Type

◆ bpy_bmesh_getseters

PyGetSetDef bpy_bmesh_getseters[]
static
Initial value:
= {
{"verts", (getter)bpy_bmvertseq_get, (setter)NULL, bpy_bmvertseq_doc, NULL},
{"edges", (getter)bpy_bmedgeseq_get, (setter)NULL, bpy_bmedgeseq_doc, NULL},
{"faces", (getter)bpy_bmfaceseq_get, (setter)NULL, bpy_bmfaceseq_doc, NULL},
{"loops", (getter)bpy_bmloopseq_get, (setter)NULL, bpy_bmloopseq_doc, NULL},
{"select_mode",
bpy_bmesh_select_mode_doc,
NULL},
{"select_history",
bpy_bmesh_select_history_doc,
NULL},
{"is_wrapped",
(setter)NULL,
bpy_bmesh_is_wrapped_doc,
NULL},
{"is_valid", (getter)bpy_bm_is_valid_get, (setter)NULL, bpy_bm_is_valid_doc, NULL},
}
static PyObject * bpy_bmesh_select_history_get(BPy_BMesh *self)
static PyObject * bpy_bmloopseq_get(BPy_BMesh *self, void *UNUSED(closure))
static PyObject * bpy_bmvertseq_get(BPy_BMesh *self, void *UNUSED(closure))
static PyObject * bpy_bmesh_is_wrapped_get(BPy_BMesh *self)
static PyObject * bpy_bmedgeseq_get(BPy_BMesh *self, void *UNUSED(closure))
static int bpy_bmesh_select_mode_set(BPy_BMesh *self, PyObject *value)
static int bpy_bmesh_select_history_set(BPy_BMesh *self, PyObject *value)
static PyObject * bpy_bmesh_select_mode_get(BPy_BMesh *self)
static PyObject * bpy_bmfaceseq_get(BPy_BMesh *self, void *UNUSED(closure))
static PyObject * bpy_bm_is_valid_get(BPy_BMGeneric *self)

Definition at line 592 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ bpy_bmesh_methods

struct PyMethodDef bpy_bmesh_methods[]
static

Definition at line 2635 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ BPy_BMesh_Type

PyTypeObject BPy_BMesh_Type

◆ bpy_bmface_getseters

PyGetSetDef bpy_bmface_getseters[]
static

Definition at line 759 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ bpy_bmface_methods

struct PyMethodDef bpy_bmface_methods[]
static

Definition at line 2635 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ BPy_BMFace_Type

PyTypeObject BPy_BMFace_Type

◆ bpy_bmfaceseq_getseters

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

Definition at line 903 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ bpy_bmfaceseq_methods

struct 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},
{NULL, NULL, 0, NULL},
}
static PyObject * bpy_bmfaceseq_get__method(BPy_BMElemSeq *self, PyObject *args)
static PyObject * bpy_bmfaceseq_remove(BPy_BMElemSeq *self, BPy_BMFace *value)
static PyObject * bpy_bmfaceseq_new(BPy_BMElemSeq *self, PyObject *args)

Definition at line 2635 of file bmesh_py_types.c.

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 823 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ bpy_bmloop_methods

struct 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_O,
bpy_bmloop_copy_from_face_interp_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},
{NULL, NULL, 0, NULL},
}
static PyObject * bpy_bmloop_calc_angle(BPy_BMLoop *self)
static PyObject * bpy_bmloop_calc_normal(BPy_BMLoop *self)
static PyObject * bpy_bmloop_copy_from_face_interp(BPy_BMLoop *self, PyObject *args)
static PyObject * bpy_bmloop_calc_tangent(BPy_BMLoop *self)

Definition at line 2635 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ BPy_BMLoop_Type

PyTypeObject BPy_BMLoop_Type

◆ bpy_bmloopseq_getseters

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

Definition at line 917 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ bpy_bmloopseq_methods

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

Definition at line 2635 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ BPy_BMLoopSeq_Type

PyTypeObject BPy_BMLoopSeq_Type

◆ bpy_bmvert_getseters

PyGetSetDef bpy_bmvert_getseters[]
static

Definition at line 620 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ bpy_bmvert_methods

struct 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},
{NULL, NULL, 0, NULL},
}
static PyObject * bpy_bmvert_normal_update(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)
static PyObject * bpy_bmvert_calc_edge_angle(BPy_BMVert *self, PyObject *args)
static PyObject * bpy_bmvert_calc_shell_factor(BPy_BMVert *self)

Definition at line 2635 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ BPy_BMVert_Type

PyTypeObject BPy_BMVert_Type

◆ bpy_bmvertseq_getseters

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

Definition at line 887 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ bpy_bmvertseq_methods

struct 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},
{NULL, NULL, 0, NULL},
}
static PyObject * bpy_bmvertseq_new(BPy_BMElemSeq *self, PyObject *args)
static PyObject * bpy_bmvertseq_remove(BPy_BMElemSeq *self, BPy_BMVert *value)

Definition at line 2635 of file bmesh_py_types.c.

Referenced by BPy_BM_init_types().

◆ BPy_BMVertSeq_Type

PyTypeObject BPy_BMVertSeq_Type