.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "tutorial/04_filters/exercises/b_clipping.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code or to run this example in your browser via Binder .. rst-class:: sphx-glr-example-title .. _sphx_glr_tutorial_04_filters_exercises_b_clipping.py: Clipping with Planes & Boxes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Clip/cut any dataset using using planes or boxes. .. GENERATED FROM PYTHON SOURCE LINES 7-11 .. code-block:: Python import pyvista as pv from pyvista import examples .. GENERATED FROM PYTHON SOURCE LINES 13-18 Clip with Plane +++++++++++++++ Clip any dataset by a user defined plane using the :func:`pyvista.DataSetFilters.clip` filter .. GENERATED FROM PYTHON SOURCE LINES 18-21 .. code-block:: Python dataset = examples.download_bunny_coarse() dataset .. GENERATED FROM PYTHON SOURCE LINES 22-24 .. code-block:: Python help(dataset.clip) .. GENERATED FROM PYTHON SOURCE LINES 25-26 Perform a clip with a Y axis normal .. GENERATED FROM PYTHON SOURCE LINES 26-29 .. code-block:: Python clipped = ... clipped .. GENERATED FROM PYTHON SOURCE LINES 30-31 Plot the result. .. GENERATED FROM PYTHON SOURCE LINES 31-39 .. code-block:: Python p = pv.Plotter() p.add_mesh(dataset, style='wireframe', color='blue', label='Input') p.add_mesh(clipped, label='Clipped') p.add_legend() p.camera_position = [(0.24, 0.32, 0.7), (0.02, 0.03, -0.02), (-0.12, 0.93, -0.34)] p.show() .. GENERATED FROM PYTHON SOURCE LINES 40-47 Clip with Bounds ++++++++++++++++ Clip any dataset by a set of XYZ bounds using the :func:`pyvista.DataSetFilters.clip_box` filter. First, download an example dataset. .. GENERATED FROM PYTHON SOURCE LINES 47-49 .. code-block:: Python dataset = examples.download_office() .. GENERATED FROM PYTHON SOURCE LINES 50-52 .. code-block:: Python help(dataset.clip_box) .. GENERATED FROM PYTHON SOURCE LINES 53-55 Clip the dataset with a bounding box defined by the values in ``bounds`` ``(xmin, xmax, ymin, ymax, zmin, zmax)`` .. GENERATED FROM PYTHON SOURCE LINES 55-59 .. code-block:: Python bounds = [2, 4.5, 2, 4.5, 1, 3] clipped = ... clipped .. GENERATED FROM PYTHON SOURCE LINES 60-61 Plot the original dataset and the clipped one. .. GENERATED FROM PYTHON SOURCE LINES 61-68 .. code-block:: Python p = pv.Plotter() p.add_mesh(dataset, style='wireframe', color='blue', label='Input') p.add_mesh(clipped, label='Clipped') p.add_legend() p.show() .. GENERATED FROM PYTHON SOURCE LINES 69-74 Clip with Rotated Box +++++++++++++++++++++ Clip any dataset by an arbitrarily rotated solid box using the :func:`pyvista.DataSetFilters.clip_box` filter. .. GENERATED FROM PYTHON SOURCE LINES 74-85 .. code-block:: Python mesh = examples.load_airplane() # Use `pv.Box()` or `pv.Cube()` to create a region of interest roi = pv.Cube(center=(0.9e3, 0.2e3, mesh.center[2]), x_length=500, y_length=500, z_length=500) roi.rotate_z(33, inplace=True) p = pv.Plotter() p.add_mesh(roi, opacity=0.75, color="red") p.add_mesh(mesh, opacity=0.5) p.show() .. GENERATED FROM PYTHON SOURCE LINES 86-87 Run the box clipping algorithm with the defined box geometry. .. GENERATED FROM PYTHON SOURCE LINES 87-99 .. code-block:: Python extracted = ... p = pv.Plotter(shape=(1, 2)) p.add_mesh(roi, opacity=0.75, color="red") p.add_mesh(mesh) p.subplot(0, 1) p.add_mesh(extracted) p.add_mesh(roi, opacity=0.75, color="red") p.link_views() p.view_isometric() p.show() .. GENERATED FROM PYTHON SOURCE LINES 100-110 Crinkled Clipping +++++++++++++++++ Crinkled clipping is useful if you don’t want the clip filter to truly clip cells on the boundary, but want to preserve the input cell structure and to pass the entire cell on through the boundary. This option is available for :func:`pyvista.DataSetFilters.clip`, :func:`pyvista.DataSetFilters.clip_box`, and :func:`pyvista.DataSetFilters.clip_sruface`, but not available when clipping by scalar in :func:`pyvista.DataSetFilters.clip_scalar`. .. GENERATED FROM PYTHON SOURCE LINES 110-114 .. code-block:: Python # Input mesh mesh = pv.Wavelet() .. GENERATED FROM PYTHON SOURCE LINES 115-116 Define clipping plane .. GENERATED FROM PYTHON SOURCE LINES 116-119 .. code-block:: Python normal = (1, 1, 1) plane = pv.Plane(i_size=30, j_size=30, direction=normal) .. GENERATED FROM PYTHON SOURCE LINES 120-121 Perform a standard clip .. GENERATED FROM PYTHON SOURCE LINES 121-123 .. code-block:: Python clipped = mesh.clip(normal=normal) .. GENERATED FROM PYTHON SOURCE LINES 124-125 Perform a crinkled clip to compare .. GENERATED FROM PYTHON SOURCE LINES 125-127 .. code-block:: Python crinkled = mesh.clip(..., normal=normal) .. GENERATED FROM PYTHON SOURCE LINES 128-129 Plot comparison .. GENERATED FROM PYTHON SOURCE LINES 129-138 .. code-block:: Python p = pv.Plotter(shape=(1, 2)) p.add_mesh(clipped, show_edges=True) p.add_mesh(plane.extract_feature_edges(), color='r') p.subplot(0, 1) p.add_mesh(crinkled, show_edges=True) p.add_mesh(plane.extract_feature_edges(), color='r') p.link_views() p.show() .. GENERATED FROM PYTHON SOURCE LINES 139-146 .. raw:: html
Open In Colab
.. _sphx_glr_download_tutorial_04_filters_exercises_b_clipping.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: binder-badge .. image:: images/binder_badge_logo.svg :target: https://mybinder.org/v2/gh/pyvista/pyvista-tutorial/gh-pages?urlpath=lab/tree/notebooks/tutorial/04_filters/exercises/b_clipping.ipynb :alt: Launch binder :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: b_clipping.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: b_clipping.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_