boolean_intersection

PolyDataFilters.boolean_intersection(other_mesh, tolerance=1e-05, progress_bar=False)

Perform a boolean intersection operation on two meshes.

Essentially, boolean union, difference, and intersection are all the same operation. Just different parts of the objects are kept at the end.

The intersection of two manifold meshes A and B is the mesh which is the volume of A that is also in B.

Note

If your boolean operations don’t react the way you think they should (i.e. the wrong parts disappear), one of your meshes probably has its normals pointing inward. Use PolyDataFilters.plot_normals() to visualize the normals.

Note

This method returns the “volume” intersection between two meshes whereas the PolyDataFilters.intersection() filter returns the surface intersection between two meshes (which often resolves as a line).

Note

Both meshes must be composed of all triangles. Check with PolyData.is_all_triangles and convert with PolyDataFilters.triangulate().

New in version 0.32.0.

Parameters
other_meshpyvista.PolyData

Mesh operating on the source mesh.

tolerancefloat, optional

Tolerance used to determine when a point’s absolute distance is considered to be zero.

progress_barbool, optional

Display a progress bar to indicate progress.

Returns
pyvista.PolyData

The result of the boolean operation.

Examples

Demonstrate a boolean intersection with two spheres. Note how the final mesh only includes the intersection of the two.

>>> import pyvista
>>> sphere_a = pyvista.Sphere()
>>> sphere_b = pyvista.Sphere(center=(0.5, 0, 0))
>>> result = sphere_a.boolean_intersection(sphere_b)
>>> pl = pyvista.Plotter()
>>> _ = pl.add_mesh(sphere_a, color='r', style='wireframe', line_width=3)
>>> _ = pl.add_mesh(sphere_b, color='b', style='wireframe', line_width=3)
>>> _ = pl.add_mesh(result, color='tan')
>>> pl.camera_position = 'xz'
>>> pl.show()
../../../_images/pyvista-PolyDataFilters-boolean_intersection-1_00_00.png

See Boolean Operations for more examples using this filter.