Blender  V3.3
Macros | Functions
bmesh_edgeloop.h File Reference

Go to the source code of this file.

Macros

#define BM_EDGELINK_NEXT(el_store, elink)
 
#define BM_EDGELOOP_NEXT(el_store)
 

Functions

int BM_mesh_edgeloops_find (BMesh *bm, struct ListBase *r_eloops, bool(*test_fn)(BMEdge *, void *user_data), void *user_data)
 
bool BM_mesh_edgeloops_find_path (BMesh *bm, ListBase *r_eloops, bool(*test_fn)(BMEdge *, void *user_data), void *user_data, BMVert *v_src, BMVert *v_dst)
 
void BM_mesh_edgeloops_free (struct ListBase *eloops)
 
void BM_mesh_edgeloops_calc_center (BMesh *bm, struct ListBase *eloops)
 
void BM_mesh_edgeloops_calc_normal (BMesh *bm, struct ListBase *eloops)
 
void BM_mesh_edgeloops_calc_normal_aligned (BMesh *bm, struct ListBase *eloops, const float no_align[3])
 
void BM_mesh_edgeloops_calc_order (BMesh *bm, ListBase *eloops, bool use_normals)
 
struct BMEdgeLoopStoreBM_edgeloop_copy (struct BMEdgeLoopStore *el_store)
 
struct BMEdgeLoopStoreBM_edgeloop_from_verts (BMVert **v_arr, int v_arr_tot, bool is_closed)
 
void BM_edgeloop_free (struct BMEdgeLoopStore *el_store)
 
bool BM_edgeloop_is_closed (struct BMEdgeLoopStore *el_store)
 
int BM_edgeloop_length_get (struct BMEdgeLoopStore *el_store)
 
struct ListBaseBM_edgeloop_verts_get (struct BMEdgeLoopStore *el_store)
 
const floatBM_edgeloop_normal_get (struct BMEdgeLoopStore *el_store)
 
const floatBM_edgeloop_center_get (struct BMEdgeLoopStore *el_store)
 
void BM_edgeloop_edges_get (struct BMEdgeLoopStore *el_store, BMEdge **e_arr)
 
void BM_edgeloop_calc_center (BMesh *bm, struct BMEdgeLoopStore *el_store)
 
bool BM_edgeloop_calc_normal (BMesh *bm, struct BMEdgeLoopStore *el_store)
 
bool BM_edgeloop_calc_normal_aligned (BMesh *bm, struct BMEdgeLoopStore *el_store, const float no_align[3])
 
void BM_edgeloop_flip (BMesh *bm, struct BMEdgeLoopStore *el_store)
 
void BM_edgeloop_expand (BMesh *bm, struct BMEdgeLoopStore *el_store, int el_store_len, bool split, struct GSet *split_edges)
 
bool BM_edgeloop_overlap_check (struct BMEdgeLoopStore *el_store_a, struct BMEdgeLoopStore *el_store_b)
 

Macro Definition Documentation

◆ BM_EDGELINK_NEXT

#define BM_EDGELINK_NEXT (   el_store,
  elink 
)
Value:
(elink)->next ? \
(elink)->next : \
struct ListBase * BM_edgeloop_verts_get(struct BMEdgeLoopStore *el_store)
bool BM_edgeloop_is_closed(struct BMEdgeLoopStore *el_store)
static ulong * next
void * first
Definition: DNA_listBase.h:31

Definition at line 75 of file bmesh_edgeloop.h.

◆ BM_EDGELOOP_NEXT

#define BM_EDGELOOP_NEXT (   el_store)
Value:
(CHECK_TYPE_INLINE(el_store, struct BMEdgeLoopStore *), \
(struct BMEdgeLoopStore *)((LinkData *)el_store)->next)
#define CHECK_TYPE_INLINE(val, type)

Definition at line 80 of file bmesh_edgeloop.h.

Function Documentation

◆ BM_edgeloop_calc_center()

void BM_edgeloop_calc_center ( BMesh bm,
struct BMEdgeLoopStore el_store 
)

◆ BM_edgeloop_calc_normal()

bool BM_edgeloop_calc_normal ( BMesh bm,
struct BMEdgeLoopStore el_store 
)

◆ BM_edgeloop_calc_normal_aligned()

bool BM_edgeloop_calc_normal_aligned ( BMesh bm,
struct BMEdgeLoopStore el_store,
const float  no_align[3] 
)

For open loops that are straight lines, calculating the normal as if it were a polygon is meaningless.

Instead use an alignment vector and calculate the normal based on that.

◆ BM_edgeloop_center_get()

const float* BM_edgeloop_center_get ( struct BMEdgeLoopStore el_store)

Definition at line 540 of file bmesh_edgeloop.c.

References BMEdgeLoopStore::co.

Referenced by bm_edgering_pair_interpolate(), and bridge_loop_pair().

◆ BM_edgeloop_copy()

struct BMEdgeLoopStore* BM_edgeloop_copy ( struct BMEdgeLoopStore el_store)

Copy a single edge-loop.

Returns
new edge-loops.

Definition at line 490 of file bmesh_edgeloop.c.

References BLI_duplicatelist(), MEM_mallocN, and BMEdgeLoopStore::verts.

Referenced by bridge_loop_pair().

◆ BM_edgeloop_edges_get()

void BM_edgeloop_edges_get ( struct BMEdgeLoopStore el_store,
BMEdge **  e_arr 
)

◆ BM_edgeloop_expand()

void BM_edgeloop_expand ( BMesh bm,
struct BMEdgeLoopStore el_store,
int  el_store_len,
bool  split,
struct GSet split_edges 
)

◆ BM_edgeloop_flip()

void BM_edgeloop_flip ( BMesh bm,
struct BMEdgeLoopStore el_store 
)

◆ BM_edgeloop_free()

void BM_edgeloop_free ( struct BMEdgeLoopStore el_store)

◆ BM_edgeloop_from_verts()

struct BMEdgeLoopStore* BM_edgeloop_from_verts ( BMVert **  v_arr,
int  v_arr_tot,
bool  is_closed 
)

◆ BM_edgeloop_is_closed()

bool BM_edgeloop_is_closed ( struct BMEdgeLoopStore el_store)

◆ BM_edgeloop_length_get()

int BM_edgeloop_length_get ( struct BMEdgeLoopStore el_store)

◆ BM_edgeloop_normal_get()

const float* BM_edgeloop_normal_get ( struct BMEdgeLoopStore el_store)

Definition at line 535 of file bmesh_edgeloop.c.

References BMEdgeLoopStore::no.

Referenced by bm_edgering_pair_interpolate(), and bridge_loop_pair().

◆ BM_edgeloop_overlap_check()

bool BM_edgeloop_overlap_check ( struct BMEdgeLoopStore el_store_a,
struct BMEdgeLoopStore el_store_b 
)

◆ BM_edgeloop_verts_get()

struct ListBase* BM_edgeloop_verts_get ( struct BMEdgeLoopStore el_store)

◆ BM_mesh_edgeloops_calc_center()

void BM_mesh_edgeloops_calc_center ( BMesh bm,
struct ListBase eloops 
)

Definition at line 396 of file bmesh_edgeloop.c.

References bm, BM_edgeloop_calc_center(), ListBase::first, and BMEdgeLoopStore::next.

Referenced by bmo_bridge_loops_exec().

◆ BM_mesh_edgeloops_calc_normal()

void BM_mesh_edgeloops_calc_normal ( BMesh bm,
struct ListBase eloops 
)

Definition at line 404 of file bmesh_edgeloop.c.

References bm, BM_edgeloop_calc_normal(), ListBase::first, and BMEdgeLoopStore::next.

Referenced by bmo_bridge_loops_exec().

◆ BM_mesh_edgeloops_calc_normal_aligned()

void BM_mesh_edgeloops_calc_normal_aligned ( BMesh bm,
struct ListBase eloops,
const float  no_align[3] 
)

◆ BM_mesh_edgeloops_calc_order()

void BM_mesh_edgeloops_calc_order ( BMesh bm,
ListBase eloops,
bool  use_normals 
)

◆ BM_mesh_edgeloops_find()

int BM_mesh_edgeloops_find ( BMesh bm,
struct ListBase r_eloops,
bool(*)(BMEdge *, void *user_data test_fn,
void user_data 
)

◆ BM_mesh_edgeloops_find_path()

bool BM_mesh_edgeloops_find_path ( BMesh bm,
ListBase r_eloops,
bool(*)(BMEdge *, void *user_data test_fn,
void user_data,
BMVert v_src,
BMVert v_dst 
)

◆ BM_mesh_edgeloops_free()

void BM_mesh_edgeloops_free ( struct ListBase eloops)