PolyDataFilters.clean(point_merging=True, tolerance=None, lines_to_points=True, polys_to_lines=True, strips_to_polys=True, inplace=False, absolute=True, progress_bar=False, **kwargs)[source]#

Clean the mesh.

This merges duplicate points, removes unused points, and/or removes degenerate cells.

point_mergingbool, optional

Enables point merging. True by default.

tolerancefloat, optional

Set merging tolerance. When enabled merging is set to absolute distance. If absolute is False, then the merging tolerance is a fraction of the bounding box length. The alias merge_tol is also excepted.

lines_to_pointsbool, optional

Enable or disable the conversion of degenerate lines to points. Enabled by default.

polys_to_linesbool, optional

Enable or disable the conversion of degenerate polys to lines. Enabled by default.

strips_to_polysbool, optional

Enable or disable the conversion of degenerate strips to polys.

inplacebool, optional

Updates mesh in-place. Default False.

absolutebool, optional

Control if tolerance is an absolute distance or a fraction.

progress_barbool, optional

Display a progress bar to indicate progress.

**kwargsdict, optional

Accepts for merge_tol to replace the tolerance keyword argument. This may be deprecated in future.


Cleaned mesh.


Create a mesh with a degenerate face and then clean it, removing the degenerate face

>>> import pyvista as pv
>>> import numpy as np
>>> points = np.array([[0, 0, 0], [0, 1, 0], [1, 0, 0]], dtype=np.float32)
>>> faces = np.array([3, 0, 1, 2, 3, 0, 2, 2])
>>> mesh = pv.PolyData(points, faces)
>>> mout = mesh.clean()
>>> mout.faces  
array([3, 0, 1, 2])