def clean_verts(bm,obj):
### find corrupted faces
faces = []
for face in bm.faces:
i = 0
for edge in face.edges:
if not edge.is_manifold:
i += 1
if i == len(face.edges):
faces.append(face)
bmesh.ops.delete(bm,geom=faces,context=5)
edges = []
for face in bm.faces:
i = 0
for vert in face.verts:
if not vert.is_manifold and not vert.is_boundary:
i+=1
if i == len(face.verts):
for edge in face.edges:
if edge not in edges:
edges.append(edge)
bmesh.ops.collapse(bm,edges=edges)
bmesh.update_edit_mesh(obj.data)
for vert in bm.verts:
if not vert.is_boundary:
vert.select = False
verts = []
for vert in bm.verts:
if len(vert.link_edges) in [3,4] and not vert.is_boundary:
verts.append(vert)
bmesh.ops.dissolve_verts(bm,verts=verts)
bmesh.update_edit_mesh(obj.data)
评论列表
文章目录