Blender  V3.3
Macros | Enumerations | Functions
bmo_extrude.c File Reference
#include "MEM_guardedalloc.h"
#include "DNA_meshdata_types.h"
#include "BLI_buffer.h"
#include "BLI_math.h"
#include "BKE_customdata.h"
#include "bmesh.h"
#include "intern/bmesh_operators_private.h"

Go to the source code of this file.

Macros

#define USE_EDGE_REGION_FLAGS
 
#define VERT_MARK   1
 
#define EDGE_MARK   1
 
#define FACE_MARK   1
 
#define VERT_NONMAN   2
 
#define EDGE_NONMAN   2
 

Enumerations

enum  { EXT_INPUT = 1 , EXT_KEEP = 2 , EXT_DEL = 4 , EXT_TAG = 8 }
 

Functions

void bmo_extrude_discrete_faces_exec (BMesh *bm, BMOperator *op)
 
static void bm_extrude_copy_face_loop_attributes (BMesh *bm, BMFace *f)
 Copy the loop pair from an adjacent face to both sides of this quad. More...
 
static void bm_extrude_disable_skin_root (BMesh *bm, BMVert *v)
 
void bmo_extrude_edge_only_exec (BMesh *bm, BMOperator *op)
 
void bmo_extrude_vert_indiv_exec (BMesh *bm, BMOperator *op)
 
static bool bm_extrude_region_edge_flag (const BMVert *v, char r_e_hflag[2])
 
void bmo_extrude_face_region_exec (BMesh *bm, BMOperator *op)
 
static void calc_solidify_normals (BMesh *bm)
 
static void solidify_add_thickness (BMesh *bm, const float dist)
 
void bmo_solidify_face_region_exec (BMesh *bm, BMOperator *op)
 

Detailed Description

Extrude faces and solidify.

Definition in file bmo_extrude.c.

Macro Definition Documentation

◆ EDGE_MARK

#define EDGE_MARK   1

Definition at line 32 of file bmo_extrude.c.

◆ EDGE_NONMAN

#define EDGE_NONMAN   2

Definition at line 35 of file bmo_extrude.c.

◆ FACE_MARK

#define FACE_MARK   1

Definition at line 33 of file bmo_extrude.c.

◆ USE_EDGE_REGION_FLAGS

#define USE_EDGE_REGION_FLAGS

Definition at line 22 of file bmo_extrude.c.

◆ VERT_MARK

#define VERT_MARK   1

Definition at line 31 of file bmo_extrude.c.

◆ VERT_NONMAN

#define VERT_NONMAN   2

Definition at line 34 of file bmo_extrude.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
EXT_INPUT 
EXT_KEEP 
EXT_DEL 
EXT_TAG 

Definition at line 24 of file bmo_extrude.c.

Function Documentation

◆ bm_extrude_copy_face_loop_attributes()

static void bm_extrude_copy_face_loop_attributes ( BMesh bm,
BMFace f 
)
static

Copy the loop pair from an adjacent face to both sides of this quad.

The face is assumed to be a quad, created by extruding. This function won't crash if its not but won't work right either. e_b is the new edge.

Note
The edge this face comes from needs to be from the first and second verts to the face. The caller must ensure this else we will copy from the wrong source.

Definition at line 123 of file bmo_extrude.c.

References bm, BM_edge_other_loop(), BM_elem_attrs_copy(), BM_elem_flag_disable, BM_ELEM_HIDDEN, BM_FACE_FIRST_LOOP, BMLoop::e, BMLoop::f, BMLoop::next, BMLoop::radial_next, and UNLIKELY.

Referenced by bmo_extrude_edge_only_exec(), and bmo_extrude_face_region_exec().

◆ bm_extrude_disable_skin_root()

static void bm_extrude_disable_skin_root ( BMesh bm,
BMVert v 
)
static

◆ bm_extrude_region_edge_flag()

static bool bm_extrude_region_edge_flag ( const BMVert v,
char  r_e_hflag[2] 
)
static

When create an edge for an extruded face region check surrounding edge flags before creating a new edge.

Definition at line 283 of file bmo_extrude.c.

References BM_DISK_EDGE_NEXT, BM_edge_is_boundary(), BM_ELEM_SEAM, BM_ELEM_SMOOTH, BMVert::e, BMEdge::head, BMHeader::hflag, BMEdge::l, and v.

Referenced by bmo_extrude_face_region_exec().

◆ bmo_extrude_discrete_faces_exec()

void bmo_extrude_discrete_faces_exec ( BMesh bm,
BMOperator op 
)

◆ bmo_extrude_edge_only_exec()

void bmo_extrude_edge_only_exec ( BMesh bm,
BMOperator op 
)

◆ bmo_extrude_face_region_exec()

void bmo_extrude_face_region_exec ( BMesh bm,
BMOperator op 
)

◆ bmo_extrude_vert_indiv_exec()

void bmo_extrude_vert_indiv_exec ( BMesh bm,
BMOperator op 
)

◆ bmo_solidify_face_region_exec()

void bmo_solidify_face_region_exec ( BMesh bm,
BMOperator op 
)

◆ calc_solidify_normals()

static void calc_solidify_normals ( BMesh bm)
static

◆ solidify_add_thickness()

static void solidify_add_thickness ( BMesh bm,
const float  dist 
)
static