DataObjectFilters.slice

DataObjectFilters.slice#

DataObjectFilters.slice(
normal: VectorLike[float] | _NormalsLiteral | None = None,
origin: VectorLike[float] | None = None,
generate_triangles: bool = False,
contour: bool = False,
progress_bar: bool = False,
plane: PolyData | None = None,
)[source]#

Slice a dataset by a plane at the specified origin and normal vector orientation.

The origin and normal may be set explicitly or implicitly using a Plane().

If no parameters are given, the slice will occur in the center of the dataset along the x-axis.

Changed in version 0.49: Axis-aligned planes through an ImageData with an identity direction_matrix are sliced directly instead of with vtkCutter. The points and cells are ordered differently, and integer point data interpolated across a cell can differ from the cutter’s by one unit. Use slice_implicit() with generate_plane() for the cutter’s output.

Parameters:
normalVectorLike[float] | str, optional

Length-3 vector for the normal vector direction. Can also be specified as a string conventional direction such as 'x' for (1, 0, 0) or '-x' for (-1, 0, 0), etc. The 'x' direction is used by default.

originsequence[float], optional

The center (x, y, z) coordinate of the plane on which the slice occurs. The default is the center of the dataset.

generate_trianglesbool, default: False

If this is enabled (False by default), the output will be triangles. Otherwise the output will be the intersection polygons.

Note

PyVista’s default is False, which differs from vtkCutter’s default of True. The polygon codepath in vtkCutter is significantly slower than the triangulation path: on a 1.3M-cell UnstructuredGrid the polygon path measures ~89 ms/op vs ~20 ms/op with generate_triangles=True (~5x slowdown). Pass generate_triangles=True for the fast path when the output cell shape is not load-bearing for your downstream code. This does not apply to the axis-aligned ImageData slices described below, which do not use vtkCutter and are fastest with the default False.

contourbool, default: False

If True, apply a contour filter after slicing.

progress_barbool, default: False

Display a progress bar to indicate progress.

planePolyData, optional

Plane() mesh to use for slicing. Use this as an alternative to setting origin and normal. The mean of the plane’s normal vectors is used for the normal parameter and the mean of the plane’s points is used for the origin parameter.

Added in version 0.47.

Returns:
pyvista.PolyData | pyvista.MultiBlock

Sliced dataset. Every dataset gives a PolyData, and a MultiBlock gives a MultiBlock of PolyData blocks, nested blocks included.

Notes#

An axis-aligned plane through an ImageData with an identity direction_matrix is sliced directly into quads, with point data interpolated between the two neighbouring grid planes. All other inputs use vtkCutter.

A PointSet has no cells to slice, so slicing one directly raises PointSetDimensionReductionError. As a block of a MultiBlock it gives an empty block instead.

Examples#

Download Python source code | Download Jupyter notebook

Slice the surface of a sphere.

>>> import pyvista as pv
>>> sphere = pv.Sphere()
>>> slice_x = sphere.slice(normal='x')
>>> slice_y = sphere.slice(normal='y')
>>> slice_z = sphere.slice(normal='z')
>>> slices = slice_x + slice_y + slice_z
>>> slices.plot(line_width=5)
../../../_images/pyvista-DataObjectFilters-slice-11d08d42269e691e_00_00.png

See Also#

slice_implicit
slice_orthogonal
slice_along_axis
slice_along_line
clip_slab
slice_index()