Blender
V3.3
|
#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) |
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, const char htype, const bool do_unique_check, const bool do_bm_check, const char *error_prefix) |
void * | BPy_BMElem_PySeq_As_Array (BMesh **r_bm, PyObject *seq, Py_ssize_t min, Py_ssize_t max, Py_ssize_t *r_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) |
#define BPY_BM_HFLAG_ALL_STR "('SELECT', 'HIDE', 'SEAM', 'SMOOTH', 'TAG')" |
Definition at line 66 of file bmesh_py_types.c.
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().
|
static |
Definition at line 1470 of file bmesh_py_types.c.
References BPy_BMElem::bm, BM_elem_attrs_copy_ex(), BPY_BM_CHECK_OBJ, CD_MASK_BM_ELEM_PYPTR, BPy_BMElem::ele, NULL, and self.
|
static |
Definition at line 3457 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
|
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.
|
static |
Definition at line 102 of file bmesh_py_types.c.
References BM_elem_flag_set, BM_ELEM_SELECT, BM_elem_select_set(), BPY_BM_CHECK_INT, POINTER_AS_INT, PyC_Long_AsBool(), and self.
|
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.
|
static |
Definition at line 135 of file bmesh_py_types.c.
References BM_elem_index_get, BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 142 of file bmesh_py_types.c.
References BM_elem_index_set, BPY_BM_CHECK_INT, and self.
|
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.
void bpy_bm_generic_invalidate | ( | BPy_BMGeneric * | self | ) |
Definition at line 4048 of file bmesh_py_types.c.
References NULL.
Referenced by bpy_bmedgeseq_remove(), bpy_bmesh_free(), bpy_bmfaceseq_remove(), and bpy_bmvertseq_remove().
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().
int bpy_bm_generic_valid_check_source | ( | BMesh * | bm_source, |
const char * | error_prefix, | ||
void ** | args, | ||
uint | args_tot | ||
) |
Definition at line 4015 of file bmesh_py_types.c.
References BLI_assert, BPy_BMGeneric::bm, bpy_bm_generic_valid_check(), BPy_BMElem_Check, BPy_BMesh_Check, ret, and UNLIKELY.
|
static |
Definition at line 3581 of file bmesh_py_types.c.
References bpy_bm_elem_as_mapping, bpy_bm_elem_hash(), bpy_bm_hash(), bpy_bmedge_dealloc(), bpy_bmedge_getseters, bpy_bmedge_methods, bpy_bmedge_repr(), BPy_BMEdge_Type, bpy_bmedgeseq_getseters, bpy_bmedgeseq_methods, BPy_BMEdgeSeq_Type, bpy_bmelemseq_as_mapping, bpy_bmelemseq_as_sequence, bpy_bmelemseq_dealloc(), bpy_bmelemseq_iter(), bpy_bmelemseq_methods, BPy_BMElemSeq_Type, bpy_bmesh_dealloc(), bpy_bmesh_getseters, bpy_bmesh_methods, bpy_bmesh_repr(), BPy_BMesh_Type, bpy_bmface_dealloc(), bpy_bmface_getseters, bpy_bmface_methods, bpy_bmface_repr(), BPy_BMFace_Type, bpy_bmfaceseq_getseters, bpy_bmfaceseq_methods, BPy_BMFaceSeq_Type, bpy_bmiter_next(), BPy_BMIter_Type, bpy_bmloop_dealloc(), bpy_bmloop_getseters, bpy_bmloop_methods, bpy_bmloop_repr(), BPy_BMLoop_Type, bpy_bmloopseq_getseters, bpy_bmloopseq_methods, BPy_BMLoopSeq_Type, bpy_bmvert_dealloc(), bpy_bmvert_getseters, bpy_bmvert_methods, bpy_bmvert_repr(), BPy_BMVert_Type, bpy_bmvertseq_getseters, bpy_bmvertseq_methods, BPy_BMVertSeq_Type, and NULL.
Referenced by BPyInit_bmesh().
|
static |
Definition at line 245 of file bmesh_py_types.c.
References BPY_BM_IS_VALID.
|
static |
Definition at line 3049 of file bmesh_py_types.c.
References BM_EDGES_OF_FACE, BM_EDGES_OF_MESH, BM_EDGES_OF_VERT, BM_FACES_OF_EDGE, BM_FACES_OF_MESH, BM_FACES_OF_VERT, BM_LOOPS_OF_EDGE, BM_LOOPS_OF_FACE, BM_LOOPS_OF_LOOP, BM_LOOPS_OF_VERT, BM_VERTS_OF_EDGE, BM_VERTS_OF_FACE, BM_VERTS_OF_MESH, BPy_BMEdge_Type, BPy_BMFace_Type, BPy_BMLoop_Type, BPy_BMVert_Type, itype, and NULL.
Referenced by bpy_bmelemseq_contains().
Definition at line 4206 of file bmesh_py_types.c.
References bm, BPy_BMEdge_CreatePyObject(), and ret.
|
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.
|
static |
Definition at line 1696 of file bmesh_py_types.c.
References angle(), BM_edge_calc_face_angle_signed_ex(), BPY_BM_CHECK_OBJ, NULL, and self.
|
static |
Definition at line 1643 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, len_v3v3(), and self.
|
static |
Definition at line 1737 of file bmesh_py_types.c.
References BM_edge_calc_face_tangent(), BPY_BM_CHECK_OBJ, BPy_BMLoop_Type, BPy_BMLoop::l, NULL, self, and Vector_CreatePyObject().
Definition at line 3840 of file bmesh_py_types.c.
References BLI_assert, bm, BM_data_layer_add(), BPy_BMEdge_Type, CD_BM_ELEM_PYPTR, CustomData_bmesh_get(), BMHeader::data, e, BMesh::edata, BMVert::head, NULL, ptr, and UNLIKELY.
Referenced by bpy_bm_utils_edge_rotate(), bpy_bm_utils_edge_split(), bpy_bm_utils_vert_collapse_edge(), bpy_bm_utils_vert_collapse_faces(), BPy_BMEdge_Array_As_Tuple(), bpy_bmedgeseq_get__method(), bpy_bmedgeseq_new(), BPy_BMElem_CreatePyObject(), and bpy_bmloop_edge_get().
|
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().
|
static |
Definition at line 412 of file bmesh_py_types.c.
References BM_edge_is_boundary(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 387 of file bmesh_py_types.c.
References BM_edge_is_contiguous(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 396 of file bmesh_py_types.c.
References BM_edge_is_convex(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 378 of file bmesh_py_types.c.
References BM_edge_is_manifold(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 404 of file bmesh_py_types.c.
References BM_edge_is_wire(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 1796 of file bmesh_py_types.c.
References BM_edge_normals_update(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 1763 of file bmesh_py_types.c.
References BM_edge_other_vert(), BPY_BM_CHECK_OBJ, BPY_BM_CHECK_SOURCE_OBJ, BPy_BMVert_Check, BPy_BMVert_CreatePyObject(), NULL, self, and BPy_BMVert::v.
|
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().
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().
Definition at line 179 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMEdgeSeq_CreatePyObject(), and self.
|
static |
Definition at line 2418 of file bmesh_py_types.c.
References bm, BM_edge_exists(), BM_VERT, BPY_BM_CHECK_OBJ, BPy_BMEdge_CreatePyObject(), BPy_BMElem_PySeq_As_Array(), e, NULL, and ret.
|
static |
Definition at line 2209 of file bmesh_py_types.c.
References bm, BPy_BMEdge::bm, BM_CREATE_NOP, BM_edge_create(), BM_edge_exists(), BM_elem_attrs_copy(), BM_VERT, BPY_BM_CHECK_OBJ, BPy_BMEdge_CreatePyObject(), BPy_BMEdge_Type, BPy_BMElem_PySeq_As_Array(), e, BPy_BMEdge::e, NULL, and ret.
|
static |
Definition at line 2368 of file bmesh_py_types.c.
References bm, BM_edge_kill(), BPY_BM_CHECK_OBJ, BPY_BM_CHECK_SOURCE_OBJ, bpy_bm_generic_invalidate(), BPy_BMEdge_Check, BPy_BMEdge::e, and NULL.
Definition at line 4188 of file bmesh_py_types.c.
References bm, BPy_BMElem_CreatePyObject(), and ret.
|
static |
Definition at line 3308 of file bmesh_py_types.c.
References BPY_BM_CHECK_INT, and BPy_BMLayerItem_SetItem().
int BPy_BMElem_CheckHType | ( | PyTypeObject * | type, |
const char | htype | ||
) |
Definition at line 4237 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 type.
Referenced by BPy_BMElem_PySeq_As_Array_FAST().
Just checks type and creates vert/edge/face/loop.
Definition at line 3972 of file bmesh_py_types.c.
References BLI_assert_unreachable, bm, BM_EDGE, BM_FACE, BM_LOOP, BM_VERT, BPy_BMEdge_CreatePyObject(), BPy_BMFace_CreatePyObject(), BPy_BMLoop_CreatePyObject(), BPy_BMVert_CreatePyObject(), BMHeader::htype, and NULL.
Referenced by bpy_bmeditseliter_next(), bpy_bmeditselseq_active_get(), bpy_bmeditselseq_subscript_int(), bpy_bmeditselseq_subscript_slice(), BPy_BMElem_Array_As_Tuple(), bpy_bmelemseq_subscript_int(), bpy_bmelemseq_subscript_slice(), bpy_bmfaceseq_active_get(), bpy_bmiter_next(), and bpy_slot_to_py().
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 | ||
) |
Definition at line 4164 of file bmesh_py_types.c.
References BPy_BMElem_PySeq_As_Array_FAST(), max, min, NULL, and ret.
Referenced by bpy_bm_utils_face_join(), bpy_bm_utils_face_split_edgenet(), bpy_bm_utils_vert_separate(), bpy_bmedgeseq_get__method(), bpy_bmedgeseq_new(), BPy_BMEditSel_Assign(), bpy_bmfaceseq_get__method(), bpy_bmfaceseq_new(), bpy_bmvert_copy_from_vert_interp(), and bpy_slot_from_py().
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().
char* BPy_BMElem_StringFromHType | ( | const char | htype | ) |
Definition at line 4266 of file bmesh_py_types.c.
References BPy_BMElem_StringFromHType_ex(), and ret.
Referenced by BPy_BMElem_PySeq_As_Array_FAST(), and bpy_slot_from_py_elem_check().
char* BPy_BMElem_StringFromHType_ex | ( | char | htype, |
char | ret[32] | ||
) |
Use for error strings only, not thread safe,
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().
|
static |
Definition at line 3301 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, and BPy_BMLayerItem_GetItem().
|
static |
Definition at line 3278 of file bmesh_py_types.c.
References BPy_BMElem::bm, BM_ITER_BPY_BM_SEQ, BPY_BM_CHECK_INT, bpy_bm_itype_as_pytype(), BPy_BMElem::ele, and self.
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().
|
static |
Definition at line 3449 of file bmesh_py_types.c.
References self.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 237 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMElemSeq_CreatePyObject(), itype, POINTER_AS_INT, and self.
|
static |
Definition at line 2565 of file bmesh_py_types.c.
References bm_iter_itype_htype_map, BM_mesh_elem_table_ensure(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 2520 of file bmesh_py_types.c.
References bm, BM_EDGE, BM_EDGES_OF_MESH, BM_elem_index_set, BM_FACE, BM_FACES_OF_MESH, BM_ITER_BPY_BM_SEQ, bm_iter_itype_htype_map, BM_mesh_elem_index_ensure(), BM_VERT, BM_VERTS_OF_MESH, BPY_BM_CHECK_OBJ, BMesh::elem_index_dirty, and self.
|
static |
Definition at line 3346 of file bmesh_py_types.c.
References BM_iter_init(), BPY_BM_CHECK_OBJ, BPy_BMIter_CreatePyObject(), BPy_BMIter::iter, NULL, and self.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 549 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMLayerAccess_CreatePyObject(), POINTER_AS_INT, and self.
|
static |
Definition at line 3079 of file bmesh_py_types.c.
References BM_EDGES_OF_FACE, BM_EDGES_OF_MESH, BM_FACES_OF_MESH, BM_ITER_BPY_BM_SEQ, BM_LOOPS_OF_FACE, BM_VERTS_OF_EDGE, BM_VERTS_OF_FACE, BM_VERTS_OF_MESH, BPY_BM_CHECK_INT, and self.
Referenced by bpy_bmelemseq_subscript(), and bpy_bmelemseq_subscript_int().
|
static |
Definition at line 2635 of file bmesh_py_types.c.
|
static |
Definition at line 2610 of file bmesh_py_types.c.
Referenced by bpy_bmelemseq_sort_cmp_by_keys_descending().
|
static |
Definition at line 2628 of file bmesh_py_types.c.
References bpy_bmelemseq_sort_cmp_by_keys_ascending().
|
static |
Definition at line 3219 of file bmesh_py_types.c.
References bpy_bmelemseq_length(), bpy_bmelemseq_subscript_int(), bpy_bmelemseq_subscript_slice(), CLAMP_MIN, len, and NULL.
|
static |
Definition at line 3121 of file bmesh_py_types.c.
References bm, BM_EDGES_OF_MESH, BM_FACES_OF_MESH, BM_iter_at_index(), bm_iter_itype_htype_map, BM_VERTS_OF_MESH, BPY_BM_CHECK_OBJ, BPy_BMElem_CreatePyObject(), bpy_bmelemseq_length(), NULL, self, BMesh::totedge, BMesh::totface, and BMesh::totvert.
Referenced by bpy_bmelemseq_subscript().
|
static |
Definition at line 3175 of file bmesh_py_types.c.
References BLI_assert, BM_iter_init(), BPY_BM_CHECK_OBJ, BPy_BMElem_CreatePyObject(), count, NULL, self, and UNLIKELY.
Referenced by bpy_bmelemseq_subscript().
|
static |
Definition at line 1379 of file bmesh_py_types.c.
References bm, BM_mesh_calc_tessellation(), BPY_BM_CHECK_OBJ, BPy_BMLoop_Array_As_Tuple(), poly_to_tri_count(), ret, BMesh::totface, and BMesh::totloop.
|
static |
Definition at line 1357 of file bmesh_py_types.c.
References BM_mesh_calc_volume(), BPY_BM_CHECK_OBJ, NULL, and self.
|
static |
Definition at line 960 of file bmesh_py_types.c.
References bm, BM_mesh_clear(), and BPY_BM_CHECK_OBJ.
|
static |
Definition at line 937 of file bmesh_py_types.c.
References bm, BM_mesh_copy(), BPY_BM_CHECK_OBJ, BPy_BMesh_CreatePyObject(), BPY_BMFLAG_NOP, and NULL.
PyObject* BPy_BMesh_CreatePyObject | ( | BMesh * | bm, |
int | flag | ||
) |
Definition at line 3787 of file bmesh_py_types.c.
References bm, BM_data_layer_add(), BPy_BMesh_Type, CD_BM_ELEM_PYPTR, BMesh::edata, BMesh::ldata, BMesh::pdata, BMesh::py_handle, and BMesh::vdata.
Referenced by bpy_bm_from_edit_mesh(), bpy_bm_new(), and bpy_bmesh_copy().
Definition at line 3370 of file bmesh_py_types.c.
References bm, BM_data_layer_free(), bm_dealloc_editmode_warn(), BM_mesh_free(), BPY_BMFLAG_IS_WRAPPED, CD_BM_ELEM_PYPTR, CustomData_has_layer(), BMesh::edata, BMesh::ldata, NULL, BMesh::pdata, BMesh::py_handle, self, and BMesh::vdata.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 984 of file bmesh_py_types.c.
References bm, bm_dealloc_editmode_warn(), BM_mesh_free(), bpy_bm_generic_invalidate(), BPY_BMFLAG_IS_WRAPPED, and self.
|
static |
Definition at line 1178 of file bmesh_py_types.c.
References bm, BM_mesh_bm_from_me(), BPY_BM_CHECK_OBJ, NULL, PyC_ParseBool(), and PyC_RNA_AsPointer().
|
static |
Definition at line 1067 of file bmesh_py_types.c.
References BKE_id_free(), BKE_mesh_new_from_object(), bm, BM_mesh_bm_from_me(), BPY_BM_CHECK_OBJ, CD_MASK_BMESH, DAG_EVAL_RENDER, DEG_get_evaluated_object(), DEG_get_evaluated_scene(), DEG_get_mode(), depsgraph, Object::id, mesh_get_eval_deform(), mesh_get_eval_final(), ID::name, NULL, OB_MESH, PyC_ParseBool(), PyC_RNA_AsPointer(), and Object::type.
|
static |
Definition at line 253 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPY_BMFLAG_IS_WRAPPED, and self.
|
static |
Definition at line 1272 of file bmesh_py_types.c.
References BM_mesh_normals_update(), BPY_BM_CHECK_OBJ, and 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().
|
static |
Definition at line 1242 of file bmesh_py_types.c.
References BM_mesh_deselect_flush(), BM_mesh_select_flush(), BPY_BM_CHECK_OBJ, NULL, PyC_Long_AsBool(), and self.
|
static |
Definition at line 1226 of file bmesh_py_types.c.
References BM_mesh_select_mode_flush(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 291 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMEditSel_CreatePyObject(), and self.
|
static |
Definition at line 298 of file bmesh_py_types.c.
References BPY_BM_CHECK_INT, and BPy_BMEditSel_Assign().
|
static |
Definition at line 263 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, bpy_bm_scene_vert_edge_face_flags, PyC_FlagSet_FromBitfield(), and self.
|
static |
Definition at line 270 of file bmesh_py_types.c.
References BPY_BM_CHECK_INT, bpy_bm_scene_vert_edge_face_flags, and PyC_FlagSet_ToBitfield().
|
static |
Definition at line 1008 of file bmesh_py_types.c.
References BKE_id_is_in_global_main(), BLI_assert, bm, BM_mesh_bm_to_me(), BPY_BM_CHECK_OBJ, DEG_id_tag_update(), Mesh::edit_mesh, G_MAIN, Mesh::id, ID_RECALC_GEOMETRY_ALL_MODES, LIB_TAG_NO_MAIN, ID::name, NULL, params, PyC_RNA_AsPointer(), and ID::tag.
|
static |
Definition at line 1291 of file bmesh_py_types.c.
References BaseMath_ReadCallback, BM_elem_flag_test, BM_ITER_MESH, BM_VERTS_OF_MESH, BPY_BM_CHECK_OBJ, bpy_bm_hflag_all_flags, BMVert::co, MatrixObject::col_num, filter(), matrix_Type, mul_m4_v3(), NULL, PyC_FlagSet_ToBitfield(), MatrixObject::row_num, and self.
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().
|
static |
Definition at line 1893 of file bmesh_py_types.c.
References BM_face_calc_area(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 2019 of file bmesh_py_types.c.
References BM_face_calc_center_bounds(), BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject().
|
static |
Definition at line 1987 of file bmesh_py_types.c.
References BM_face_calc_center_median(), BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject().
|
static |
Definition at line 2003 of file bmesh_py_types.c.
References BM_face_calc_center_median_weighted(), BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject().
|
static |
Definition at line 1906 of file bmesh_py_types.c.
References BM_face_calc_perimeter(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 1919 of file bmesh_py_types.c.
References BM_face_calc_tangent_edge(), BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject().
|
static |
Definition at line 1955 of file bmesh_py_types.c.
References BM_face_calc_tangent_edge_diagonal(), BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject().
|
static |
Definition at line 1939 of file bmesh_py_types.c.
References BM_face_calc_tangent_edge_pair(), BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject().
|
static |
Definition at line 1971 of file bmesh_py_types.c.
References BM_face_calc_tangent_vert_diagonal(), BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject().
|
static |
Definition at line 1854 of file bmesh_py_types.c.
References bm, BM_face_copy(), BPY_BM_CHECK_OBJ, BPy_BMFace_CreatePyObject(), NULL, PyC_ParseBool(), and self.
|
static |
Definition at line 1818 of file bmesh_py_types.c.
References bm, BM_face_interp_from_face(), BPY_BM_CHECK_OBJ, BPY_BM_CHECK_SOURCE_OBJ, BPy_BMFace_Type, BPy_BMFace::f, NULL, PyC_ParseBool(), and self.
Definition at line 3866 of file bmesh_py_types.c.
References BLI_assert, bm, BM_data_layer_add(), BPy_BMFace_Type, CD_BM_ELEM_PYPTR, CustomData_bmesh_get(), BMHeader::data, BMFace::head, NULL, BMesh::pdata, ptr, and UNLIKELY.
Referenced by bpy_bm_utils_face_join(), bpy_bm_utils_face_split(), BPy_BMElem_CreatePyObject(), BPy_BMFace_Array_As_Tuple(), bpy_bmface_copy(), bpy_bmfaceseq_get__method(), bpy_bmfaceseq_new(), and bpy_bmloop_face_get().
|
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().
|
static |
Definition at line 442 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 448 of file bmesh_py_types.c.
References BPY_BM_CHECK_INT, and MAXMAT.
|
static |
Definition at line 2046 of file bmesh_py_types.c.
References BM_face_normal_flip(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 424 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject_wrap().
|
static |
Definition at line 430 of file bmesh_py_types.c.
References BPY_BM_CHECK_INT, mathutils_array_parse(), and self.
|
static |
Definition at line 2033 of file bmesh_py_types.c.
References BM_face_normal_update(), BPY_BM_CHECK_OBJ, and 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().
|
static |
Definition at line 560 of file bmesh_py_types.c.
References BMesh::act_face, bm, BPY_BM_CHECK_OBJ, and BPy_BMElem_CreatePyObject().
|
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.
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().
Definition at line 187 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMFaceSeq_CreatePyObject(), and self.
|
static |
Definition at line 2464 of file bmesh_py_types.c.
References bm, BM_face_exists(), BM_VERT, BPY_BM_CHECK_OBJ, BPy_BMElem_PySeq_As_Array(), BPy_BMFace_CreatePyObject(), NULL, and ret.
|
static |
Definition at line 2276 of file bmesh_py_types.c.
References bm, BM_CREATE_NOP, BM_face_create_verts(), BM_face_exists(), BM_VERT, BPY_BM_CHECK_OBJ, BPy_BMElem_PySeq_As_Array(), BPy_BMFace_CreatePyObject(), BPy_BMFace_Type, BPy_BMFace::f, NULL, ret, and UNLIKELY.
|
static |
Definition at line 2390 of file bmesh_py_types.c.
References bm, BM_face_kill(), BPY_BM_CHECK_OBJ, BPY_BM_CHECK_SOURCE_OBJ, bpy_bm_generic_invalidate(), BPy_BMFace_Check, BPy_BMFace::f, and NULL.
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().
|
static |
Definition at line 3356 of file bmesh_py_types.c.
References BPy_BMElem_CreatePyObject(), NULL, and self.
Referenced by BPy_BM_init_types().
Definition at line 4226 of file bmesh_py_types.c.
References bm, BPy_BMLoop_CreatePyObject(), and ret.
Referenced by bpy_bmesh_calc_loop_triangles().
|
static |
Definition at line 2106 of file bmesh_py_types.c.
References BM_loop_calc_face_angle(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 2120 of file bmesh_py_types.c.
References BM_loop_calc_face_normal(), BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject().
|
static |
Definition at line 2137 of file bmesh_py_types.c.
References BM_loop_calc_face_tangent(), BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject().
|
static |
Definition at line 2070 of file bmesh_py_types.c.
References bm, BM_loop_interp_from_face(), BPY_BM_CHECK_OBJ, BPY_BM_CHECK_SOURCE_OBJ, BPy_BMFace_Type, BPy_BMFace::f, NULL, PyC_ParseBool(), and self.
Definition at line 3892 of file bmesh_py_types.c.
References BLI_assert, bm, BM_data_layer_add(), BPy_BMLoop_Type, CD_BM_ELEM_PYPTR, CustomData_bmesh_get(), BMHeader::data, BMLoop::head, l, BMesh::ldata, NULL, ptr, and UNLIKELY.
Referenced by bpy_bm_utils_face_split(), BPy_BMElem_CreatePyObject(), BPy_BMLoop_Array_As_Tuple(), bpy_bmloop_link_loop_next_get(), bpy_bmloop_link_loop_prev_get(), bpy_bmloop_link_loop_radial_next_get(), and bpy_bmloop_link_loop_radial_prev_get().
|
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().
|
static |
Definition at line 482 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMEdge_CreatePyObject(), and self.
|
static |
Definition at line 490 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMFace_CreatePyObject(), and self.
|
static |
Definition at line 531 of file bmesh_py_types.c.
References BM_loop_is_convex(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 498 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMLoop_CreatePyObject(), and self.
|
static |
Definition at line 506 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMLoop_CreatePyObject(), and self.
|
static |
Definition at line 514 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMLoop_CreatePyObject(), and self.
|
static |
Definition at line 522 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMLoop_CreatePyObject(), and 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().
|
static |
Definition at line 473 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMVert_CreatePyObject(), and self.
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().
Definition at line 199 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMLoopSeq_CreatePyObject(), and self.
Definition at line 4197 of file bmesh_py_types.c.
References bm, BPy_BMVert_CreatePyObject(), and ret.
Referenced by bpy_bm_utils_vert_separate().
|
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.
|
static |
Definition at line 1611 of file bmesh_py_types.c.
References BM_vert_calc_shell_factor(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 311 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject_wrap().
|
static |
Definition at line 317 of file bmesh_py_types.c.
References BPY_BM_CHECK_INT, mathutils_array_parse(), and self.
|
static |
Definition at line 1542 of file bmesh_py_types.c.
References bm, BM_vert_interp_from_face(), BPY_BM_CHECK_OBJ, BPY_BM_CHECK_SOURCE_OBJ, BPy_BMFace_Type, BPy_BMFace::f, NULL, and self.
|
static |
Definition at line 1499 of file bmesh_py_types.c.
References bm, BM_data_interp_from_verts(), BM_VERT, BPY_BM_CHECK_OBJ, BPy_BMElem_PySeq_As_Array(), clamp_f(), NULL, and self.
Definition at line 3814 of file bmesh_py_types.c.
References BLI_assert, bm, BM_data_layer_add(), BPy_BMVert_Type, CD_BM_ELEM_PYPTR, CustomData_bmesh_get(), BMHeader::data, BMVert::head, NULL, ptr, UNLIKELY, v, and BMesh::vdata.
Referenced by bpy_bm_utils_edge_split(), bpy_bm_utils_face_vert_separate(), bpy_bm_utils_loop_separate(), bpy_bmedge_other_vert(), BPy_BMElem_CreatePyObject(), bpy_bmloop_vert_get(), BPy_BMVert_Array_As_Tuple(), and bpy_bmvertseq_new().
|
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().
|
static |
Definition at line 367 of file bmesh_py_types.c.
References BM_vert_is_boundary(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 350 of file bmesh_py_types.c.
References BM_vert_is_manifold(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 358 of file bmesh_py_types.c.
References BM_vert_is_wire(), BPY_BM_CHECK_OBJ, and self.
|
static |
Definition at line 331 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, NULL, self, and Vector_CreatePyObject_wrap().
|
static |
Definition at line 337 of file bmesh_py_types.c.
References BPY_BM_CHECK_INT, mathutils_array_parse(), and self.
|
static |
Definition at line 1626 of file bmesh_py_types.c.
References BM_vert_normal_update(), BPY_BM_CHECK_OBJ, and 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().
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().
Definition at line 171 of file bmesh_py_types.c.
References BPY_BM_CHECK_OBJ, BPy_BMVertSeq_CreatePyObject(), and self.
|
static |
Definition at line 2158 of file bmesh_py_types.c.
References bm, BPy_BMVert::bm, BM_CREATE_NOP, BM_elem_attrs_copy(), BM_vert_create(), BPY_BM_CHECK_OBJ, BPy_BMVert_CreatePyObject(), BPy_BMVert_Type, mathutils_array_parse(), NULL, v, and BPy_BMVert::v.
|
static |
Definition at line 2346 of file bmesh_py_types.c.
References bm, BM_vert_kill(), BPY_BM_CHECK_OBJ, BPY_BM_CHECK_SOURCE_OBJ, bpy_bm_generic_invalidate(), BPy_BMVert_Check, NULL, and BPy_BMVert::v.
PyObject* BPyInit_bmesh_types | ( | void | ) |
Definition at line 3749 of file bmesh_py_types.c.
References BPy_BM_types_module_def, BPy_BMDeformVert_Type, BPy_BMEdge_Type, BPy_BMEdgeSeq_Type, BPy_BMEditSelIter_Type, BPy_BMEditSelSeq_Type, BPy_BMElemSeq_Type, BPy_BMesh_Type, BPy_BMFace_Type, BPy_BMFaceSeq_Type, BPy_BMIter_Type, BPy_BMLayerAccessEdge_Type, BPy_BMLayerAccessFace_Type, BPy_BMLayerAccessLoop_Type, BPy_BMLayerAccessVert_Type, BPy_BMLayerCollection_Type, BPy_BMLayerItem_Type, BPy_BMLoop_Type, BPy_BMLoopSeq_Type, BPy_BMLoopUV_Type, BPy_BMVert_Type, and BPy_BMVertSeq_Type.
Referenced by BPyInit_bmesh().
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 | ( | bpy_bm_elem_hide_doc | , |
"Hidden state of this element.\n\n:type: boolean" | |||
) |
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 | ( | 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 | ( | bpy_bm_elem_seam_doc | , |
"Seam for UV unwrapping.\n\n:type: boolean" | |||
) |
PyDoc_STRVAR | ( | bpy_bm_elem_select_doc | , |
"Selected state of this element.\n\n:type: boolean" | |||
) |
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 | ( | bpy_bm_elem_smooth_doc | , |
"Smooth 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_is_valid_doc | , |
"True when this element is valid (hasn't been removed).\n\n:type: boolean" | |||
) |
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 | ( | 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 | ( | bpy_bmedge_calc_length_doc | , |
".. method:: calc_length()\n" "\n" " :return: The length between both verts.\n" " :rtype: float\n" | |||
) |
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 | ( | bpy_bmedge_doc | , |
"The BMesh edge connecting 2 verts\n" | |||
) |
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 | ( | 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 | ( | 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 | ( | bpy_bmedge_is_manifold_doc | , |
"True when this edge is manifold (read-only).\n\n:type: boolean" | |||
) |
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 | ( | 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_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 | ( | 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 | ( | bpy_bmedge_verts_doc | , |
"Verts this edge uses | always 2, | ||
(read-only).\n\n:type::class:`BMElemSeq` of " ":class:`BMVert`" | |||
) |
PyDoc_STRVAR | ( | bpy_bmedgeseq_doc | , |
"This meshes edge sequence (read-only).\n\n:type: :class:`BMEdgeSeq`" | |||
) |
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 | ( | 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 | ( | bpy_bmedgeseq_remove_doc | , |
".. method:: remove(edge)\n" "\n" " Remove an edge.\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_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 | ( | 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 | ( | 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`" | |||
) |
PyDoc_STRVAR | ( | bpy_bmelemseq_layers_vert_doc | , |
"custom-data layers (read-only).\n\n:type: :class:`BMLayerAccessVert`" | |||
) |
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 | ( | 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 | ( | 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 | ( | bpy_bmesh_copy_doc | , |
".. method:: copy()\n" "\n" " :return: A copy of this BMesh.\n" " :rtype: :class:`BMesh`\n" | |||
) |
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 | ( | 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 | ( | 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 | ( | bpy_bmesh_is_wrapped_doc | , |
"True when this mesh is owned by blender (typically the editmode BMesh).\n\n:type: boolean" | |||
) |
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 | ( | 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 | ( | 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 | ( | bpy_bmesh_select_history_doc | , |
"Sequence of selected items (the last is displayed as active).\n\n:type: " ":class:`BMEditSelSeq`" | |||
) |
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 | ( | 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 | ( | 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 | ( | 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 | ( | 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 | ( | 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 | ( | 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 | ( | 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 | ( | 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 | ( | 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 | ( | 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 | ( | 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 | ( | 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 | ( | 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 | ( | bpy_bmface_doc | , |
"The BMesh face with 3 or more sides\n" | |||
) |
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_bmface_material_index_doc | , |
"The face's material index.\n\n:type: int" | |||
) |
PyDoc_STRVAR | ( | bpy_bmface_normal_doc | , |
"The normal for this face as a | 3D, | ||
wrapped vector.\n\n:type::class:`mathutils.Vector`" | |||
) |
PyDoc_STRVAR | ( | bpy_bmface_normal_flip_doc | , |
".. method:: normal_flip()\n" "\n" " Reverses winding of a | face, | ||
which flips its normal.\n" | |||
) |
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 | ( | bpy_bmface_verts_doc | , |
"Verts of this | face, | ||
(read-only).\n\n:type::class:`BMElemSeq` of :class:`BMVert`" | |||
) |
PyDoc_STRVAR | ( | bpy_bmfaceseq_active_doc | , |
"active face.\n\n:type: :class:`BMFace` or None" | |||
) |
PyDoc_STRVAR | ( | bpy_bmfaceseq_doc | , |
"This meshes face sequence (read-only).\n\n:type: :class:`BMFaceSeq`" | |||
) |
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 | ( | 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 | ( | bpy_bmfaceseq_remove_doc | , |
".. method:: remove(face)\n" "\n" " Remove a face.\n" | |||
) |
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 | ( | 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 | ( | 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 | ( | 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 | ( | 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 | ( | 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_bmloop_edge_doc | , |
"The loop's edge | between this loop and the next, | ||
(read-only).\n\n:type::class:`BMEdge`" | |||
) |
PyDoc_STRVAR | ( | bpy_bmloop_face_doc | , |
"The face this loop makes (read-only).\n\n:type: :class:`BMFace`" | |||
) |
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 | ( | bpy_bmloop_link_loop_next_doc | , |
"The next face corner (read-only).\n\n:type: :class:`BMLoop`" | |||
) |
PyDoc_STRVAR | ( | bpy_bmloop_link_loop_prev_doc | , |
"The previous face corner (read-only).\n\n:type: :class:`BMLoop`" | |||
) |
PyDoc_STRVAR | ( | bpy_bmloop_link_loop_radial_next_doc | , |
"The next loop around the edge (read-only).\n\n:type: :class:`BMLoop`" | |||
) |
PyDoc_STRVAR | ( | bpy_bmloop_link_loop_radial_prev_doc | , |
"The previous loop around the edge (read-only).\n\n:type: :class:`BMLoop`" | |||
) |
PyDoc_STRVAR | ( | bpy_bmloop_vert_doc | , |
"The loop's vertex (read-only).\n\n:type: :class:`BMVert`" | |||
) |
PyDoc_STRVAR | ( | bpy_bmloops_link_loops_doc | , |
"Loops connected to this | loop, | ||
(read-only).\n\n:type::class:`BMElemSeq` of :class:`BMLoop`" | |||
) |
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 | ( | 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 | ( | 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 | ( | bpy_bmvert_co_doc | , |
"The coordinates for this vertex as a | 3D, | ||
wrapped vector.\n\n:type:" ":class:`mathutils.Vector`" | |||
) |
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 | ( | 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 | ( | bpy_bmvert_doc | , |
"The BMesh vertex type\n" | |||
) |
PyDoc_STRVAR | ( | bpy_bmvert_is_boundary_doc | , |
"True when this vertex is connected to boundary edges (read-only).\n\n:type: boolean" | |||
) |
PyDoc_STRVAR | ( | bpy_bmvert_is_manifold_doc | , |
"True when this vertex is manifold (read-only).\n\n:type: boolean" | |||
) |
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 | ( | 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_bmvert_normal_doc | , |
"The normal for this vertex as a | 3D, | ||
wrapped vector.\n\n:type::class:`mathutils.Vector`" | |||
) |
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 | ( | bpy_bmvertseq_doc | , |
"This meshes vert sequence (read-only).\n\n:type: :class:`BMVertSeq`" | |||
) |
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 | ( | bpy_bmvertseq_remove_doc | , |
".. method:: remove(vert)\n" "\n" " Remove a vert.\n" | |||
) |
|
static |
Definition at line 3336 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
PyC_FlagSet bpy_bm_hflag_all_flags[] |
Definition at line 68 of file bmesh_py_types.c.
Referenced by bpy_bmesh_transform().
PyC_FlagSet bpy_bm_htype_all_flags[] |
PyC_FlagSet bpy_bm_htype_vert_edge_face_flags[] |
PyC_FlagSet bpy_bm_scene_vert_edge_face_flags[] |
Definition at line 44 of file bmesh_py_types.c.
Referenced by bpy_bmesh_select_mode_get(), and bpy_bmesh_select_mode_set().
|
static |
Definition at line 3581 of file bmesh_py_types.c.
Referenced by BPyInit_bmesh_types().
|
static |
Definition at line 684 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 2635 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
PyTypeObject BPy_BMEdge_Type |
Definition at line 3571 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types(), bpy_bm_itype_as_pytype(), bpy_bm_utils_edge_rotate(), bpy_bm_utils_edge_split(), bpy_bm_utils_face_split(), bpy_bm_utils_vert_collapse_edge(), bpy_bm_utils_vert_collapse_faces(), BPy_BMEdge_CreatePyObject(), bpy_bmedgeseq_new(), BPy_BMElem_CheckHType(), BPy_BMElem_StringFromHType_ex(), and BPyInit_bmesh_types().
|
static |
Definition at line 895 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 2635 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
PyTypeObject BPy_BMEdgeSeq_Type |
Definition at line 3576 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types(), BPy_BMEdgeSeq_CreatePyObject(), and BPyInit_bmesh_types().
|
static |
Definition at line 3329 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 3315 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 2635 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
PyTypeObject BPy_BMElemSeq_Type |
Definition at line 3574 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types(), BPy_BMElemSeq_CreatePyObject(), and BPyInit_bmesh_types().
|
static |
Definition at line 592 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 2635 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
PyTypeObject BPy_BMesh_Type |
Definition at line 3569 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types(), BPy_BMesh_CreatePyObject(), BPyInit_bmesh_types(), and C_BVHTree_FromBMesh().
|
static |
Definition at line 759 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 2635 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
PyTypeObject BPy_BMFace_Type |
Definition at line 3572 of file bmesh_py_types.c.
Referenced by bpy_bm_geometry_intersect_face_point(), BPy_BM_init_types(), bpy_bm_itype_as_pytype(), bpy_bm_utils_face_split(), bpy_bm_utils_face_split_edgenet(), bpy_bm_utils_face_vert_separate(), BPy_BMElem_CheckHType(), BPy_BMElem_StringFromHType_ex(), bpy_bmface_copy_from_face_interp(), BPy_BMFace_CreatePyObject(), bpy_bmfaceseq_new(), bpy_bmloop_copy_from_face_interp(), bpy_bmvert_copy_from_face_interp(), and BPyInit_bmesh_types().
|
static |
Definition at line 903 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 2635 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
PyTypeObject BPy_BMFaceSeq_Type |
Definition at line 3577 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types(), BPy_BMFaceSeq_CreatePyObject(), and BPyInit_bmesh_types().
PyTypeObject BPy_BMIter_Type |
Definition at line 3579 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types(), BPy_BMIter_CreatePyObject(), and BPyInit_bmesh_types().
|
static |
Definition at line 823 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 2635 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
PyTypeObject BPy_BMLoop_Type |
Definition at line 3573 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types(), bpy_bm_itype_as_pytype(), bpy_bmedge_calc_tangent(), BPy_BMElem_CheckHType(), BPy_BMElem_StringFromHType_ex(), BPy_BMLoop_CreatePyObject(), and BPyInit_bmesh_types().
|
static |
Definition at line 917 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 2635 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
PyTypeObject BPy_BMLoopSeq_Type |
Definition at line 3578 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types(), BPy_BMLoopSeq_CreatePyObject(), and BPyInit_bmesh_types().
|
static |
Definition at line 620 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 2635 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
PyTypeObject BPy_BMVert_Type |
Definition at line 3570 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types(), bpy_bm_itype_as_pytype(), bpy_bm_utils_edge_split(), bpy_bm_utils_face_split(), bpy_bm_utils_face_vert_separate(), bpy_bm_utils_vert_collapse_edge(), bpy_bm_utils_vert_collapse_faces(), bpy_bm_utils_vert_dissolve(), bpy_bm_utils_vert_separate(), bpy_bm_utils_vert_splice(), BPy_BMElem_CheckHType(), BPy_BMElem_StringFromHType_ex(), BPy_BMVert_CreatePyObject(), bpy_bmvertseq_new(), and BPyInit_bmesh_types().
|
static |
Definition at line 887 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
|
static |
Definition at line 2635 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types().
PyTypeObject BPy_BMVertSeq_Type |
Definition at line 3575 of file bmesh_py_types.c.
Referenced by BPy_BM_init_types(), BPy_BMVertSeq_CreatePyObject(), and BPyInit_bmesh_types().