Blender V4.3
bmo_extrude.cc File Reference
#include "MEM_guardedalloc.h"
#include "DNA_meshdata_types.h"
#include "BLI_buffer.h"
#include "BLI_math_geom.h"
#include "BLI_math_vector.h"
#include "BKE_customdata.hh"
#include "bmesh.hh"
#include "intern/bmesh_operators_private.hh"

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.
 
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.cc.

Macro Definition Documentation

◆ EDGE_MARK

#define EDGE_MARK   1

Definition at line 35 of file bmo_extrude.cc.

Referenced by calc_solidify_normals().

◆ EDGE_NONMAN

#define EDGE_NONMAN   2

Definition at line 38 of file bmo_extrude.cc.

Referenced by calc_solidify_normals().

◆ FACE_MARK

#define FACE_MARK   1

◆ USE_EDGE_REGION_FLAGS

#define USE_EDGE_REGION_FLAGS

Definition at line 25 of file bmo_extrude.cc.

◆ VERT_MARK

#define VERT_MARK   1

Definition at line 34 of file bmo_extrude.cc.

Referenced by calc_solidify_normals().

◆ VERT_NONMAN

#define VERT_NONMAN   2

Definition at line 37 of file bmo_extrude.cc.

Referenced by calc_solidify_normals().

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
EXT_INPUT 
EXT_KEEP 
EXT_DEL 
EXT_TAG 

Definition at line 27 of file bmo_extrude.cc.

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 126 of file bmo_extrude.cc.

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 289 of file bmo_extrude.cc.

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

◆ bmo_extrude_edge_only_exec()

◆ bmo_extrude_face_region_exec()

◆ bmo_extrude_vert_indiv_exec()

◆ bmo_solidify_face_region_exec()

◆ calc_solidify_normals()

◆ solidify_add_thickness()