Blender V4.3
bmesh_py_types.hh File Reference

Go to the source code of this file.

Classes

struct  BPy_BMGeneric
 
struct  BPy_BMElem
 
struct  BPy_BMesh
 
struct  BPy_BMVert
 
struct  BPy_BMEdge
 
struct  BPy_BMFace
 
struct  BPy_BMLoop
 
struct  BPy_BMElemSeq
 
struct  BPy_BMIter
 

Macros

#define BPy_BMesh_Check(v)   (Py_TYPE(v) == &BPy_BMesh_Type)
 
#define BPy_BMVert_Check(v)   (Py_TYPE(v) == &BPy_BMVert_Type)
 
#define BPy_BMEdge_Check(v)   (Py_TYPE(v) == &BPy_BMEdge_Type)
 
#define BPy_BMFace_Check(v)   (Py_TYPE(v) == &BPy_BMFace_Type)
 
#define BPy_BMLoop_Check(v)   (Py_TYPE(v) == &BPy_BMLoop_Type)
 
#define BPy_BMElemSeq_Check(v)   (Py_TYPE(v) == &BPy_BMElemSeq_Type)
 
#define BPy_BMVertSeq_Check(v)   (Py_TYPE(v) == &BPy_BMVertSeq_Type)
 
#define BPy_BMEdgeSeq_Check(v)   (Py_TYPE(v) == &BPy_BMEdgeSeq_Type)
 
#define BPy_BMFaceSeq_Check(v)   (Py_TYPE(v) == &BPy_BMFaceSeq_Type)
 
#define BPy_BMLoopSeq_Check(v)   (Py_TYPE(v) == &BPy_BMLoopSeq_Type)
 
#define BPy_BMIter_Check(v)   (Py_TYPE(v) == &BPy_BMIter_Type)
 
#define BPy_BMElem_Check(v)   (Py_TYPE(v)->tp_hash == BPy_BMVert_Type.tp_hash)
 
#define BPY_BM_CHECK_OBJ(obj)
 
#define BPY_BM_CHECK_INT(obj)
 
#define BPY_BM_CHECK_SOURCE_OBJ(bm, errmsg, ...)
 
#define BPY_BM_CHECK_SOURCE_INT(bm, errmsg, ...)
 
#define BPY_BM_IS_VALID(obj)   (LIKELY((obj)->bm != NULL))
 
#define BM_ITER_BPY_BM_SEQ(ele, iter, bpy_bmelemseq)
 

Enumerations

enum  { BPY_BMFLAG_NOP = 0 , BPY_BMFLAG_IS_WRAPPED = 1 }
 

Functions

void BPy_BM_init_types ()
 
PyObject * BPyInit_bmesh_types ()
 
PyObject * BPy_BMesh_CreatePyObject (BMesh *bm, int flag)
 
PyObject * BPy_BMVert_CreatePyObject (BMesh *bm, BMVert *v)
 
PyObject * BPy_BMEdge_CreatePyObject (BMesh *bm, BMEdge *e)
 
PyObject * BPy_BMFace_CreatePyObject (BMesh *bm, BMFace *f)
 
PyObject * BPy_BMLoop_CreatePyObject (BMesh *bm, BMLoop *l)
 
PyObject * BPy_BMElemSeq_CreatePyObject (BMesh *bm, BPy_BMElem *py_ele, 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)
 
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)
 
void * BPy_BMElem_PySeq_As_Array (BMesh **r_bm, PyObject *seq, 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)
 
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 *const *elem, Py_ssize_t elem_len)
 
int BPy_BMElem_CheckHType (PyTypeObject *type, char htype)
 
char * BPy_BMElem_StringFromHType_ex (char htype, char ret[32])
 
char * BPy_BMElem_StringFromHType (char htype)
 
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) ATTR_NONNULL(1
 

Variables

PyTypeObject BPy_BMesh_Type
 
PyTypeObject BPy_BMVert_Type
 
PyTypeObject BPy_BMEdge_Type
 
PyTypeObject BPy_BMFace_Type
 
PyTypeObject BPy_BMLoop_Type
 
PyTypeObject BPy_BMElemSeq_Type
 
PyTypeObject BPy_BMVertSeq_Type
 
PyTypeObject BPy_BMEdgeSeq_Type
 
PyTypeObject BPy_BMFaceSeq_Type
 
PyTypeObject BPy_BMLoopSeq_Type
 
PyTypeObject BPy_BMIter_Type
 

Macro Definition Documentation

◆ BM_ITER_BPY_BM_SEQ

#define BM_ITER_BPY_BM_SEQ ( ele,
iter,
bpy_bmelemseq )
Value:
iter, \
(bpy_bmelemseq)->bm, \
(bpy_bmelemseq)->itype, \
(bpy_bmelemseq)->py_ele ? ((BPy_BMElem *)(bpy_bmelemseq)->py_ele)->ele : NULL); \
ele; \
BM_CHECK_TYPE_ELEM_ASSIGN(ele) = BM_iter_step(iter))
#define BM_CHECK_TYPE_ELEM_ASSIGN(ele)
#define BM_iter_new(iter, bm, itype, data)
ATTR_WARN_UNUSED_RESULT BMesh const char itype
ATTR_WARN_UNUSED_RESULT BMesh * bm
#define NULL

Definition at line 228 of file bmesh_py_types.hh.

Referenced by bpy_bmelemseq_contains(), bpy_bmelemseq_index_update(), bpy_bmelemseq_length(), bpy_bmelemseq_sort(), and bpy_slot_from_py().

◆ BPY_BM_CHECK_INT

◆ BPY_BM_CHECK_OBJ

#define BPY_BM_CHECK_OBJ ( obj)
Value:
return NULL; \
} \
(void)0

Definition at line 193 of file bmesh_py_types.hh.

Referenced by bpy_bm_elem_copy_from(), bpy_bm_elem_hflag_get(), bpy_bm_elem_hide_set(), bpy_bm_elem_index_get(), bpy_bm_elem_select_set(), bpy_bm_geometry_intersect_face_point(), bpy_bm_utils_edge_rotate(), bpy_bm_utils_edge_split(), bpy_bm_utils_face_flip(), bpy_bm_utils_face_split(), bpy_bm_utils_face_split_edgenet(), bpy_bm_utils_face_vert_separate(), bpy_bm_utils_loop_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_bmedge_calc_face_angle(), bpy_bmedge_calc_face_angle_signed(), bpy_bmedge_calc_length(), bpy_bmedge_calc_tangent(), bpy_bmedge_is_boundary_get(), bpy_bmedge_is_contiguous_get(), bpy_bmedge_is_convex_get(), bpy_bmedge_is_manifold_get(), bpy_bmedge_is_wire_get(), bpy_bmedge_normal_update(), bpy_bmedge_other_vert(), bpy_bmedgeseq_get(), bpy_bmedgeseq_get__method(), bpy_bmedgeseq_new(), bpy_bmedgeseq_remove(), bpy_bmeditselseq_active_get(), bpy_bmeditselseq_add(), bpy_bmeditselseq_clear(), bpy_bmeditselseq_discard(), bpy_bmeditselseq_iter(), bpy_bmeditselseq_remove(), bpy_bmeditselseq_subscript_int(), bpy_bmeditselseq_subscript_slice(), bpy_bmeditselseq_validate(), bpy_bmelem_subscript(), bpy_bmelemseq_elem_get(), bpy_bmelemseq_ensure_lookup_table(), bpy_bmelemseq_index_update(), bpy_bmelemseq_iter(), bpy_bmelemseq_layers_get(), bpy_bmelemseq_sort(), bpy_bmelemseq_subscript_int(), bpy_bmelemseq_subscript_slice(), bpy_bmesh_calc_loop_triangles(), bpy_bmesh_calc_volume(), bpy_bmesh_clear(), bpy_bmesh_copy(), bpy_bmesh_from_mesh(), bpy_bmesh_from_object(), bpy_bmesh_is_wrapped_get(), bpy_bmesh_normal_update(), bpy_bmesh_select_flush(), bpy_bmesh_select_flush_mode(), bpy_bmesh_select_history_get(), bpy_bmesh_select_mode_get(), bpy_bmesh_to_mesh(), bpy_bmesh_transform(), bpy_bmface_calc_area(), bpy_bmface_calc_center_bounds(), bpy_bmface_calc_center_mean(), bpy_bmface_calc_center_median_weighted(), bpy_bmface_calc_perimeter(), bpy_bmface_calc_tangent_edge(), bpy_bmface_calc_tangent_edge_diagonal(), bpy_bmface_calc_tangent_edge_pair(), bpy_bmface_calc_tangent_vert_diagonal(), bpy_bmface_copy(), bpy_bmface_copy_from_face_interp(), bpy_bmface_material_index_get(), bpy_bmface_normal_flip(), bpy_bmface_normal_get(), bpy_bmface_normal_update(), bpy_bmfaceseq_active_get(), bpy_bmfaceseq_get(), bpy_bmfaceseq_get__method(), bpy_bmfaceseq_new(), bpy_bmfaceseq_remove(), bpy_bmlayeraccess_collection_get(), bpy_bmlayercollection_active_get(), bpy_bmlayercollection_get(), bpy_bmlayercollection_is_singleton_get(), bpy_bmlayercollection_items(), bpy_bmlayercollection_iter(), bpy_bmlayercollection_keys(), bpy_bmlayercollection_new(), bpy_bmlayercollection_remove(), bpy_bmlayercollection_subscript_int(), bpy_bmlayercollection_subscript_slice(), bpy_bmlayercollection_subscript_str(), bpy_bmlayercollection_values(), bpy_bmlayercollection_verify(), bpy_bmlayeritem_copy_from(), bpy_bmlayeritem_name_get(), bpy_bmloop_calc_angle(), bpy_bmloop_calc_normal(), bpy_bmloop_calc_tangent(), bpy_bmloop_copy_from_face_interp(), bpy_bmloop_edge_get(), bpy_bmloop_face_get(), bpy_bmloop_is_convex_get(), bpy_bmloop_link_loop_next_get(), bpy_bmloop_link_loop_prev_get(), bpy_bmloop_link_loop_radial_next_get(), bpy_bmloop_link_loop_radial_prev_get(), bpy_bmloop_vert_get(), bpy_bmloopseq_get(), BPy_BMO_call(), bpy_bmvert_calc_edge_angle(), bpy_bmvert_calc_shell_factor(), bpy_bmvert_co_get(), bpy_bmvert_copy_from_face_interp(), bpy_bmvert_copy_from_vert_interp(), bpy_bmvert_is_boundary_get(), bpy_bmvert_is_manifold_get(), bpy_bmvert_is_wire_get(), bpy_bmvert_normal_get(), bpy_bmvert_normal_update(), bpy_bmvertseq_get(), bpy_bmvertseq_new(), and bpy_bmvertseq_remove().

◆ BPY_BM_CHECK_SOURCE_INT

#define BPY_BM_CHECK_SOURCE_INT ( bm,
errmsg,
... )
Value:
{ \
void *_args[] = {__VA_ARGS__}; \
if (UNLIKELY(bpy_bm_generic_valid_check_source(bm, errmsg, _args, ARRAY_SIZE(_args)) == -1)) \
{ \
return -1; \
} \
} \
(void)0
#define ARRAY_SIZE(arr)
int bpy_bm_generic_valid_check_source(BMesh *bm_source, const char *error_prefix, void **args, uint args_tot) ATTR_NONNULL(1

Definition at line 216 of file bmesh_py_types.hh.

Referenced by bpy_bmfaceseq_active_set().

◆ BPY_BM_CHECK_SOURCE_OBJ

#define BPY_BM_CHECK_SOURCE_OBJ ( bm,
errmsg,
... )

◆ BPY_BM_IS_VALID

#define BPY_BM_IS_VALID ( obj)    (LIKELY((obj)->bm != NULL))

Definition at line 226 of file bmesh_py_types.hh.

Referenced by bpy_bm_is_valid_get(), and BPy_BMElem_PySeq_As_Array_FAST().

◆ BPy_BMEdge_Check

#define BPy_BMEdge_Check ( v)    (Py_TYPE(v) == &BPy_BMEdge_Type)

◆ BPy_BMEdgeSeq_Check

#define BPy_BMEdgeSeq_Check ( v)    (Py_TYPE(v) == &BPy_BMEdgeSeq_Type)

Definition at line 39 of file bmesh_py_types.hh.

Referenced by bpy_slot_from_py().

◆ BPy_BMElem_Check

#define BPy_BMElem_Check ( v)    (Py_TYPE(v)->tp_hash == BPy_BMVert_Type.tp_hash)

◆ BPy_BMElemSeq_Check

#define BPy_BMElemSeq_Check ( v)    (Py_TYPE(v) == &BPy_BMElemSeq_Type)

Definition at line 37 of file bmesh_py_types.hh.

Referenced by bpy_slot_from_py().

◆ BPy_BMesh_Check

#define BPy_BMesh_Check ( v)    (Py_TYPE(v) == &BPy_BMesh_Type)

Definition at line 32 of file bmesh_py_types.hh.

Referenced by bpy_bm_generic_valid_check_source(), and BPy_BMO_call().

◆ BPy_BMFace_Check

◆ BPy_BMFaceSeq_Check

#define BPy_BMFaceSeq_Check ( v)    (Py_TYPE(v) == &BPy_BMFaceSeq_Type)

Definition at line 40 of file bmesh_py_types.hh.

Referenced by bpy_slot_from_py().

◆ BPy_BMIter_Check

#define BPy_BMIter_Check ( v)    (Py_TYPE(v) == &BPy_BMIter_Type)

Definition at line 42 of file bmesh_py_types.hh.

◆ BPy_BMLoop_Check

#define BPy_BMLoop_Check ( v)    (Py_TYPE(v) == &BPy_BMLoop_Type)

Definition at line 36 of file bmesh_py_types.hh.

Referenced by bpy_bm_utils_loop_separate().

◆ BPy_BMLoopSeq_Check

#define BPy_BMLoopSeq_Check ( v)    (Py_TYPE(v) == &BPy_BMLoopSeq_Type)

Definition at line 41 of file bmesh_py_types.hh.

◆ BPy_BMVert_Check

◆ BPy_BMVertSeq_Check

#define BPy_BMVertSeq_Check ( v)    (Py_TYPE(v) == &BPy_BMVertSeq_Type)

Definition at line 38 of file bmesh_py_types.hh.

Referenced by bpy_slot_from_py().

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
BPY_BMFLAG_NOP 
BPY_BMFLAG_IS_WRAPPED 

Definition at line 126 of file bmesh_py_types.hh.

Function Documentation

◆ bpy_bm_generic_valid_check()

int bpy_bm_generic_valid_check ( BPy_BMGeneric * self)

Definition at line 4367 of file bmesh_py_types.cc.

References BM_mesh_validate(), LIKELY, and self.

Referenced by bpy_bm_generic_valid_check_source().

◆ bpy_bm_generic_valid_check_source()

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

◆ BPy_BM_init_types()

◆ BPy_BMEdge_Array_As_Tuple()

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

Definition at line 4583 of file bmesh_py_types.cc.

References bm, BPy_BMEdge_CreatePyObject(), and ret.

◆ BPy_BMEdge_CreatePyObject()

◆ BPy_BMEdgeSeq_CreatePyObject()

PyObject * BPy_BMEdgeSeq_CreatePyObject ( BMesh * bm)

Definition at line 4314 of file bmesh_py_types.cc.

References bm, BM_EDGES_OF_MESH, BPy_BMEdgeSeq_Type, and self.

Referenced by bpy_bmedgeseq_get().

◆ BPy_BMElem_Array_As_Tuple()

PyObject * BPy_BMElem_Array_As_Tuple ( BMesh * bm,
BMHeader ** elem,
Py_ssize_t elem_len )

Definition at line 4565 of file bmesh_py_types.cc.

References bm, BPy_BMElem_CreatePyObject(), and ret.

◆ BPy_BMElem_CheckHType()

int BPy_BMElem_CheckHType ( PyTypeObject * type,
char htype )

◆ BPy_BMElem_CreatePyObject()

◆ BPy_BMElem_PySeq_As_Array()

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

◆ BPy_BMElem_PySeq_As_Array_FAST()

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

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

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

Definition at line 4430 of file bmesh_py_types.cc.

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

Referenced by BPy_BMElem_PySeq_As_Array().

◆ BPy_BMElem_StringFromHType()

char * BPy_BMElem_StringFromHType ( char htype)

◆ BPy_BMElem_StringFromHType_ex()

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

Use for error strings only, not thread safe,

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

Definition at line 4622 of file bmesh_py_types.cc.

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

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

◆ BPy_BMElemSeq_CreatePyObject()

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

Definition at line 4295 of file bmesh_py_types.cc.

References bm, BPy_BMElemSeq_Type, itype, and self.

Referenced by bpy_bmelemseq_elem_get().

◆ BPy_BMesh_CreatePyObject()

PyObject * BPy_BMesh_CreatePyObject ( BMesh * bm,
int flag )

◆ BPy_BMFace_Array_As_Tuple()

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

Definition at line 4593 of file bmesh_py_types.cc.

References bm, BPy_BMFace_CreatePyObject(), and ret.

Referenced by bpy_bm_utils_face_split_edgenet().

◆ BPy_BMFace_CreatePyObject()

◆ BPy_BMFaceSeq_CreatePyObject()

PyObject * BPy_BMFaceSeq_CreatePyObject ( BMesh * bm)

Definition at line 4323 of file bmesh_py_types.cc.

References bm, BM_FACES_OF_MESH, BPy_BMFaceSeq_Type, and self.

Referenced by bpy_bmfaceseq_get().

◆ BPy_BMIter_CreatePyObject()

PyObject * BPy_BMIter_CreatePyObject ( BMesh * bm)

Definition at line 4341 of file bmesh_py_types.cc.

References bm, BPy_BMIter_Type, and self.

Referenced by bpy_bmelemseq_iter().

◆ BPy_BMLoop_Array_As_Tuple()

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

Definition at line 4603 of file bmesh_py_types.cc.

References bm, BPy_BMLoop_CreatePyObject(), and ret.

Referenced by bpy_bmesh_calc_loop_triangles().

◆ BPy_BMLoop_CreatePyObject()

◆ BPy_BMLoopSeq_CreatePyObject()

PyObject * BPy_BMLoopSeq_CreatePyObject ( BMesh * bm)

Definition at line 4332 of file bmesh_py_types.cc.

References bm, BPy_BMLoopSeq_Type, and self.

Referenced by bpy_bmloopseq_get().

◆ BPy_BMVert_Array_As_Tuple()

PyObject * BPy_BMVert_Array_As_Tuple ( BMesh * bm,
BMVert ** elem,
Py_ssize_t elem_len )

Definition at line 4574 of file bmesh_py_types.cc.

References bm, BPy_BMVert_CreatePyObject(), and ret.

Referenced by bpy_bm_utils_vert_separate().

◆ BPy_BMVert_CreatePyObject()

◆ BPy_BMVertSeq_CreatePyObject()

PyObject * BPy_BMVertSeq_CreatePyObject ( BMesh * bm)

Definition at line 4305 of file bmesh_py_types.cc.

References bm, BM_VERTS_OF_MESH, BPy_BMVertSeq_Type, and self.

Referenced by bpy_bmvertseq_get().

◆ BPyInit_bmesh_types()

Variable Documentation

◆ BPy_BMEdge_Type

◆ BPy_BMEdgeSeq_Type

PyTypeObject BPy_BMEdgeSeq_Type
extern

◆ BPy_BMElemSeq_Type

PyTypeObject BPy_BMElemSeq_Type
extern

◆ BPy_BMesh_Type

PyTypeObject BPy_BMesh_Type
extern

◆ BPy_BMFace_Type

◆ BPy_BMFaceSeq_Type

PyTypeObject BPy_BMFaceSeq_Type
extern

◆ BPy_BMIter_Type

PyTypeObject BPy_BMIter_Type
extern

◆ BPy_BMLoop_Type

◆ BPy_BMLoopSeq_Type

PyTypeObject BPy_BMLoopSeq_Type
extern

◆ BPy_BMVert_Type

◆ BPy_BMVertSeq_Type

PyTypeObject BPy_BMVertSeq_Type
extern