
.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "tutorial/06_vtk/c_vtk_algorithms.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        :ref:`Go to the end <sphx_glr_download_tutorial_06_vtk_c_vtk_algorithms.py>`
        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_06_vtk_c_vtk_algorithms.py:


Using VTK Algorithms
~~~~~~~~~~~~~~~~~~~~

In this exercise, you will use a VTK Algorithm directly to filter a PyVista mesh.

VTK algorithms (filters) follow a standard flow for most cases:

1. Instantiate the algorithm
2. Set the input data object or connection: ``.SetInputDataObject(mesh)``
3. Adjust algorithm parameters with the setter methods, e.g., ``SetParameterName(value)``
4. Call ``.Update()`` to run the algorithm
5. Retrieve the output of the algorithm: ``output = alg.GetOutput()``

Let's see if we can try a few VTK algorithms with that standard workflow.

.. GENERATED FROM PYTHON SOURCE LINES 17-22

.. code-block:: Python


    import pyvista as pv
    import vtk
    from pyvista import examples








.. GENERATED FROM PYTHON SOURCE LINES 23-24

Here is a sample mesh

.. GENERATED FROM PYTHON SOURCE LINES 24-27

.. code-block:: Python

    mesh = examples.load_random_hills()
    mesh






.. raw:: html

    <div class="output_subarea output_html rendered_html output_result">
    <div><style>/* PyVista HTML repr stylesheet.
     * Uses pv- prefix to avoid conflicts with other libraries.
     */

    :root {
      --pv-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));
      --pv-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));
      --pv-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));
      --pv-border-color: var(--jp-border-color2, #e0e0e0);
      --pv-disabled-color: var(--jp-layout-color3, #bdbdbd);
      --pv-background-color-row-even: var(--jp-layout-color1, #f5f5f5);
      --pv-background-color-row-odd: var(--jp-layout-color2, #eeeeee);
      --pv-badge-active: #1b5e20;
      --pv-badge-normals: #0d47a1;
      --pv-badge-vectors: #00695c;
      --pv-badge-tcoords: #4527a0;
    }

    body[data-jp-theme-light="false"] {
      --pv-font-color0: var(--jp-content-font-color0, rgba(255, 255, 255, 1));
      --pv-font-color2: var(--jp-content-font-color2, rgba(255, 255, 255, 0.54));
      --pv-font-color3: var(--jp-content-font-color3, rgba(255, 255, 255, 0.38));
      --pv-border-color: var(--jp-border-color2, #424242);
      --pv-disabled-color: var(--jp-layout-color3, #616161);
      --pv-background-color-row-even: var(--jp-layout-color1, #1a1a1a);
      --pv-background-color-row-odd: var(--jp-layout-color2, #252525);
      --pv-badge-active: #66bb6a;
      --pv-badge-normals: #64b5f6;
      --pv-badge-vectors: #4db6ac;
      --pv-badge-tcoords: #b39ddb;
    }

    html[theme="dark"],
    html[data-theme="dark"],
    body[data-theme="dark"],
    body.vscode-dark {
      --pv-font-color0: rgba(255, 255, 255, 1);
      --pv-font-color2: rgba(255, 255, 255, 0.54);
      --pv-font-color3: rgba(255, 255, 255, 0.38);
      --pv-border-color: #424242;
      --pv-disabled-color: #616161;
      --pv-background-color-row-even: #1a1a1a;
      --pv-background-color-row-odd: #252525;
      --pv-badge-active: #66bb6a;
      --pv-badge-normals: #64b5f6;
      --pv-badge-vectors: #4db6ac;
      --pv-badge-tcoords: #b39ddb;
    }

    /* OS-level dark mode fallback: applies when no explicit data-theme is set */
    @media (prefers-color-scheme: dark) {
      html:not([data-theme="light"]) {
        --pv-font-color0: rgba(255, 255, 255, 1);
        --pv-font-color2: rgba(255, 255, 255, 0.54);
        --pv-font-color3: rgba(255, 255, 255, 0.38);
        --pv-border-color: #424242;
        --pv-disabled-color: #616161;
        --pv-background-color-row-even: #1a1a1a;
        --pv-background-color-row-odd: #252525;
        --pv-badge-active: #66bb6a;
        --pv-badge-normals: #64b5f6;
        --pv-badge-vectors: #4db6ac;
        --pv-badge-tcoords: #b39ddb;
      }
    }

    .pv-wrap {
      display: block !important;
      min-width: 300px;
      max-width: 700px;
      line-height: 1.6;
      padding-bottom: 4px;
      font-family: var(--jp-ui-font-family, sans-serif);
      font-size: var(--jp-ui-font-size1, 13px);
      color: var(--pv-font-color0);
    }

    .pv-text-repr-fallback {
      display: none;
    }

    /* Header */
    .pv-header {
      display: flex;
      align-items: center;
      gap: 8px;
      padding-top: 6px;
      padding-bottom: 6px;
      border-bottom: solid 1px var(--pv-border-color);
      margin-bottom: 4px;
    }

    .pv-header-text {
      display: flex;
      flex-direction: column;
      gap: 1px;
      min-width: 0;
      flex: 1;
    }

    .pv-obj-type {
      font-weight: 600;
      color: var(--pv-font-color0);
    }

    .pv-header-badge {
      display: inline-block;
      font-size: 0.75em;
      font-weight: 600;
      padding: 2px 7px;
      border-radius: 3px;
      color: var(--pv-font-color2);
      border: 1px solid var(--pv-border-color);
      white-space: nowrap;
    }

    /* Metadata (always-visible key-value rows) */
    .pv-metadata {
      margin: 4px 0 6px 0;
      font-size: 0.92em;
      line-height: 1.5;
    }

    .pv-meta-row {
      display: flex;
      flex-wrap: wrap;
      gap: 1px 14px;
      padding: 1px 0;
    }

    .pv-meta-row-label {
      color: var(--pv-font-color2);
      font-weight: 500;
      white-space: nowrap;
      min-width: 60px;
    }

    .pv-meta-entry {
      white-space: nowrap;
    }

    /* Copy-to-clipboard button */
    .pv-copy-btn {
      display: inline-block;
      cursor: pointer;
      opacity: 0.5;
      font-size: 0.85em;
      padding: 0 3px;
      vertical-align: middle;
      transition: opacity 0.15s;
      user-select: none;
      border: none;
      background: none;
      color: var(--pv-font-color3);
    }

    .pv-copy-btn:hover {
      opacity: 1;
      color: var(--pv-font-color0);
    }

    .pv-meta-label {
      color: var(--pv-font-color3);
      font-weight: 400;
      padding-right: 2px;
    }

    /* Sections grid */
    .pv-sections {
      padding-left: 0 !important;
      display: grid;
      grid-template-columns: 150px auto auto auto 1fr 20px 20px;
      margin-block-start: 0;
      margin-block-end: 0;
      list-style: none;
    }

    .pv-section-item {
      display: contents;
    }

    /* Hidden checkbox for expand/collapse */
    .pv-section-item > input {
      display: block;
      opacity: 0;
      height: 0;
      margin: 0;
    }

    .pv-section-item > input + label {
      color: var(--pv-disabled-color);
    }

    .pv-section-item > input:enabled + label {
      cursor: pointer;
      color: var(--pv-font-color2);
    }

    .pv-section-item > input:enabled + label:hover {
      color: var(--pv-font-color0);
    }

    /* Section summary (left column label) */
    .pv-section-summary {
      grid-column: 1;
      color: var(--pv-font-color2);
      font-weight: 500;
      white-space: nowrap;
    }

    .pv-section-summary > span {
      display: inline-block;
      padding-left: 0.3em;
    }

    .pv-section-summary-in:disabled + label {
      color: var(--pv-font-color2);
    }

    /* Expand/collapse arrows */
    .pv-section-summary-in + label:before {
      display: inline-block;
      content: "\25b6";
      font-size: 11px;
      width: 15px;
      text-align: center;
    }

    .pv-section-summary-in:disabled + label:before {
      color: var(--pv-disabled-color);
    }

    .pv-section-summary-in:checked + label:before {
      content: "\25bc";
    }

    .pv-section-summary-in:checked + label > span {
      display: none;
    }

    .pv-section-summary,
    .pv-section-inline-details {
      padding-top: 4px;
    }

    .pv-section-inline-details {
      grid-column: 2 / -1;
    }

    .pv-section-details {
      grid-column: 1 / -1;
      margin-top: 4px;
      margin-bottom: 5px;
    }

    .pv-section-summary-in ~ .pv-section-details {
      display: none;
    }

    .pv-section-summary-in:checked ~ .pv-section-inline-details {
      display: none;
    }

    .pv-section-summary-in:checked ~ .pv-section-details {
      display: block;
    }

    .pv-section-summary-in:checked ~ .pv-section-details:has(.pv-var-list) {
      display: contents;
    }

    /* Variable (array) list */
    .pv-var-list,
    .pv-var-item {
      display: contents;
    }

    .pv-var-item > div,
    .pv-var-item label,
    .pv-var-item > .pv-var-name span {
      background-color: var(--pv-background-color-row-even);
      border-color: var(--pv-background-color-row-odd);
      margin-bottom: 0;
      padding-top: 2px;
    }

    .pv-var-list > li:nth-child(odd) > div,
    .pv-var-list > li:nth-child(odd) > label,
    .pv-var-list > li:nth-child(odd) > .pv-var-name span {
      background-color: var(--pv-background-color-row-odd);
      border-color: var(--pv-background-color-row-even);
    }

    .pv-var-name {
      grid-column: 1;
    }

    .pv-var-dims {
      grid-column: 2;
    }

    .pv-var-dtype {
      grid-column: 3;
      text-align: right;
      color: var(--pv-font-color2);
    }

    .pv-var-range {
      grid-column: 4;
      color: var(--pv-font-color3);
      font-size: 0.92em;
    }

    .pv-var-badges {
      grid-column: 5;
      padding-left: 8px;
    }

    .pv-var-name,
    .pv-var-dims,
    .pv-var-dtype,
    .pv-var-range {
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      padding-right: 10px;
    }

    .pv-var-name:hover,
    .pv-var-dims:hover,
    .pv-var-dtype:hover,
    .pv-var-range:hover {
      overflow: visible;
      width: auto;
      z-index: 1;
    }

    .pv-var-name span {
      padding-left: 25px !important;
    }

    .pv-var-name-active span {
      font-weight: 600;
    }

    /* Badges */
    .pv-badge {
      display: inline-block;
      font-size: 0.75em;
      font-weight: 600;
      padding: 1px 5px;
      border-radius: 3px;
      vertical-align: middle;
      line-height: 1.4;
    }

    .pv-badge-active {
      color: var(--pv-badge-active);
      border: 1px solid var(--pv-badge-active);
    }

    .pv-badge-normals {
      color: var(--pv-badge-normals);
      border: 1px solid var(--pv-badge-normals);
    }

    .pv-badge-vectors {
      color: var(--pv-badge-vectors);
      border: 1px solid var(--pv-badge-vectors);
    }

    .pv-badge-tcoords {
      color: var(--pv-badge-tcoords);
      border: 1px solid var(--pv-badge-tcoords);
    }

    /* Logo and Icons */
    .pv-logo {
      display: flex;
      align-items: center;
      flex-shrink: 0;
    }

    .pv-logo svg {
      width: 28px;
      height: 28px;
    }

    .pv-brand-logo {
      display: flex;
      align-items: center;
      flex-shrink: 0;
    }

    .pv-brand-logo svg {
      height: 20px;
      width: auto;
    }

    /* Children list (MultiBlock / PartitionedDataSet) */
    .pv-children-list {
      padding-left: 25px !important;
      list-style: none;
    }

    .pv-children-list li {
      padding: 1px 0;
    }

    .pv-child-name {
      font-weight: 500;
    }

    .pv-child-type {
      color: var(--pv-font-color2);
      font-style: italic;
    }

    .pv-child-type:before {
      content: "\00b7";
      padding: 0 6px;
      font-style: normal;
    }

    .pv-child-detail {
      color: var(--pv-font-color3);
      font-size: 0.9em;
    }

    .pv-child-detail:not(:empty):before {
      content: "\00b7";
      padding: 0 6px;
    }
    </style><pre class='pv-text-repr-fallback'>PolyData (0x7ff554a9e9e0)
      N Cells:    19602
      N Points:   10000
      N Strips:   0
      X Bounds:   -1.000e+01, 1.000e+01
      Y Bounds:   -2.309e-14, 2.000e+01
      Z Bounds:   1.416e-01, 7.483e+00
      N Arrays:   2</pre><div class='pv-wrap' style='display:none'><div class='pv-header'><span class='pv-logo'><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
      <defs>
        <linearGradient id="pv-pd-g1" x1="0" y1="0" x2="1" y2="1">
          <stop offset="0%" stop-color="#ffd040"/>
          <stop offset="100%" stop-color="#376fa0"/>
        </linearGradient>
      </defs>
      <polygon points="6,6 22,4 14,16" fill="#376fa0" opacity="0.9"/>
      <polygon points="22,4 28,16 14,16" fill="url(#pv-pd-g1)" opacity="0.85"/>
      <polygon points="6,6 14,16 4,26" fill="#1a4a70" opacity="0.85"/>
      <polygon points="14,16 28,16 20,28" fill="#376fa0" opacity="0.8"/>
      <polygon points="4,26 14,16 20,28" fill="#ffd040" opacity="0.8"/>
      <g stroke="rgba(255,255,255,0.65)" stroke-width="0.6" fill="none">
        <line x1="6" y1="6" x2="22" y2="4"/>
        <line x1="22" y1="4" x2="28" y2="16"/>
        <line x1="28" y1="16" x2="20" y2="28"/>
        <line x1="20" y1="28" x2="4" y2="26"/>
        <line x1="4" y1="26" x2="6" y2="6"/>
        <line x1="6" y1="6" x2="14" y2="16"/>
        <line x1="22" y1="4" x2="14" y2="16"/>
        <line x1="28" y1="16" x2="14" y2="16"/>
        <line x1="14" y1="16" x2="4" y2="26"/>
        <line x1="14" y1="16" x2="20" y2="28"/>
      </g>
      <g fill="rgba(255,255,255,0.85)">
        <circle cx="6" cy="6" r="1.3"/>
        <circle cx="22" cy="4" r="1.3"/>
        <circle cx="28" cy="16" r="1.3"/>
        <circle cx="14" cy="16" r="1.3"/>
        <circle cx="20" cy="28" r="1.3"/>
        <circle cx="4" cy="26" r="1.3"/>
      </g>
    </svg>
    </span><div class='pv-header-text'><div class='pv-obj-type'>PolyData <span class='pv-header-badge'>10,000 points</span> <span class='pv-header-badge'>19,602 cells</span> <span class='pv-header-badge'>1.0 MiB</span></div></div><span class='pv-brand-logo'><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90 24">
      <text x="0" y="18" font-family="system-ui,-apple-system,sans-serif" font-size="18" font-weight="700" font-style="italic" letter-spacing="-0.5">
        <tspan fill="#3776AB" opacity="0.7">P</tspan><tspan fill="#FFD43B" opacity="0.7">y</tspan><tspan fill="#008c9e">Vista</tspan>
      </text>
    </svg>
    </span></div><div class='pv-metadata'><div class='pv-meta-row pv-copyable'><span class='pv-meta-row-label'>Bounds</span><button class='pv-copy-btn' title='Copy to clipboard' data-copy='(-10.0, 10.0, -2.3092638912203256e-14, 20.0, 0.1415802240371704, 7.483089447021484)' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button><span class='pv-meta-entry'><span class='pv-meta-label'>X</span> [-1.000e+01, 1.000e+01]</span><span class='pv-meta-entry'><span class='pv-meta-label'>Y</span> [-2.309e-14, 2.000e+01]</span><span class='pv-meta-entry'><span class='pv-meta-label'>Z</span> [1.416e-01, 7.483e+00]</span></div><div class='pv-meta-row pv-copyable'><span class='pv-meta-row-label'>Cells</span><span class='pv-meta-entry'><span class='pv-meta-label'>faces</span> 19,602</span></div></div><ul class='pv-sections'><li class='pv-section-item'><input id='section-750daf79-c7dd-4dd3-b9a7-d378b30d47b5' class='pv-section-summary-in' type='checkbox' checked /><label for='section-750daf79-c7dd-4dd3-b9a7-d378b30d47b5' class='pv-section-summary' title='Expand/collapse section'>Point Data: <span>(2)</span></label><div class='pv-section-inline-details'>Elevation <span class='pv-badge pv-badge-active'>active</span></div><div class='pv-section-details'><ul class='pv-var-list'><li class='pv-var-item'><div class='pv-var-name'><span>Normals</span><button class='pv-copy-btn' title='Copy to clipboard' data-copy='Normals' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button></div><div class='pv-var-dims'>3 comp</div><div class='pv-var-dtype'>float32</div><div class='pv-var-range'>[-8.663e-01, 9.999e-01]</div><div class='pv-var-badges'> <span class='pv-badge pv-badge-normals'>normals</span></div></li><li class='pv-var-item'><div class='pv-var-name pv-var-name-active'><span>Elevation</span><button class='pv-copy-btn' title='Copy to clipboard' data-copy='Elevation' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button></div><div class='pv-var-dims'>scalar</div><div class='pv-var-dtype'>float32</div><div class='pv-var-range'>[1.416e-01, 7.483e+00]</div><div class='pv-var-badges'> <span class='pv-badge pv-badge-active'>active</span></div></li></ul></div></li></ul></div></div>
    </div>
    <br />
    <br />

.. GENERATED FROM PYTHON SOURCE LINES 28-30

.. code-block:: Python

    mesh.plot()








.. tab-set::



   .. tab-item:: Static Scene



            
     .. image-sg:: /tutorial/06_vtk/images/sphx_glr_c_vtk_algorithms_001.png
        :alt: c vtk algorithms
        :srcset: /tutorial/06_vtk/images/sphx_glr_c_vtk_algorithms_001.png
        :class: sphx-glr-single-img
     


   .. tab-item:: Interactive Scene



       .. offlineviewer:: /home/runner/work/pyvista-tutorial/pyvista-tutorial/doc/source/tutorial/06_vtk/images/sphx_glr_c_vtk_algorithms_001.vtksz






.. GENERATED FROM PYTHON SOURCE LINES 31-34

Simple Filter
^^^^^^^^^^^^^
Let's start out with a simple VTK filter: ``vtkOutlineFilter``

.. GENERATED FROM PYTHON SOURCE LINES 34-36

.. code-block:: Python

    help(vtk.vtkOutlineFilter)





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    Help on class vtkOutlineFilter in module vtkmodules.vtkFiltersModeling:

    class vtkOutlineFilter(vtkmodules.vtkCommonExecutionModel.vtkPolyDataAlgorithm)
     |  vtkOutlineFilter - create wireframe outline for an arbitrary data set
     |  or composite dataset
     |
     |  Superclass: vtkPolyDataAlgorithm
     |
     |  vtkOutlineFilter is a filter that generates a wireframe outline of
     |  any dataset or composite dataset. An outline consists of the twelve
     |  edges of the dataset bounding box. An option exists for generating
     |  faces instead of a wireframe outline.
     |
     |  @warning
     |  When an input composite dataset is provided, options exist for
     |  producing different styles of outline(s). Also, if the composite
     |  dataset has non-geometric members (like tables) the result is
     |  unpredictable.
     |
     |  @warning
     |  Specialized versions of the outline filter are also available. For
     |  example see vtkStructuredGridOutlineFilter,
     |  vtkRectilinearGridOutlineFilter, and vtkImageDataOutlineFilter.
     |
     |  Method resolution order:
     |      vtkOutlineFilter
     |      vtkmodules.vtkCommonExecutionModel.vtkPolyDataAlgorithm
     |      vtkmodules.vtkCommonExecutionModel.vtkAlgorithm
     |      vtkmodules.vtkCommonCore.vtkObject
     |      vtkmodules.vtkCommonCore.vtkObjectBase
     |      builtins.object
     |
     |  Methods defined here:
     |
     |  AddIndex(...)
     |      AddIndex(self, index:int) -> None
     |      C++: void AddIndex(unsigned int index)
     |
     |      If the composite style is set to SpecifiedIndex, then one or more
     |      flat indices can be specified, and bounding boxes will be drawn
     |      around those pieces of the composite dataset. (Recall that the
     |      flat index is a non-negative integer, with root index=0,
     |      increasing in perorder (depth-first) traversal order.
     |
     |  GenerateFacesOff(...)
     |      GenerateFacesOff(self) -> None
     |      C++: virtual void GenerateFacesOff()
     |
     |  GenerateFacesOn(...)
     |      GenerateFacesOn(self) -> None
     |      C++: virtual void GenerateFacesOn()
     |
     |  GetCompositeStyle(...)
     |      GetCompositeStyle(self) -> int
     |      C++: virtual int GetCompositeStyle()
     |
     |  GetGenerateFaces(...)
     |      GetGenerateFaces(self) -> int
     |      C++: virtual vtkTypeBool GetGenerateFaces()
     |
     |  GetNumberOfGenerationsFromBase(...)
     |      GetNumberOfGenerationsFromBase(self, type:str) -> int
     |      C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
     |          override;
     |
     |      Given the name of a base class of this class type, return the
     |      distance of inheritance between this class type and the named
     |      class (how many generations of inheritance are there between this
     |      class and the named class). If the named class is not in this
     |      class's inheritance tree, return a negative value. Valid
     |      responses will always be nonnegative. This method works in
     |      combination with vtkTypeMacro found in vtkSetGet.h.
     |
     |  GetNumberOfGenerationsFromBaseType(...)
     |      GetNumberOfGenerationsFromBaseType(type:str) -> int
     |      C++: static vtkIdType GetNumberOfGenerationsFromBaseType(
     |          const char *type)
     |
     |      Given a the name of a base class of this class type, return the
     |      distance of inheritance between this class type and the named
     |      class (how many generations of inheritance are there between this
     |      class and the named class). If the named class is not in this
     |      class's inheritance tree, return a negative value. Valid
     |      responses will always be nonnegative. This method works in
     |      combination with vtkTypeMacro found in vtkSetGet.h.
     |
     |  GetOutputPointsPrecision(...)
     |      GetOutputPointsPrecision(self) -> int
     |      C++: virtual int GetOutputPointsPrecision()
     |
     |  IsA(...)
     |      IsA(self, type:str) -> int
     |      C++: vtkTypeBool IsA(const char *type) override;
     |
     |      Return 1 if this class is the same type of (or a subclass of) the
     |      named class. Returns 0 otherwise. This method works in
     |      combination with vtkTypeMacro found in vtkSetGet.h.
     |
     |  IsTypeOf(...)
     |      IsTypeOf(type:str) -> int
     |      C++: static vtkTypeBool IsTypeOf(const char *type)
     |
     |      Return 1 if this class type is the same type of (or a subclass
     |      of) the named class. Returns 0 otherwise. This method works in
     |      combination with vtkTypeMacro found in vtkSetGet.h.
     |
     |  NewInstance(...)
     |      NewInstance(self) -> vtkOutlineFilter
     |      C++: vtkOutlineFilter *NewInstance()
     |
     |  RemoveAllIndices(...)
     |      RemoveAllIndices(self) -> None
     |      C++: void RemoveAllIndices()
     |
     |  RemoveIndex(...)
     |      RemoveIndex(self, index:int) -> None
     |      C++: void RemoveIndex(unsigned int index)
     |
     |  SafeDownCast(...)
     |      SafeDownCast(o:vtkObjectBase) -> vtkOutlineFilter
     |      C++: static vtkOutlineFilter *SafeDownCast(vtkObjectBase *o)
     |
     |  SetCompositeStyle(...)
     |      SetCompositeStyle(self, _arg:int) -> None
     |      C++: virtual void SetCompositeStyle(int _arg)
     |
     |      Specify a style for creating bounding boxes around input
     |      composite datasets. (If the filter input is a vtkDataSet type
     |      these options have no effect.) There are four choices: 1) place a
     |      bounding box around the root of the vtkCompositeDataSet (i.e.,
     |      all of the data); 2) place separate bounding boxes around each
     |      vtkDataSet leaf of the composite dataset; 3) place a bounding box
     |      around the root and all dataset leaves; and 4) place a bounding
     |      box around each (flat) index of the composite dataset. The
     |      default behavior is both root and leafs.
     |
     |  SetCompositeStyleToLeafs(...)
     |      SetCompositeStyleToLeafs(self) -> None
     |      C++: void SetCompositeStyleToLeafs()
     |
     |  SetCompositeStyleToRoot(...)
     |      SetCompositeStyleToRoot(self) -> None
     |      C++: void SetCompositeStyleToRoot()
     |
     |  SetCompositeStyleToRootAndLeafs(...)
     |      SetCompositeStyleToRootAndLeafs(self) -> None
     |      C++: void SetCompositeStyleToRootAndLeafs()
     |
     |  SetCompositeStyleToSpecifiedIndex(...)
     |      SetCompositeStyleToSpecifiedIndex(self) -> None
     |      C++: void SetCompositeStyleToSpecifiedIndex()
     |
     |  SetGenerateFaces(...)
     |      SetGenerateFaces(self, _arg:int) -> None
     |      C++: virtual void SetGenerateFaces(vtkTypeBool _arg)
     |
     |      Generate solid faces for the box. This is off by default.
     |
     |  SetOutputPointsPrecision(...)
     |      SetOutputPointsPrecision(self, _arg:int) -> None
     |      C++: virtual void SetOutputPointsPrecision(int _arg)
     |
     |      Set/get the desired precision for the output points.
     |      vtkAlgorithm::SINGLE_PRECISION - Output single-precision floating
     |      point. vtkAlgorithm::DOUBLE_PRECISION - Output double-precision
     |      floating point.
     |
     |  __buffer__(self, flags, /)
     |      Return a buffer object that exposes the underlying memory of the object.
     |
     |  __delattr__(self, name, /)
     |      Implement delattr(self, name).
     |
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |
     |  __init__(self, /, *args, **kwargs)
     |      Initialize self.  See help(type(self)) for accurate signature.
     |
     |  __release_buffer__(self, buffer, /)
     |      Release the buffer object that exposes the underlying memory of the object.
     |
     |  __repr__(self, /)
     |      Return repr(self).
     |
     |  __setattr__(self, name, value, /)
     |      Implement setattr(self, name, value).
     |
     |  __str__(self, /)
     |      Return str(self).
     |
     |  ----------------------------------------------------------------------
     |  Static methods defined here:
     |
     |  __new__(*args, **kwargs)
     |      Create and return a new object.  See help(type) for accurate signature.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      Dictionary of attributes set by user.
     |
     |  __this__
     |      Pointer to the C++ object.
     |
     |  composite_style
     |      read-write, calls GetCompositeStyle/SetCompositeStyle
     |
     |  generate_faces
     |      read-write, calls GetGenerateFaces/SetGenerateFaces
     |
     |  output_points_precision
     |      read-write, calls GetOutputPointsPrecision/SetOutputPointsPrecision
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |
     |  CompositeOutlineStyle = <class 'vtkmodules.vtkFiltersModeling.vtkOutli...
     |
     |  LEAF_DATASETS = 1
     |
     |  ROOT_AND_LEAFS = 2
     |
     |  ROOT_LEVEL = 0
     |
     |  SPECIFIED_INDEX = 3
     |
     |  __vtkname__ = 'vtkOutlineFilter'
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from vtkmodules.vtkCommonExecutionModel.vtkPolyDataAlgorithm:
     |
     |  AddInputData(...)
     |      AddInputData(self, __a:vtkDataObject) -> None
     |      C++: void AddInputData(vtkDataObject *)
     |      AddInputData(self, __a:int, __b:vtkDataObject) -> None
     |      C++: void AddInputData(int, vtkDataObject *)
     |
     |      Assign a data object as input. Note that this method does not
     |      establish a pipeline connection. Use AddInputConnection() to
     |      setup a pipeline connection.
     |
     |  GetInput(...)
     |      GetInput(self) -> vtkDataObject
     |      C++: vtkDataObject *GetInput()
     |      GetInput(self, port:int) -> vtkDataObject
     |      C++: vtkDataObject *GetInput(int port)
     |
     |  GetOutput(...)
     |      GetOutput(self) -> vtkPolyData
     |      C++: vtkPolyData *GetOutput()
     |      GetOutput(self, __a:int) -> vtkPolyData
     |      C++: vtkPolyData *GetOutput(int)
     |
     |      Get the output data object for a port on this algorithm.
     |
     |  GetPolyDataInput(...)
     |      GetPolyDataInput(self, port:int) -> vtkPolyData
     |      C++: vtkPolyData *GetPolyDataInput(int port)
     |
     |  SetInputData(...)
     |      SetInputData(self, __a:vtkDataObject) -> None
     |      C++: void SetInputData(vtkDataObject *)
     |      SetInputData(self, __a:int, __b:vtkDataObject) -> None
     |      C++: void SetInputData(int, vtkDataObject *)
     |
     |      Assign a data object as input. Note that this method does not
     |      establish a pipeline connection. Use SetInputConnection() to
     |      setup a pipeline connection.
     |
     |  SetOutput(...)
     |      SetOutput(self, d:vtkDataObject) -> None
     |      C++: virtual void SetOutput(vtkDataObject *d)
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from vtkmodules.vtkCommonExecutionModel.vtkPolyDataAlgorithm:
     |
     |  input
     |      read-only, calls GetInput
     |
     |  input_data
     |      write-only, calls SetInputData
     |
     |  output
     |      read-write, calls GetOutput/SetOutput
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from vtkmodules.vtkCommonExecutionModel.vtkAlgorithm:
     |
     |  ABORTED(...)
     |      ABORTED() -> vtkInformationIntegerKey
     |      C++: static vtkInformationIntegerKey *ABORTED()
     |
     |      \ingroup InformationKeys
     |
     |  AbortExecuteOff(...)
     |      AbortExecuteOff(self) -> None
     |      C++: virtual void AbortExecuteOff()
     |
     |  AbortExecuteOn(...)
     |      AbortExecuteOn(self) -> None
     |      C++: virtual void AbortExecuteOn()
     |
     |  AddInputConnection(...)
     |      AddInputConnection(self, port:int, input:vtkAlgorithmOutput)
     |          -> None
     |      C++: virtual void AddInputConnection(int port,
     |          vtkAlgorithmOutput *input)
     |      AddInputConnection(self, input:vtkAlgorithmOutput) -> None
     |      C++: virtual void AddInputConnection(vtkAlgorithmOutput *input)
     |
     |      Add a connection to the given input port index.  See
     |      SetInputConnection() for details on input connections.  This
     |      method is the complement to RemoveInputConnection() in that it
     |      adds only the connection specified without affecting other
     |      connections.  Typical usage is
     |
     |      * filter2->AddInputConnection(0, filter1->GetOutputPort(0)).
     |
     |  AddInputDataObject(...)
     |      AddInputDataObject(self, port:int, data:vtkDataObject) -> None
     |      C++: virtual void AddInputDataObject(int port,
     |          vtkDataObject *data)
     |      AddInputDataObject(self, data:vtkDataObject) -> None
     |      C++: virtual void AddInputDataObject(vtkDataObject *data)
     |
     |      Add the data-object as an input to this given port. This will add
     |      a new input connection on the specified port without affecting
     |      any existing connections on the same input port.
     |
     |  CAN_HANDLE_PIECE_REQUEST(...)
     |      CAN_HANDLE_PIECE_REQUEST() -> vtkInformationIntegerKey
     |      C++: static vtkInformationIntegerKey *CAN_HANDLE_PIECE_REQUEST()
     |
     |      Key that tells the pipeline that a particular algorithm can or
     |      cannot handle piece request. If a filter cannot handle piece
     |      requests and is asked for a piece, the executive will flag an
     |      error. If a structured data source cannot handle piece requests
     |      but can produce sub-extents (CAN_PRODUCE_SUB_EXTENT), the
     |      executive will use an extent translator to split the extent into
     |      pieces. Otherwise, if a source cannot handle piece requests, the
     |      executive will ask for the whole data for piece 0 and not execute
     |      the source for other pieces.\ingroup InformationKeys
     |
     |  CAN_PRODUCE_SUB_EXTENT(...)
     |      CAN_PRODUCE_SUB_EXTENT() -> vtkInformationIntegerKey
     |      C++: static vtkInformationIntegerKey *CAN_PRODUCE_SUB_EXTENT()
     |
     |      This key tells the executive that a particular output port is
     |      capable of producing an arbitrary subextent of the whole extent.
     |      Many image sources and readers fall into this category but some
     |      such as the legacy structured data readers cannot support this
     |      feature.\ingroup InformationKeys
     |
     |  CheckAbort(...)
     |      CheckAbort(self) -> bool
     |      C++: bool CheckAbort()
     |
     |      Checks to see if this filter should abort.
     |
     |  ConvertTotalInputToPortConnection(...)
     |      ConvertTotalInputToPortConnection(self, ind:int, port:int,
     |          conn:int) -> None
     |      C++: void ConvertTotalInputToPortConnection(int ind, int &port,
     |          int &conn)
     |
     |      Convenience routine to convert from a linear ordering of input
     |      connections to a port/connection pair.
     |
     |  GetAbortExecute(...)
     |      GetAbortExecute(self) -> int
     |      C++: virtual vtkTypeBool GetAbortExecute()
     |
     |  GetAbortOutput(...)
     |      GetAbortOutput(self) -> bool
     |      C++: virtual bool GetAbortOutput()
     |
     |  GetContainerAlgorithm(...)
     |      GetContainerAlgorithm(self) -> vtkAlgorithm
     |      C++: vtkAlgorithm *GetContainerAlgorithm()
     |
     |  GetErrorCode(...)
     |      GetErrorCode(self) -> int
     |      C++: virtual unsigned long GetErrorCode()
     |
     |      The error code contains a possible error that occurred while
     |      reading or writing the file.
     |
     |  GetExecutive(...)
     |      GetExecutive(self) -> vtkExecutive
     |      C++: vtkExecutive *GetExecutive()
     |
     |      Get this algorithm's executive.  If it has none, a default
     |      executive will be created.
     |
     |  GetInformation(...)
     |      GetInformation(self) -> vtkInformation
     |      C++: virtual vtkInformation *GetInformation()
     |
     |      Set/Get the information object associated with this algorithm.
     |
     |  GetInputAlgorithm(...)
     |      GetInputAlgorithm(self, port:int, index:int, algPort:int)
     |          -> vtkAlgorithm
     |      C++: vtkAlgorithm *GetInputAlgorithm(int port, int index,
     |          int &algPort)
     |      GetInputAlgorithm(self, port:int, index:int) -> vtkAlgorithm
     |      C++: vtkAlgorithm *GetInputAlgorithm(int port, int index)
     |      GetInputAlgorithm(self) -> vtkAlgorithm
     |      C++: vtkAlgorithm *GetInputAlgorithm()
     |
     |      Returns the algorithm and the output port index of that algorithm
     |      connected to a port-index pair.
     |
     |  GetInputArrayInformation(...)
     |      GetInputArrayInformation(self, idx:int) -> vtkInformation
     |      C++: vtkInformation *GetInputArrayInformation(int idx)
     |
     |      Get the info object for the specified input array to this
     |      algorithm
     |
     |  GetInputConnection(...)
     |      GetInputConnection(self, port:int, index:int)
     |          -> vtkAlgorithmOutput
     |      C++: vtkAlgorithmOutput *GetInputConnection(int port, int index)
     |
     |      Get the algorithm output port connected to an input port.
     |
     |  GetInputDataObject(...)
     |      GetInputDataObject(self, port:int, connection:int)
     |          -> vtkDataObject
     |      C++: vtkDataObject *GetInputDataObject(int port, int connection)
     |
     |      Get the data object that will contain the algorithm input for the
     |      given port and given connection.
     |
     |  GetInputExecutive(...)
     |      GetInputExecutive(self, port:int, index:int) -> vtkExecutive
     |      C++: vtkExecutive *GetInputExecutive(int port, int index)
     |      GetInputExecutive(self) -> vtkExecutive
     |      C++: vtkExecutive *GetInputExecutive()
     |
     |      Returns the executive associated with a particular input
     |      connection.
     |
     |  GetInputInformation(...)
     |      GetInputInformation(self, port:int, index:int) -> vtkInformation
     |      C++: vtkInformation *GetInputInformation(int port, int index)
     |      GetInputInformation(self) -> vtkInformation
     |      C++: vtkInformation *GetInputInformation()
     |
     |      Return the information object that is associated with a
     |      particular input connection. This can be used to get meta-data
     |      coming from the REQUEST_INFORMATION pass and set requests for the
     |      REQUEST_UPDATE_EXTENT pass. NOTE: Do not use this in any of the
     |      pipeline passes. Use the information objects passed as arguments
     |      instead.
     |
     |  GetInputPortInformation(...)
     |      GetInputPortInformation(self, port:int) -> vtkInformation
     |      C++: vtkInformation *GetInputPortInformation(int port)
     |
     |      Get the information object associated with an input port.  There
     |      is one input port per kind of input to the algorithm.  Each input
     |      port tells executives what kind of data and downstream requests
     |      this algorithm can handle for that input.
     |
     |  GetNumberOfInputArraySpecifications(...)
     |      GetNumberOfInputArraySpecifications(self) -> int
     |      C++: int GetNumberOfInputArraySpecifications()
     |
     |      Get the number of input array indices that have already been set.
     |
     |  GetNumberOfInputConnections(...)
     |      GetNumberOfInputConnections(self, port:int) -> int
     |      C++: int GetNumberOfInputConnections(int port)
     |
     |      Get the number of inputs currently connected to a port.
     |
     |  GetNumberOfInputPorts(...)
     |      GetNumberOfInputPorts(self) -> int
     |      C++: int GetNumberOfInputPorts()
     |
     |      Get the number of input ports used by the algorithm.
     |
     |  GetNumberOfOutputPorts(...)
     |      GetNumberOfOutputPorts(self) -> int
     |      C++: int GetNumberOfOutputPorts()
     |
     |      Get the number of output ports provided by the algorithm.
     |
     |  GetOutputDataObject(...)
     |      GetOutputDataObject(self, port:int) -> vtkDataObject
     |      C++: vtkDataObject *GetOutputDataObject(int port)
     |
     |      Get the data object that will contain the algorithm output for
     |      the given port.
     |
     |  GetOutputInformation(...)
     |      GetOutputInformation(self, port:int) -> vtkInformation
     |      C++: vtkInformation *GetOutputInformation(int port)
     |
     |      Return the information object that is associated with a
     |      particular output port. This can be used to set meta-data coming
     |      during the REQUEST_INFORMATION. NOTE: Do not use this in any of
     |      the pipeline passes. Use the information objects passed as
     |      arguments instead.
     |
     |  GetOutputPort(...)
     |      GetOutputPort(self, index:int) -> vtkAlgorithmOutput
     |      C++: vtkAlgorithmOutput *GetOutputPort(int index)
     |      GetOutputPort(self) -> vtkAlgorithmOutput
     |      C++: vtkAlgorithmOutput *GetOutputPort()
     |
     |      Get a proxy object corresponding to the given output port of this
     |      algorithm.  The proxy object can be passed to another algorithm's
     |      SetInputConnection(), AddInputConnection(), and
     |      RemoveInputConnection() methods to modify pipeline connectivity.
     |
     |  GetOutputPortInformation(...)
     |      GetOutputPortInformation(self, port:int) -> vtkInformation
     |      C++: vtkInformation *GetOutputPortInformation(int port)
     |
     |      Get the information object associated with an output port.  There
     |      is one output port per output from the algorithm.  Each output
     |      port tells executives what kind of upstream requests this
     |      algorithm can handle for that output.
     |
     |  GetProgress(...)
     |      GetProgress(self) -> float
     |      C++: virtual double GetProgress()
     |
     |      Get the execution progress of a process object.
     |
     |  GetProgressObserver(...)
     |      GetProgressObserver(self) -> vtkProgressObserver
     |      C++: virtual vtkProgressObserver *GetProgressObserver()
     |
     |  GetProgressScale(...)
     |      GetProgressScale(self) -> float
     |      C++: virtual double GetProgressScale()
     |
     |  GetProgressShift(...)
     |      GetProgressShift(self) -> float
     |      C++: virtual double GetProgressShift()
     |
     |  GetProgressText(...)
     |      GetProgressText(self) -> str
     |      C++: virtual char *GetProgressText()
     |
     |  GetReleaseDataFlag(...)
     |      GetReleaseDataFlag(self) -> int
     |      C++: virtual vtkTypeBool GetReleaseDataFlag()
     |
     |  GetTotalNumberOfInputConnections(...)
     |      GetTotalNumberOfInputConnections(self) -> int
     |      C++: int GetTotalNumberOfInputConnections()
     |
     |      Get the total number of inputs for this algorithm
     |
     |  GetUpdateExtent(...)
     |      GetUpdateExtent(self) -> (int, int, int, int, int, int)
     |      C++: int *GetUpdateExtent()
     |      GetUpdateExtent(self, port:int) -> (int, int, int, int, int, int)
     |      C++: int *GetUpdateExtent(int port)
     |      GetUpdateExtent(self, x0:int, x1:int, y0:int, y1:int, z0:int,
     |          z1:int) -> None
     |      C++: void GetUpdateExtent(int &x0, int &x1, int &y0, int &y1,
     |          int &z0, int &z1)
     |      GetUpdateExtent(self, port:int, x0:int, x1:int, y0:int, y1:int,
     |          z0:int, z1:int) -> None
     |      C++: void GetUpdateExtent(int port, int &x0, int &x1, int &y0,
     |          int &y1, int &z0, int &z1)
     |      GetUpdateExtent(self, extent:[int, int, int, int, int, int])
     |          -> None
     |      C++: void GetUpdateExtent(int extent[6])
     |      GetUpdateExtent(self, port:int, extent:[int, int, int, int, int,
     |          int]) -> None
     |      C++: void GetUpdateExtent(int port, int extent[6])
     |
     |      These functions return the update extent for output ports that
     |      use 3D extents. Where port is not specified, it is assumed to be
     |      0.
     |
     |  GetUpdateGhostLevel(...)
     |      GetUpdateGhostLevel(self) -> int
     |      C++: int GetUpdateGhostLevel()
     |      GetUpdateGhostLevel(self, port:int) -> int
     |      C++: int GetUpdateGhostLevel(int port)
     |
     |  GetUpdateNumberOfPieces(...)
     |      GetUpdateNumberOfPieces(self) -> int
     |      C++: int GetUpdateNumberOfPieces()
     |      GetUpdateNumberOfPieces(self, port:int) -> int
     |      C++: int GetUpdateNumberOfPieces(int port)
     |
     |  GetUpdatePiece(...)
     |      GetUpdatePiece(self) -> int
     |      C++: int GetUpdatePiece()
     |      GetUpdatePiece(self, port:int) -> int
     |      C++: int GetUpdatePiece(int port)
     |
     |      These functions return the update extent for output ports that
     |      use piece extents. Where port is not specified, it is assumed to
     |      be 0.
     |
     |  HasExecutive(...)
     |      HasExecutive(self) -> int
     |      C++: vtkTypeBool HasExecutive()
     |
     |      Check whether this algorithm has an assigned executive.  This
     |      will NOT create a default executive.
     |
     |  INPUT_ARRAYS_TO_PROCESS(...)
     |      INPUT_ARRAYS_TO_PROCESS() -> vtkInformationInformationVectorKey
     |      C++: static vtkInformationInformationVectorKey *INPUT_ARRAYS_TO_PROCESS(
     |          )
     |
     |      \ingroup InformationKeys
     |
     |  INPUT_CONNECTION(...)
     |      INPUT_CONNECTION() -> vtkInformationIntegerKey
     |      C++: static vtkInformationIntegerKey *INPUT_CONNECTION()
     |
     |      \ingroup InformationKeys
     |
     |  INPUT_IS_OPTIONAL(...)
     |      INPUT_IS_OPTIONAL() -> vtkInformationIntegerKey
     |      C++: static vtkInformationIntegerKey *INPUT_IS_OPTIONAL()
     |
     |      Keys used to specify input port requirements.\ingroup
     |      InformationKeys
     |
     |  INPUT_IS_REPEATABLE(...)
     |      INPUT_IS_REPEATABLE() -> vtkInformationIntegerKey
     |      C++: static vtkInformationIntegerKey *INPUT_IS_REPEATABLE()
     |
     |      \ingroup InformationKeys
     |
     |  INPUT_PORT(...)
     |      INPUT_PORT() -> vtkInformationIntegerKey
     |      C++: static vtkInformationIntegerKey *INPUT_PORT()
     |
     |      \ingroup InformationKeys
     |
     |  INPUT_REQUIRED_DATA_TYPE(...)
     |      INPUT_REQUIRED_DATA_TYPE() -> vtkInformationStringVectorKey
     |      C++: static vtkInformationStringVectorKey *INPUT_REQUIRED_DATA_TYPE(
     |          )
     |
     |      \ingroup InformationKeys
     |
     |  INPUT_REQUIRED_FIELDS(...)
     |      INPUT_REQUIRED_FIELDS() -> vtkInformationInformationVectorKey
     |      C++: static vtkInformationInformationVectorKey *INPUT_REQUIRED_FIELDS(
     |          )
     |
     |      \ingroup InformationKeys
     |
     |  ModifyRequest(...)
     |      ModifyRequest(self, request:vtkInformation, when:int) -> int
     |      C++: virtual int ModifyRequest(vtkInformation *request, int when)
     |
     |      This method gives the algorithm a chance to modify the contents
     |      of a request before or after (specified in the when argument) it
     |      is forwarded. The default implementation is empty. Returns 1 on
     |      success, 0 on failure. When can be either
     |      vtkExecutive::BeforeForward or vtkExecutive::AfterForward.
     |
     |  ProcessRequest(...)
     |      ProcessRequest(self, request:vtkInformation, inInfo:vtkCollection,
     |           outInfo:vtkInformationVector) -> int
     |      C++: vtkTypeBool ProcessRequest(vtkInformation *request,
     |          vtkCollection *inInfo, vtkInformationVector *outInfo)
     |
     |      Version of ProcessRequest() that is wrapped. This converts the
     |      collection to an array and calls the other version.
     |
     |  PropagateUpdateExtent(...)
     |      PropagateUpdateExtent(self) -> None
     |      C++: virtual void PropagateUpdateExtent()
     |
     |      Propagate meta-data upstream.
     |
     |  ReleaseDataFlagOff(...)
     |      ReleaseDataFlagOff(self) -> None
     |      C++: void ReleaseDataFlagOff()
     |
     |  ReleaseDataFlagOn(...)
     |      ReleaseDataFlagOn(self) -> None
     |      C++: void ReleaseDataFlagOn()
     |
     |  RemoveAllInputConnections(...)
     |      RemoveAllInputConnections(self, port:int) -> None
     |      C++: virtual void RemoveAllInputConnections(int port)
     |
     |      Removes all input connections.
     |
     |  RemoveAllInputs(...)
     |      RemoveAllInputs(self) -> None
     |      C++: void RemoveAllInputs()
     |
     |      Remove all the input data.
     |
     |  RemoveInputConnection(...)
     |      RemoveInputConnection(self, port:int, input:vtkAlgorithmOutput)
     |          -> None
     |      C++: virtual void RemoveInputConnection(int port,
     |          vtkAlgorithmOutput *input)
     |      RemoveInputConnection(self, port:int, idx:int) -> None
     |      C++: virtual void RemoveInputConnection(int port, int idx)
     |
     |      Remove a connection from the given input port index.  See
     |      SetInputConnection() for details on input connection.  This
     |      method is the complement to AddInputConnection() in that it
     |      removes only the connection specified without affecting other
     |      connections.  Typical usage is
     |
     |      * filter2->RemoveInputConnection(0, filter1->GetOutputPort(0)).
     |
     |  RemoveNoPriorTemporalAccessInformationKey(...)
     |      RemoveNoPriorTemporalAccessInformationKey(self) -> None
     |      C++: void RemoveNoPriorTemporalAccessInformationKey()
     |
     |      Removes any information key
     |      `vtkStreamingDemandDrivenPipeline::NO_PRIOR_TEMPORAL_ACCESS()` to
     |      all output ports of this `vtkAlgorithm`.
     |
     |  ResetInputArraySpecifications(...)
     |      ResetInputArraySpecifications(self) -> bool
     |      C++: bool ResetInputArraySpecifications()
     |
     |      Clear all existing input array specifications (as if
     |      SetInputArrayToProcess had never been called).
     |
     |      This allows users to easily reconfigure a filter that accepts a
     |      variable number of arrays to process. The return value is true if
     |      any specifications existed before the call (and thus
     |      this->Modified() was called) and false otherwise (indicating the
     |      algorithm was not modified).
     |
     |  SetAbortExecute(...)
     |      SetAbortExecute(self, _arg:int) -> None
     |      C++: virtual void SetAbortExecute(vtkTypeBool _arg)
     |
     |      Set/Get the AbortExecute flag for the process object. Process
     |      objects may handle premature termination of execution in
     |      different ways.
     |
     |  SetAbortExecuteAndUpdateTime(...)
     |      SetAbortExecuteAndUpdateTime(self) -> None
     |      C++: void SetAbortExecuteAndUpdateTime()
     |
     |      Set AbortExecute Flag and update LastAbortTime.
     |
     |  SetAbortOutput(...)
     |      SetAbortOutput(self, _arg:bool) -> None
     |      C++: virtual void SetAbortOutput(bool _arg)
     |
     |      Set/Get an internal variable used to communicate between the
     |      algorithm and executive. If the executive sees this value is set,
     |      it will initialize the output data and pass the ABORTED flag
     |      downstream.
     |
     |      CheckAbort sets this value to true if the function returns true.
     |
     |  SetContainerAlgorithm(...)
     |      SetContainerAlgorithm(self, containerAlg:vtkAlgorithm) -> None
     |      C++: void SetContainerAlgorithm(vtkAlgorithm *containerAlg)
     |
     |      Set/get a Container algorithm for this algorithm. Allows this
     |      algorithm to check to abort status of its Container algorithm as
     |      well as have access to its Container's information.
     |
     |  SetDefaultExecutivePrototype(...)
     |      SetDefaultExecutivePrototype(proto:vtkExecutive) -> None
     |      C++: static void SetDefaultExecutivePrototype(vtkExecutive *proto)
     |
     |      If the DefaultExecutivePrototype is set, a copy of it is created
     |      in CreateDefaultExecutive() using NewInstance().
     |
     |  SetExecutive(...)
     |      SetExecutive(self, executive:vtkExecutive) -> None
     |      C++: virtual void SetExecutive(vtkExecutive *executive)
     |
     |      Set this algorithm's executive.  This algorithm is removed from
     |      any executive to which it has previously been assigned and then
     |      assigned to the given executive.
     |
     |  SetInformation(...)
     |      SetInformation(self, __a:vtkInformation) -> None
     |      C++: virtual void SetInformation(vtkInformation *)
     |
     |  SetInputArrayToProcess(...)
     |      SetInputArrayToProcess(self, name:str, fieldAssociation:int,
     |          component:int=...) -> None
     |      C++: void SetInputArrayToProcess(const char *name,
     |          int fieldAssociation,
     |          int component=vtkArrayComponents::AllComponents)
     |      SetInputArrayToProcess(self, idx:int, port:int, connection:int,
     |          fieldAssociation:int, name:str) -> None
     |      C++: virtual void SetInputArrayToProcess(int idx, int port,
     |          int connection, int fieldAssociation, const char *name)
     |      SetInputArrayToProcess(self, idx:int, port:int, connection:int,
     |          fieldAssociation:int, name:str, component:int) -> None
     |      C++: virtual void SetInputArrayToProcess(int idx, int port,
     |          int connection, int fieldAssociation, const char *name,
     |          int component)
     |      SetInputArrayToProcess(self, idx:int, port:int, connection:int,
     |          fieldAssociation:int, fieldAttributeType:int) -> None
     |      C++: virtual void SetInputArrayToProcess(int idx, int port,
     |          int connection, int fieldAssociation, int fieldAttributeType)
     |      SetInputArrayToProcess(self, idx:int, port:int, connection:int,
     |          fieldAssociation:int, fieldAttributeType:int, component:int)
     |          -> None
     |      C++: virtual void SetInputArrayToProcess(int idx, int port,
     |          int connection, int fieldAssociation, int fieldAttributeType,
     |          int component)
     |      SetInputArrayToProcess(self, idx:int, info:vtkInformation) -> None
     |      C++: virtual void SetInputArrayToProcess(int idx,
     |          vtkInformation *info)
     |      SetInputArrayToProcess(self, idx:int, port:int, connection:int,
     |          fieldAssociation:str, attributeTypeorName:str) -> None
     |      C++: virtual void SetInputArrayToProcess(int idx, int port,
     |          int connection, const char *fieldAssociation,
     |          const char *attributeTypeorName)
     |      SetInputArrayToProcess(self, idx:int, port:int, connection:int,
     |          fieldAssociation:str, attributeTypeorName:str, component:str)
     |          -> None
     |      C++: virtual void SetInputArrayToProcess(int idx, int port,
     |          int connection, const char *fieldAssociation,
     |          const char *attributeTypeorName, const char *component)
     |
     |      Set the inpu ...
     |       [Truncated]
     |
     |  SetInputConnection(...)
     |      SetInputConnection(self, port:int, input:vtkAlgorithmOutput)
     |          -> None
     |      C++: virtual void SetInputConnection(int port,
     |          vtkAlgorithmOutput *input)
     |      SetInputConnection(self, input:vtkAlgorithmOutput) -> None
     |      C++: virtual void SetInputConnection(vtkAlgorithmOutput *input)
     |
     |      Set the connection for the given input port index.  Each input
     |      port of a filter has a specific purpose.  A port may have zero or
     |      more connections and the required number is specified by each
     |      filter.  Setting the connection with this method removes all
     |      other connections from the port.  To add more than one connection
     |      use AddInputConnection().
     |
     |      * The input for the connection is the output port of another
     |      * filter, which is obtained with GetOutputPort().  Typical usage
     |        is
     |
     |      * filter2->SetInputConnection(0, filter1->GetOutputPort(0)).
     |
     |  SetInputDataObject(...)
     |      SetInputDataObject(self, port:int, data:vtkDataObject) -> None
     |      C++: virtual void SetInputDataObject(int port,
     |          vtkDataObject *data)
     |      SetInputDataObject(self, data:vtkDataObject) -> None
     |      C++: virtual void SetInputDataObject(vtkDataObject *data)
     |
     |      Sets the data-object as an input on the given port index. Setting
     |      the input with this method removes all other connections from the
     |      port. Internally, this method creates a vtkTrivialProducer
     |      instance and sets that as the input-connection for the given
     |      port. It is safe to call this method repeatedly with the same
     |      input data object. The MTime of the vtkAlgorithm will not change
     |      unless the data object changed.
     |
     |  SetNoPriorTemporalAccessInformationKey(...)
     |      SetNoPriorTemporalAccessInformationKey(self, key:int) -> None
     |      C++: void SetNoPriorTemporalAccessInformationKey(int key)
     |      SetNoPriorTemporalAccessInformationKey(self) -> None
     |      C++: void SetNoPriorTemporalAccessInformationKey()
     |
     |      Set to all output ports of this algorithm the information key
     |      `vtkStreamingDemandDrivenPipeline::NO_PRIOR_TEMPORAL_ACCESS()`.
     |      This should be set on sources of pipelines for which all
     |      timesteps are not necessarily all available at once. This is
     |      typically the case for visualization in situ.
     |
     |      ote Default value in
     |      `vtkStreamingDemandDrivenPipeline::NO_PRIOR_TEMPORAL_ACCESS_RESET`
     |      . `vtkStreamingDemandDrivenPipeline` will set it to
     |      `NO_PRIOR_TEMPORAL_ACCESS_CONTINUE' after execution of the first
     |      time step.
     |
     |  SetProgressObserver(...)
     |      SetProgressObserver(self, __a:vtkProgressObserver) -> None
     |      C++: void SetProgressObserver(vtkProgressObserver *)
     |
     |      If an ProgressObserver is set, the algorithm will report progress
     |      through it rather than directly. This means that it will call
     |      UpdateProgress() on the ProgressObserver rather than itself
     |      report it and set progress. This is most useful in situations
     |      where multiple threads are executing an algorithm at the same
     |      time and want to handle progress locally.
     |
     |  SetProgressShiftScale(...)
     |      SetProgressShiftScale(self, shift:float, scale:float) -> None
     |      C++: void SetProgressShiftScale(double shift, double scale)
     |
     |      Specify the shift and scale values to use to apply to the
     |      progress amount when `UpdateProgress` is called. By default shift
     |      is set to 0, and scale is set to 1.0. This is useful when the
     |      vtkAlgorithm instance is used as an internal algorithm to solve
     |      only a part of a whole problem.
     |
     |      If calling on a internal vtkAlgorithm, make sure you take into
     |      consideration that values set of the outer vtkAlgorithm as well
     |      since the outer vtkAlgorithm itself may be nested in another
     |      algorithm.
     |
     |      ote SetProgressShiftScale does not modify the MTime of the
     |      algorithm.
     |
     |  SetProgressText(...)
     |      SetProgressText(self, ptext:str) -> None
     |      C++: void SetProgressText(const char *ptext)
     |
     |      Set the current text message associated with the progress state.
     |      This may be used by a calling process/GUI. Note: Because
     |      SetProgressText() is called from inside RequestData() it does not
     |      modify the algorithm object. Algorithms are not allowed to modify
     |      themselves from inside RequestData().
     |
     |  SetReleaseDataFlag(...)
     |      SetReleaseDataFlag(self, __a:int) -> None
     |      C++: virtual void SetReleaseDataFlag(vtkTypeBool)
     |
     |      Turn release data flag on or off for all output ports.
     |
     |  Update(...)
     |      Update(self, port:int) -> None
     |      C++: virtual void Update(int port)
     |      Update(self) -> None
     |      C++: virtual void Update()
     |      Update(self, port:int, requests:vtkInformationVector) -> int
     |      C++: virtual vtkTypeBool Update(int port,
     |          vtkInformationVector *requests)
     |      Update(self, requests:vtkInformation) -> int
     |      C++: virtual vtkTypeBool Update(vtkInformation *requests)
     |
     |      Bring this algorithm's outputs up-to-date.
     |
     |  UpdateDataObject(...)
     |      UpdateDataObject(self) -> None
     |      C++: virtual void UpdateDataObject()
     |
     |      Create output object(s).
     |
     |  UpdateExtent(...)
     |      UpdateExtent(self, extents:(int, int, int, int, int, int)) -> int
     |      C++: virtual int UpdateExtent(const int extents[6])
     |
     |      Convenience method to update an algorithm after passing requests
     |      to its first output port. Supports extent request.
     |
     |  UpdateExtentIsEmpty(...)
     |      UpdateExtentIsEmpty(self, pinfo:vtkInformation,
     |          output:vtkDataObject) -> int
     |      C++: int UpdateExtentIsEmpty(vtkInformation *pinfo,
     |          vtkDataObject *output)
     |      UpdateExtentIsEmpty(self, pinfo:vtkInformation, extentType:int)
     |          -> int
     |      C++: int UpdateExtentIsEmpty(vtkInformation *pinfo,
     |          int extentType)
     |
     |      This detects when the UpdateExtent will generate no data This
     |      condition is satisfied when the UpdateExtent has zero volume
     |      (0,-1,...) or the UpdateNumberOfPieces is 0. The source uses this
     |      call to determine whether to call Execute.
     |
     |  UpdateInformation(...)
     |      UpdateInformation(self) -> None
     |      C++: virtual void UpdateInformation()
     |
     |      Bring the algorithm's information up-to-date.
     |
     |  UpdatePiece(...)
     |      UpdatePiece(self, piece:int, numPieces:int, ghostLevels:int,
     |          extents:(int, int, int, int, int, int)=...) -> int
     |      C++: virtual int UpdatePiece(int piece, int numPieces,
     |          int ghostLevels, const int extents[6]=nullptr)
     |
     |      Convenience method to update an algorithm after passing requests
     |      to its first output port. See documentation for Update(int port,
     |      vtkInformationVector* requests) for details. Supports piece and
     |      extent (optional) requests.
     |
     |  UpdateProgress(...)
     |      UpdateProgress(self, amount:float) -> None
     |      C++: void UpdateProgress(double amount)
     |
     |      Update the progress of the process object. If a ProgressMethod
     |      exists, executes it.  Then set the Progress ivar to amount. The
     |      parameter amount should range between (0,1).
     |
     |  UpdateTimeStep(...)
     |      UpdateTimeStep(self, time:float, piece:int=-1, numPieces:int=1,
     |          ghostLevels:int=0, extents:(int, int, int, int, int, int)=...)
     |           -> int
     |      C++: virtual int UpdateTimeStep(double time, int piece=-1,
     |          int numPieces=1, int ghostLevels=0,
     |          const int extents[6]=nullptr)
     |
     |      Convenience method to update an algorithm after passing requests
     |      to its first output port. See documentation for Update(int port,
     |      vtkInformationVector* requests) for details. Supports time, piece
     |      (optional) and extent (optional) requests.
     |
     |  UpdateWholeExtent(...)
     |      UpdateWholeExtent(self) -> None
     |      C++: virtual void UpdateWholeExtent()
     |
     |      Bring this algorithm's outputs up-to-date.
     |
     |  UsesGarbageCollector(...)
     |      UsesGarbageCollector(self) -> bool
     |      C++: bool UsesGarbageCollector() override;
     |
     |      Participate in garbage collection.
     |
     |  __call__(self, /, *args, **kwargs)
     |      Call self as a function.
     |
     |  __rrshift__(self, value, /)
     |      Return value>>self.
     |
     |  __rshift__(self, value, /)
     |      Return self>>value.
     |
     |  update(...)
     |      This method updates the pipeline connected to this algorithm
     |      and returns an Output object with an output property. This property
     |      provides either a single data object (for algorithms with single output
     |      or a tuple (for algorithms with multiple outputs).
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from vtkmodules.vtkCommonExecutionModel.vtkAlgorithm:
     |
     |  abort_execute
     |      read-write, calls GetAbortExecute/SetAbortExecute
     |
     |  abort_output
     |      read-write, calls GetAbortOutput/SetAbortOutput
     |
     |  container_algorithm
     |      read-write, calls GetContainerAlgorithm/SetContainerAlgorithm
     |
     |  default_executive_prototype
     |      write-only, calls SetDefaultExecutivePrototype
     |
     |  error_code
     |      read-only, calls GetErrorCode
     |
     |  executive
     |      read-write, calls GetExecutive/SetExecutive
     |
     |  information
     |      read-write, calls GetInformation/SetInformation
     |
     |  input_algorithm
     |      read-only, calls GetInputAlgorithm
     |
     |  input_array_to_process
     |      write-only, calls SetInputArrayToProcess
     |
     |  input_connection
     |      write-only, calls SetInputConnection
     |
     |  input_data_object
     |      write-only, calls SetInputDataObject
     |
     |  input_executive
     |      read-only, calls GetInputExecutive
     |
     |  input_information
     |      read-only, calls GetInputInformation
     |
     |  no_prior_temporal_access_information_key
     |      write-only, calls SetNoPriorTemporalAccessInformationKey
     |
     |  number_of_input_array_specifications
     |      read-only, calls GetNumberOfInputArraySpecifications
     |
     |  number_of_input_ports
     |      read-only, calls GetNumberOfInputPorts
     |
     |  number_of_output_ports
     |      read-only, calls GetNumberOfOutputPorts
     |
     |  output_port
     |      read-only, calls GetOutputPort
     |
     |  progress
     |      read-only, calls GetProgress
     |
     |  progress_observer
     |      read-write, calls GetProgressObserver/SetProgressObserver
     |
     |  progress_scale
     |      read-only, calls GetProgressScale
     |
     |  progress_shift
     |      read-only, calls GetProgressShift
     |
     |  progress_shift_scale
     |      write-only, calls SetProgressShiftScale
     |
     |  progress_text
     |      read-write, calls GetProgressText/SetProgressText
     |
     |  release_data_flag
     |      read-write, calls GetReleaseDataFlag/SetReleaseDataFlag
     |
     |  total_number_of_input_connections
     |      read-only, calls GetTotalNumberOfInputConnections
     |
     |  update_extent
     |      read-only, calls GetUpdateExtent
     |
     |  update_ghost_level
     |      read-only, calls GetUpdateGhostLevel
     |
     |  update_number_of_pieces
     |      read-only, calls GetUpdateNumberOfPieces
     |
     |  update_piece
     |      read-only, calls GetUpdatePiece
     |
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from vtkmodules.vtkCommonExecutionModel.vtkAlgorithm:
     |
     |  DEFAULT_PRECISION = 2
     |
     |  DOUBLE_PRECISION = 1
     |
     |  DesiredOutputPrecision = <class 'vtkmodules.vtkCommonExecutionModel.vt...
     |
     |  SINGLE_PRECISION = 0
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from vtkmodules.vtkCommonCore.vtkObject:
     |
     |  AddObserver(...)
     |      AddObserver(self, event:int, command:Callback, priority:float=0.0) -> int
     |      C++: unsigned long AddObserver(const char* event,
     |          vtkCommand* command, float priority=0.0f)
     |
     |      Add an event callback command(o:vtkObject, event:int) for an event type.
     |      Returns a handle that can be used with RemoveEvent(event:int).
     |
     |  BreakOnError(...)
     |      BreakOnError() -> None
     |      C++: static void BreakOnError()
     |
     |      This method is called when vtkErrorMacro executes. It allows the
     |      debugger to break on error.
     |
     |  DebugOff(...)
     |      DebugOff(self) -> None
     |      C++: virtual void DebugOff()
     |
     |      Turn debugging output off.
     |
     |  DebugOn(...)
     |      DebugOn(self) -> None
     |      C++: virtual void DebugOn()
     |
     |      Turn debugging output on.
     |
     |  GetCommand(...)
     |      GetCommand(self, tag:int) -> vtkCommand
     |      C++: vtkCommand *GetCommand(unsigned long tag)
     |
     |  GetDebug(...)
     |      GetDebug(self) -> bool
     |      C++: bool GetDebug()
     |
     |      Get the value of the debug flag.
     |
     |  GetGlobalWarningDisplay(...)
     |      GetGlobalWarningDisplay() -> int
     |      C++: static vtkTypeBool GetGlobalWarningDisplay()
     |
     |  GetMTime(...)
     |      GetMTime(self) -> int
     |      C++: virtual vtkMTimeType GetMTime()
     |
     |      Return this object's modified time.
     |
     |  GetObjectDescription(...)
     |      GetObjectDescription(self) -> str
     |      C++: std::string GetObjectDescription() override;
     |
     |      The object description printed in messages and PrintSelf output.
     |      To be used only for reporting purposes.
     |
     |  GetObjectName(...)
     |      GetObjectName(self) -> str
     |      C++: virtual std::string GetObjectName()
     |
     |  GlobalWarningDisplayOff(...)
     |      GlobalWarningDisplayOff() -> None
     |      C++: static void GlobalWarningDisplayOff()
     |
     |  GlobalWarningDisplayOn(...)
     |      GlobalWarningDisplayOn() -> None
     |      C++: static void GlobalWarningDisplayOn()
     |
     |  HasObserver(...)
     |      HasObserver(self, event:int, __b:vtkCommand) -> int
     |      C++: vtkTypeBool HasObserver(unsigned long event, vtkCommand *)
     |      HasObserver(self, event:str, __b:vtkCommand) -> int
     |      C++: vtkTypeBool HasObserver(const char *event, vtkCommand *)
     |      HasObserver(self, event:int) -> int
     |      C++: vtkTypeBool HasObserver(unsigned long event)
     |      HasObserver(self, event:str) -> int
     |      C++: vtkTypeBool HasObserver(const char *event)
     |
     |  InvokeEvent(...)
     |      InvokeEvent(self, event:int, callData:Any) -> int
     |      C++: int InvokeEvent(unsigned long event, void* callData)
     |      InvokeEvent(self, event:str, callData:Any) -> int
     |      C++: int InvokeEvent(const char* event, void* callData)
     |      InvokeEvent(self, event:int) -> int
     |      C++: int InvokeEvent(unsigned long event)
     |      InvokeEvent(self, event:str) -> int
     |      C++: int InvokeEvent(const char* event)
     |
     |      This method invokes an event and returns whether the event was
     |      aborted or not. If the event was aborted, the return value is 1,
     |      otherwise it is 0.
     |
     |  Modified(...)
     |      Modified(self) -> None
     |      C++: virtual void Modified()
     |
     |      Update the modification time for this object. Many filters rely
     |      on the modification time to determine if they need to recompute
     |      their data. The modification time is a unique monotonically
     |      increasing unsigned long integer.
     |
     |  RemoveAllObservers(...)
     |      RemoveAllObservers(self) -> None
     |      C++: void RemoveAllObservers()
     |
     |  RemoveObserver(...)
     |      RemoveObserver(self, __a:vtkCommand) -> None
     |      C++: void RemoveObserver(vtkCommand *)
     |      RemoveObserver(self, tag:int) -> None
     |      C++: void RemoveObserver(unsigned long tag)
     |
     |  RemoveObservers(...)
     |      RemoveObservers(self, event:int, __b:vtkCommand) -> None
     |      C++: void RemoveObservers(unsigned long event, vtkCommand *)
     |      RemoveObservers(self, event:str, __b:vtkCommand) -> None
     |      C++: void RemoveObservers(const char *event, vtkCommand *)
     |      RemoveObservers(self, event:int) -> None
     |      C++: void RemoveObservers(unsigned long event)
     |      RemoveObservers(self, event:str) -> None
     |      C++: void RemoveObservers(const char *event)
     |
     |  SetDebug(...)
     |      SetDebug(self, debugFlag:bool) -> None
     |      C++: void SetDebug(bool debugFlag)
     |
     |      Set the value of the debug flag. A true value turns debugging on.
     |
     |  SetGlobalWarningDisplay(...)
     |      SetGlobalWarningDisplay(val:int) -> None
     |      C++: static void SetGlobalWarningDisplay(vtkTypeBool val)
     |
     |      This is a global flag that controls whether any debug, warning or
     |      error messages are displayed.
     |
     |  SetObjectName(...)
     |      SetObjectName(self, objectName:str) -> None
     |      C++: virtual void SetObjectName(const std::string &objectName)
     |
     |      Set/get the name of this object for reporting purposes. The name
     |      appears in warning and debug messages and in the Print output.
     |      Setting the object name does not change the MTime and does not
     |      invoke a ModifiedEvent. Derived classes implementing copying
     |      methods are expected not to copy the ObjectName.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from vtkmodules.vtkCommonCore.vtkObject:
     |
     |  debug
     |      read-write, calls GetDebug/SetDebug
     |
     |  global_warning_display
     |      read-write, calls GetGlobalWarningDisplay/SetGlobalWarningDisplay
     |
     |  m_time
     |      read-only, calls GetMTime
     |
     |  object_description
     |      read-only, calls GetObjectDescription
     |
     |  object_name
     |      read-write, calls GetObjectName/SetObjectName
     |
     |  ----------------------------------------------------------------------
     |  Methods inherited from vtkmodules.vtkCommonCore.vtkObjectBase:
     |
     |  FastDelete(...)
     |      FastDelete(self) -> None
     |      C++: virtual void FastDelete()
     |
     |      Delete a reference to this object.  This version will not invoke
     |      garbage collection and can potentially leak the object if it is
     |      part of a reference loop.  Use this method only when it is known
     |      that the object has another reference and would not be collected
     |      if a full garbage collection check were done.
     |
     |  GetAddressAsString(...)
     |      GetAddressAsString(self, classname:str) -> str
     |
     |      Get address of C++ object in format 'Addr=%p' after casting to
     |      the specified type.  This method is obsolete, you can get the
     |      same information from o.__this__.
     |
     |  GetClassName(...)
     |      GetClassName(self) -> str
     |      C++: const char *GetClassName()
     |
     |      Return the class name as a string.
     |
     |  GetIsInMemkind(...)
     |      GetIsInMemkind(self) -> bool
     |      C++: bool GetIsInMemkind()
     |
     |      A local state flag that remembers whether this object lives in
     |      the normal or extended memory space.
     |
     |  GetReferenceCount(...)
     |      GetReferenceCount(self) -> int
     |      C++: int GetReferenceCount()
     |
     |      Return the current reference count of this object.
     |
     |  GetUsingMemkind(...)
     |      GetUsingMemkind() -> bool
     |      C++: static bool GetUsingMemkind()
     |
     |      A global state flag that controls whether vtkObjects are
     |      constructed in the usual way (the default) or within the extended
     |      memory space.
     |
     |  InitializeObjectBase(...)
     |      InitializeObjectBase(self) -> None
     |      C++: void InitializeObjectBase()
     |
     |  Register(...)
     |      Register(self, o:vtkObjectBase)
     |      C++: virtual void Register(vtkObjectBase *o)
     |
     |      Increase the reference count by 1.
     |
     |  SetMemkindDirectory(...)
     |      SetMemkindDirectory(directoryname:str) -> None
     |      C++: static void SetMemkindDirectory(const char *directoryname)
     |
     |      The name of a directory, ideally mounted -o dax, to memory map an
     |      extended memory space within. This must be called before any
     |      objects are constructed in the extended space. It can not be
     |      changed once setup.
     |
     |  SetReferenceCount(...)
     |      SetReferenceCount(self, __a:int) -> None
     |      C++: void SetReferenceCount(int)
     |
     |      Sets the reference count. (This is very dangerous, use with
     |      care.)
     |
     |  UnRegister(...)
     |      UnRegister(self, o:vtkObjectBase)
     |      C++: virtual void UnRegister(vtkObjectBase* o)
     |
     |      Decrease the reference count (release by another object). This
     |      has the same effect as invoking Delete() (i.e., it reduces the
     |      reference count by 1).
     |
     |  ----------------------------------------------------------------------
     |  Class methods inherited from vtkmodules.vtkCommonCore.vtkObjectBase:
     |
     |  override(...)
     |      This method can be used to override a VTK class with a Python subclass.
     |      The class type passed to override will afterwards be instantiated
     |      instead of the type override is called on.
     |      For example,
     |
     |      class foo(vtk.vtkPoints):
     |        pass
     |      vtk.vtkPoints.override(foo)
     |
     |      will lead to foo being instantied every time vtkPoints() is called.
     |      The main objective of this functionality is to enable developers to
     |      extend VTK classes with more pythonic subclasses that contain
     |      convenience functionality.
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from vtkmodules.vtkCommonCore.vtkObjectBase:
     |
     |  class_name
     |      read-only, calls GetClassName
     |
     |  is_in_memkind
     |      read-only, calls GetIsInMemkind
     |
     |  memkind_directory
     |      write-only, calls SetMemkindDirectory
     |
     |  reference_count
     |      read-write, calls GetReferenceCount/SetReferenceCount
     |
     |  using_memkind
     |      read-only, calls GetUsingMemkind





.. GENERATED FROM PYTHON SOURCE LINES 37-40

Try using this VTK filter yourself here:

Remember that you will have to wrap the output of the algorithm with :func:`pyvista.wrap`

.. GENERATED FROM PYTHON SOURCE LINES 40-47

.. code-block:: Python

    alg = vtk.vtkOutlineFilter()

    # (your code here, answer below)

    outline = pv.wrap(alg.GetOutput())
    outline






.. raw:: html

    <div class="output_subarea output_html rendered_html output_result">
    <div><style>/* PyVista HTML repr stylesheet.
     * Uses pv- prefix to avoid conflicts with other libraries.
     */

    :root {
      --pv-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));
      --pv-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));
      --pv-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));
      --pv-border-color: var(--jp-border-color2, #e0e0e0);
      --pv-disabled-color: var(--jp-layout-color3, #bdbdbd);
      --pv-background-color-row-even: var(--jp-layout-color1, #f5f5f5);
      --pv-background-color-row-odd: var(--jp-layout-color2, #eeeeee);
      --pv-badge-active: #1b5e20;
      --pv-badge-normals: #0d47a1;
      --pv-badge-vectors: #00695c;
      --pv-badge-tcoords: #4527a0;
    }

    body[data-jp-theme-light="false"] {
      --pv-font-color0: var(--jp-content-font-color0, rgba(255, 255, 255, 1));
      --pv-font-color2: var(--jp-content-font-color2, rgba(255, 255, 255, 0.54));
      --pv-font-color3: var(--jp-content-font-color3, rgba(255, 255, 255, 0.38));
      --pv-border-color: var(--jp-border-color2, #424242);
      --pv-disabled-color: var(--jp-layout-color3, #616161);
      --pv-background-color-row-even: var(--jp-layout-color1, #1a1a1a);
      --pv-background-color-row-odd: var(--jp-layout-color2, #252525);
      --pv-badge-active: #66bb6a;
      --pv-badge-normals: #64b5f6;
      --pv-badge-vectors: #4db6ac;
      --pv-badge-tcoords: #b39ddb;
    }

    html[theme="dark"],
    html[data-theme="dark"],
    body[data-theme="dark"],
    body.vscode-dark {
      --pv-font-color0: rgba(255, 255, 255, 1);
      --pv-font-color2: rgba(255, 255, 255, 0.54);
      --pv-font-color3: rgba(255, 255, 255, 0.38);
      --pv-border-color: #424242;
      --pv-disabled-color: #616161;
      --pv-background-color-row-even: #1a1a1a;
      --pv-background-color-row-odd: #252525;
      --pv-badge-active: #66bb6a;
      --pv-badge-normals: #64b5f6;
      --pv-badge-vectors: #4db6ac;
      --pv-badge-tcoords: #b39ddb;
    }

    /* OS-level dark mode fallback: applies when no explicit data-theme is set */
    @media (prefers-color-scheme: dark) {
      html:not([data-theme="light"]) {
        --pv-font-color0: rgba(255, 255, 255, 1);
        --pv-font-color2: rgba(255, 255, 255, 0.54);
        --pv-font-color3: rgba(255, 255, 255, 0.38);
        --pv-border-color: #424242;
        --pv-disabled-color: #616161;
        --pv-background-color-row-even: #1a1a1a;
        --pv-background-color-row-odd: #252525;
        --pv-badge-active: #66bb6a;
        --pv-badge-normals: #64b5f6;
        --pv-badge-vectors: #4db6ac;
        --pv-badge-tcoords: #b39ddb;
      }
    }

    .pv-wrap {
      display: block !important;
      min-width: 300px;
      max-width: 700px;
      line-height: 1.6;
      padding-bottom: 4px;
      font-family: var(--jp-ui-font-family, sans-serif);
      font-size: var(--jp-ui-font-size1, 13px);
      color: var(--pv-font-color0);
    }

    .pv-text-repr-fallback {
      display: none;
    }

    /* Header */
    .pv-header {
      display: flex;
      align-items: center;
      gap: 8px;
      padding-top: 6px;
      padding-bottom: 6px;
      border-bottom: solid 1px var(--pv-border-color);
      margin-bottom: 4px;
    }

    .pv-header-text {
      display: flex;
      flex-direction: column;
      gap: 1px;
      min-width: 0;
      flex: 1;
    }

    .pv-obj-type {
      font-weight: 600;
      color: var(--pv-font-color0);
    }

    .pv-header-badge {
      display: inline-block;
      font-size: 0.75em;
      font-weight: 600;
      padding: 2px 7px;
      border-radius: 3px;
      color: var(--pv-font-color2);
      border: 1px solid var(--pv-border-color);
      white-space: nowrap;
    }

    /* Metadata (always-visible key-value rows) */
    .pv-metadata {
      margin: 4px 0 6px 0;
      font-size: 0.92em;
      line-height: 1.5;
    }

    .pv-meta-row {
      display: flex;
      flex-wrap: wrap;
      gap: 1px 14px;
      padding: 1px 0;
    }

    .pv-meta-row-label {
      color: var(--pv-font-color2);
      font-weight: 500;
      white-space: nowrap;
      min-width: 60px;
    }

    .pv-meta-entry {
      white-space: nowrap;
    }

    /* Copy-to-clipboard button */
    .pv-copy-btn {
      display: inline-block;
      cursor: pointer;
      opacity: 0.5;
      font-size: 0.85em;
      padding: 0 3px;
      vertical-align: middle;
      transition: opacity 0.15s;
      user-select: none;
      border: none;
      background: none;
      color: var(--pv-font-color3);
    }

    .pv-copy-btn:hover {
      opacity: 1;
      color: var(--pv-font-color0);
    }

    .pv-meta-label {
      color: var(--pv-font-color3);
      font-weight: 400;
      padding-right: 2px;
    }

    /* Sections grid */
    .pv-sections {
      padding-left: 0 !important;
      display: grid;
      grid-template-columns: 150px auto auto auto 1fr 20px 20px;
      margin-block-start: 0;
      margin-block-end: 0;
      list-style: none;
    }

    .pv-section-item {
      display: contents;
    }

    /* Hidden checkbox for expand/collapse */
    .pv-section-item > input {
      display: block;
      opacity: 0;
      height: 0;
      margin: 0;
    }

    .pv-section-item > input + label {
      color: var(--pv-disabled-color);
    }

    .pv-section-item > input:enabled + label {
      cursor: pointer;
      color: var(--pv-font-color2);
    }

    .pv-section-item > input:enabled + label:hover {
      color: var(--pv-font-color0);
    }

    /* Section summary (left column label) */
    .pv-section-summary {
      grid-column: 1;
      color: var(--pv-font-color2);
      font-weight: 500;
      white-space: nowrap;
    }

    .pv-section-summary > span {
      display: inline-block;
      padding-left: 0.3em;
    }

    .pv-section-summary-in:disabled + label {
      color: var(--pv-font-color2);
    }

    /* Expand/collapse arrows */
    .pv-section-summary-in + label:before {
      display: inline-block;
      content: "\25b6";
      font-size: 11px;
      width: 15px;
      text-align: center;
    }

    .pv-section-summary-in:disabled + label:before {
      color: var(--pv-disabled-color);
    }

    .pv-section-summary-in:checked + label:before {
      content: "\25bc";
    }

    .pv-section-summary-in:checked + label > span {
      display: none;
    }

    .pv-section-summary,
    .pv-section-inline-details {
      padding-top: 4px;
    }

    .pv-section-inline-details {
      grid-column: 2 / -1;
    }

    .pv-section-details {
      grid-column: 1 / -1;
      margin-top: 4px;
      margin-bottom: 5px;
    }

    .pv-section-summary-in ~ .pv-section-details {
      display: none;
    }

    .pv-section-summary-in:checked ~ .pv-section-inline-details {
      display: none;
    }

    .pv-section-summary-in:checked ~ .pv-section-details {
      display: block;
    }

    .pv-section-summary-in:checked ~ .pv-section-details:has(.pv-var-list) {
      display: contents;
    }

    /* Variable (array) list */
    .pv-var-list,
    .pv-var-item {
      display: contents;
    }

    .pv-var-item > div,
    .pv-var-item label,
    .pv-var-item > .pv-var-name span {
      background-color: var(--pv-background-color-row-even);
      border-color: var(--pv-background-color-row-odd);
      margin-bottom: 0;
      padding-top: 2px;
    }

    .pv-var-list > li:nth-child(odd) > div,
    .pv-var-list > li:nth-child(odd) > label,
    .pv-var-list > li:nth-child(odd) > .pv-var-name span {
      background-color: var(--pv-background-color-row-odd);
      border-color: var(--pv-background-color-row-even);
    }

    .pv-var-name {
      grid-column: 1;
    }

    .pv-var-dims {
      grid-column: 2;
    }

    .pv-var-dtype {
      grid-column: 3;
      text-align: right;
      color: var(--pv-font-color2);
    }

    .pv-var-range {
      grid-column: 4;
      color: var(--pv-font-color3);
      font-size: 0.92em;
    }

    .pv-var-badges {
      grid-column: 5;
      padding-left: 8px;
    }

    .pv-var-name,
    .pv-var-dims,
    .pv-var-dtype,
    .pv-var-range {
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      padding-right: 10px;
    }

    .pv-var-name:hover,
    .pv-var-dims:hover,
    .pv-var-dtype:hover,
    .pv-var-range:hover {
      overflow: visible;
      width: auto;
      z-index: 1;
    }

    .pv-var-name span {
      padding-left: 25px !important;
    }

    .pv-var-name-active span {
      font-weight: 600;
    }

    /* Badges */
    .pv-badge {
      display: inline-block;
      font-size: 0.75em;
      font-weight: 600;
      padding: 1px 5px;
      border-radius: 3px;
      vertical-align: middle;
      line-height: 1.4;
    }

    .pv-badge-active {
      color: var(--pv-badge-active);
      border: 1px solid var(--pv-badge-active);
    }

    .pv-badge-normals {
      color: var(--pv-badge-normals);
      border: 1px solid var(--pv-badge-normals);
    }

    .pv-badge-vectors {
      color: var(--pv-badge-vectors);
      border: 1px solid var(--pv-badge-vectors);
    }

    .pv-badge-tcoords {
      color: var(--pv-badge-tcoords);
      border: 1px solid var(--pv-badge-tcoords);
    }

    /* Logo and Icons */
    .pv-logo {
      display: flex;
      align-items: center;
      flex-shrink: 0;
    }

    .pv-logo svg {
      width: 28px;
      height: 28px;
    }

    .pv-brand-logo {
      display: flex;
      align-items: center;
      flex-shrink: 0;
    }

    .pv-brand-logo svg {
      height: 20px;
      width: auto;
    }

    /* Children list (MultiBlock / PartitionedDataSet) */
    .pv-children-list {
      padding-left: 25px !important;
      list-style: none;
    }

    .pv-children-list li {
      padding: 1px 0;
    }

    .pv-child-name {
      font-weight: 500;
    }

    .pv-child-type {
      color: var(--pv-font-color2);
      font-style: italic;
    }

    .pv-child-type:before {
      content: "\00b7";
      padding: 0 6px;
      font-style: normal;
    }

    .pv-child-detail {
      color: var(--pv-font-color3);
      font-size: 0.9em;
    }

    .pv-child-detail:not(:empty):before {
      content: "\00b7";
      padding: 0 6px;
    }
    </style><pre class='pv-text-repr-fallback'>PolyData (0x7ff554a9e5c0)
      N Cells:    0
      N Points:   0
      N Strips:   0
      X Bounds:   1.000e+299, -1.000e+299
      Y Bounds:   1.000e+299, -1.000e+299
      Z Bounds:   1.000e+299, -1.000e+299
      N Arrays:   0</pre><div class='pv-wrap' style='display:none'><div class='pv-header'><span class='pv-logo'><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
      <defs>
        <linearGradient id="pv-pd-g1" x1="0" y1="0" x2="1" y2="1">
          <stop offset="0%" stop-color="#ffd040"/>
          <stop offset="100%" stop-color="#376fa0"/>
        </linearGradient>
      </defs>
      <polygon points="6,6 22,4 14,16" fill="#376fa0" opacity="0.9"/>
      <polygon points="22,4 28,16 14,16" fill="url(#pv-pd-g1)" opacity="0.85"/>
      <polygon points="6,6 14,16 4,26" fill="#1a4a70" opacity="0.85"/>
      <polygon points="14,16 28,16 20,28" fill="#376fa0" opacity="0.8"/>
      <polygon points="4,26 14,16 20,28" fill="#ffd040" opacity="0.8"/>
      <g stroke="rgba(255,255,255,0.65)" stroke-width="0.6" fill="none">
        <line x1="6" y1="6" x2="22" y2="4"/>
        <line x1="22" y1="4" x2="28" y2="16"/>
        <line x1="28" y1="16" x2="20" y2="28"/>
        <line x1="20" y1="28" x2="4" y2="26"/>
        <line x1="4" y1="26" x2="6" y2="6"/>
        <line x1="6" y1="6" x2="14" y2="16"/>
        <line x1="22" y1="4" x2="14" y2="16"/>
        <line x1="28" y1="16" x2="14" y2="16"/>
        <line x1="14" y1="16" x2="4" y2="26"/>
        <line x1="14" y1="16" x2="20" y2="28"/>
      </g>
      <g fill="rgba(255,255,255,0.85)">
        <circle cx="6" cy="6" r="1.3"/>
        <circle cx="22" cy="4" r="1.3"/>
        <circle cx="28" cy="16" r="1.3"/>
        <circle cx="14" cy="16" r="1.3"/>
        <circle cx="20" cy="28" r="1.3"/>
        <circle cx="4" cy="26" r="1.3"/>
      </g>
    </svg>
    </span><div class='pv-header-text'><div class='pv-obj-type'>PolyData <span class='pv-header-badge'>0 points</span> <span class='pv-header-badge'>0 cells</span> <span class='pv-header-badge'>0 KiB</span></div></div><span class='pv-brand-logo'><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90 24">
      <text x="0" y="18" font-family="system-ui,-apple-system,sans-serif" font-size="18" font-weight="700" font-style="italic" letter-spacing="-0.5">
        <tspan fill="#3776AB" opacity="0.7">P</tspan><tspan fill="#FFD43B" opacity="0.7">y</tspan><tspan fill="#008c9e">Vista</tspan>
      </text>
    </svg>
    </span></div><div class='pv-metadata'><div class='pv-meta-row pv-copyable'><span class='pv-meta-row-label'>Bounds</span><button class='pv-copy-btn' title='Copy to clipboard' data-copy='(1e+299, -1e+299, 1e+299, -1e+299, 1e+299, -1e+299)' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button><span class='pv-meta-entry'><span class='pv-meta-label'>X</span> [1.000e+299, -1.000e+299]</span><span class='pv-meta-entry'><span class='pv-meta-label'>Y</span> [1.000e+299, -1.000e+299]</span><span class='pv-meta-entry'><span class='pv-meta-label'>Z</span> [1.000e+299, -1.000e+299]</span></div></div><ul class='pv-sections'></ul></div></div>
    </div>
    <br />
    <br />

.. GENERATED FROM PYTHON SOURCE LINES 48-55

.. code-block:: Python

    alg.SetInputDataObject(mesh)
    alg.SetGenerateFaces(False)  # noqa: FBT003
    alg.Update()

    outline = pv.wrap(alg.GetOutput())
    outline






.. raw:: html

    <div class="output_subarea output_html rendered_html output_result">
    <div><style>/* PyVista HTML repr stylesheet.
     * Uses pv- prefix to avoid conflicts with other libraries.
     */

    :root {
      --pv-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));
      --pv-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));
      --pv-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));
      --pv-border-color: var(--jp-border-color2, #e0e0e0);
      --pv-disabled-color: var(--jp-layout-color3, #bdbdbd);
      --pv-background-color-row-even: var(--jp-layout-color1, #f5f5f5);
      --pv-background-color-row-odd: var(--jp-layout-color2, #eeeeee);
      --pv-badge-active: #1b5e20;
      --pv-badge-normals: #0d47a1;
      --pv-badge-vectors: #00695c;
      --pv-badge-tcoords: #4527a0;
    }

    body[data-jp-theme-light="false"] {
      --pv-font-color0: var(--jp-content-font-color0, rgba(255, 255, 255, 1));
      --pv-font-color2: var(--jp-content-font-color2, rgba(255, 255, 255, 0.54));
      --pv-font-color3: var(--jp-content-font-color3, rgba(255, 255, 255, 0.38));
      --pv-border-color: var(--jp-border-color2, #424242);
      --pv-disabled-color: var(--jp-layout-color3, #616161);
      --pv-background-color-row-even: var(--jp-layout-color1, #1a1a1a);
      --pv-background-color-row-odd: var(--jp-layout-color2, #252525);
      --pv-badge-active: #66bb6a;
      --pv-badge-normals: #64b5f6;
      --pv-badge-vectors: #4db6ac;
      --pv-badge-tcoords: #b39ddb;
    }

    html[theme="dark"],
    html[data-theme="dark"],
    body[data-theme="dark"],
    body.vscode-dark {
      --pv-font-color0: rgba(255, 255, 255, 1);
      --pv-font-color2: rgba(255, 255, 255, 0.54);
      --pv-font-color3: rgba(255, 255, 255, 0.38);
      --pv-border-color: #424242;
      --pv-disabled-color: #616161;
      --pv-background-color-row-even: #1a1a1a;
      --pv-background-color-row-odd: #252525;
      --pv-badge-active: #66bb6a;
      --pv-badge-normals: #64b5f6;
      --pv-badge-vectors: #4db6ac;
      --pv-badge-tcoords: #b39ddb;
    }

    /* OS-level dark mode fallback: applies when no explicit data-theme is set */
    @media (prefers-color-scheme: dark) {
      html:not([data-theme="light"]) {
        --pv-font-color0: rgba(255, 255, 255, 1);
        --pv-font-color2: rgba(255, 255, 255, 0.54);
        --pv-font-color3: rgba(255, 255, 255, 0.38);
        --pv-border-color: #424242;
        --pv-disabled-color: #616161;
        --pv-background-color-row-even: #1a1a1a;
        --pv-background-color-row-odd: #252525;
        --pv-badge-active: #66bb6a;
        --pv-badge-normals: #64b5f6;
        --pv-badge-vectors: #4db6ac;
        --pv-badge-tcoords: #b39ddb;
      }
    }

    .pv-wrap {
      display: block !important;
      min-width: 300px;
      max-width: 700px;
      line-height: 1.6;
      padding-bottom: 4px;
      font-family: var(--jp-ui-font-family, sans-serif);
      font-size: var(--jp-ui-font-size1, 13px);
      color: var(--pv-font-color0);
    }

    .pv-text-repr-fallback {
      display: none;
    }

    /* Header */
    .pv-header {
      display: flex;
      align-items: center;
      gap: 8px;
      padding-top: 6px;
      padding-bottom: 6px;
      border-bottom: solid 1px var(--pv-border-color);
      margin-bottom: 4px;
    }

    .pv-header-text {
      display: flex;
      flex-direction: column;
      gap: 1px;
      min-width: 0;
      flex: 1;
    }

    .pv-obj-type {
      font-weight: 600;
      color: var(--pv-font-color0);
    }

    .pv-header-badge {
      display: inline-block;
      font-size: 0.75em;
      font-weight: 600;
      padding: 2px 7px;
      border-radius: 3px;
      color: var(--pv-font-color2);
      border: 1px solid var(--pv-border-color);
      white-space: nowrap;
    }

    /* Metadata (always-visible key-value rows) */
    .pv-metadata {
      margin: 4px 0 6px 0;
      font-size: 0.92em;
      line-height: 1.5;
    }

    .pv-meta-row {
      display: flex;
      flex-wrap: wrap;
      gap: 1px 14px;
      padding: 1px 0;
    }

    .pv-meta-row-label {
      color: var(--pv-font-color2);
      font-weight: 500;
      white-space: nowrap;
      min-width: 60px;
    }

    .pv-meta-entry {
      white-space: nowrap;
    }

    /* Copy-to-clipboard button */
    .pv-copy-btn {
      display: inline-block;
      cursor: pointer;
      opacity: 0.5;
      font-size: 0.85em;
      padding: 0 3px;
      vertical-align: middle;
      transition: opacity 0.15s;
      user-select: none;
      border: none;
      background: none;
      color: var(--pv-font-color3);
    }

    .pv-copy-btn:hover {
      opacity: 1;
      color: var(--pv-font-color0);
    }

    .pv-meta-label {
      color: var(--pv-font-color3);
      font-weight: 400;
      padding-right: 2px;
    }

    /* Sections grid */
    .pv-sections {
      padding-left: 0 !important;
      display: grid;
      grid-template-columns: 150px auto auto auto 1fr 20px 20px;
      margin-block-start: 0;
      margin-block-end: 0;
      list-style: none;
    }

    .pv-section-item {
      display: contents;
    }

    /* Hidden checkbox for expand/collapse */
    .pv-section-item > input {
      display: block;
      opacity: 0;
      height: 0;
      margin: 0;
    }

    .pv-section-item > input + label {
      color: var(--pv-disabled-color);
    }

    .pv-section-item > input:enabled + label {
      cursor: pointer;
      color: var(--pv-font-color2);
    }

    .pv-section-item > input:enabled + label:hover {
      color: var(--pv-font-color0);
    }

    /* Section summary (left column label) */
    .pv-section-summary {
      grid-column: 1;
      color: var(--pv-font-color2);
      font-weight: 500;
      white-space: nowrap;
    }

    .pv-section-summary > span {
      display: inline-block;
      padding-left: 0.3em;
    }

    .pv-section-summary-in:disabled + label {
      color: var(--pv-font-color2);
    }

    /* Expand/collapse arrows */
    .pv-section-summary-in + label:before {
      display: inline-block;
      content: "\25b6";
      font-size: 11px;
      width: 15px;
      text-align: center;
    }

    .pv-section-summary-in:disabled + label:before {
      color: var(--pv-disabled-color);
    }

    .pv-section-summary-in:checked + label:before {
      content: "\25bc";
    }

    .pv-section-summary-in:checked + label > span {
      display: none;
    }

    .pv-section-summary,
    .pv-section-inline-details {
      padding-top: 4px;
    }

    .pv-section-inline-details {
      grid-column: 2 / -1;
    }

    .pv-section-details {
      grid-column: 1 / -1;
      margin-top: 4px;
      margin-bottom: 5px;
    }

    .pv-section-summary-in ~ .pv-section-details {
      display: none;
    }

    .pv-section-summary-in:checked ~ .pv-section-inline-details {
      display: none;
    }

    .pv-section-summary-in:checked ~ .pv-section-details {
      display: block;
    }

    .pv-section-summary-in:checked ~ .pv-section-details:has(.pv-var-list) {
      display: contents;
    }

    /* Variable (array) list */
    .pv-var-list,
    .pv-var-item {
      display: contents;
    }

    .pv-var-item > div,
    .pv-var-item label,
    .pv-var-item > .pv-var-name span {
      background-color: var(--pv-background-color-row-even);
      border-color: var(--pv-background-color-row-odd);
      margin-bottom: 0;
      padding-top: 2px;
    }

    .pv-var-list > li:nth-child(odd) > div,
    .pv-var-list > li:nth-child(odd) > label,
    .pv-var-list > li:nth-child(odd) > .pv-var-name span {
      background-color: var(--pv-background-color-row-odd);
      border-color: var(--pv-background-color-row-even);
    }

    .pv-var-name {
      grid-column: 1;
    }

    .pv-var-dims {
      grid-column: 2;
    }

    .pv-var-dtype {
      grid-column: 3;
      text-align: right;
      color: var(--pv-font-color2);
    }

    .pv-var-range {
      grid-column: 4;
      color: var(--pv-font-color3);
      font-size: 0.92em;
    }

    .pv-var-badges {
      grid-column: 5;
      padding-left: 8px;
    }

    .pv-var-name,
    .pv-var-dims,
    .pv-var-dtype,
    .pv-var-range {
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      padding-right: 10px;
    }

    .pv-var-name:hover,
    .pv-var-dims:hover,
    .pv-var-dtype:hover,
    .pv-var-range:hover {
      overflow: visible;
      width: auto;
      z-index: 1;
    }

    .pv-var-name span {
      padding-left: 25px !important;
    }

    .pv-var-name-active span {
      font-weight: 600;
    }

    /* Badges */
    .pv-badge {
      display: inline-block;
      font-size: 0.75em;
      font-weight: 600;
      padding: 1px 5px;
      border-radius: 3px;
      vertical-align: middle;
      line-height: 1.4;
    }

    .pv-badge-active {
      color: var(--pv-badge-active);
      border: 1px solid var(--pv-badge-active);
    }

    .pv-badge-normals {
      color: var(--pv-badge-normals);
      border: 1px solid var(--pv-badge-normals);
    }

    .pv-badge-vectors {
      color: var(--pv-badge-vectors);
      border: 1px solid var(--pv-badge-vectors);
    }

    .pv-badge-tcoords {
      color: var(--pv-badge-tcoords);
      border: 1px solid var(--pv-badge-tcoords);
    }

    /* Logo and Icons */
    .pv-logo {
      display: flex;
      align-items: center;
      flex-shrink: 0;
    }

    .pv-logo svg {
      width: 28px;
      height: 28px;
    }

    .pv-brand-logo {
      display: flex;
      align-items: center;
      flex-shrink: 0;
    }

    .pv-brand-logo svg {
      height: 20px;
      width: auto;
    }

    /* Children list (MultiBlock / PartitionedDataSet) */
    .pv-children-list {
      padding-left: 25px !important;
      list-style: none;
    }

    .pv-children-list li {
      padding: 1px 0;
    }

    .pv-child-name {
      font-weight: 500;
    }

    .pv-child-type {
      color: var(--pv-font-color2);
      font-style: italic;
    }

    .pv-child-type:before {
      content: "\00b7";
      padding: 0 6px;
      font-style: normal;
    }

    .pv-child-detail {
      color: var(--pv-font-color3);
      font-size: 0.9em;
    }

    .pv-child-detail:not(:empty):before {
      content: "\00b7";
      padding: 0 6px;
    }
    </style><pre class='pv-text-repr-fallback'>PolyData (0x7ff554a9e500)
      N Cells:    12
      N Points:   8
      N Strips:   0
      X Bounds:   -1.000e+01, 1.000e+01
      Y Bounds:   -2.309e-14, 2.000e+01
      Z Bounds:   1.416e-01, 7.483e+00
      N Arrays:   0</pre><div class='pv-wrap' style='display:none'><div class='pv-header'><span class='pv-logo'><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
      <defs>
        <linearGradient id="pv-pd-g1" x1="0" y1="0" x2="1" y2="1">
          <stop offset="0%" stop-color="#ffd040"/>
          <stop offset="100%" stop-color="#376fa0"/>
        </linearGradient>
      </defs>
      <polygon points="6,6 22,4 14,16" fill="#376fa0" opacity="0.9"/>
      <polygon points="22,4 28,16 14,16" fill="url(#pv-pd-g1)" opacity="0.85"/>
      <polygon points="6,6 14,16 4,26" fill="#1a4a70" opacity="0.85"/>
      <polygon points="14,16 28,16 20,28" fill="#376fa0" opacity="0.8"/>
      <polygon points="4,26 14,16 20,28" fill="#ffd040" opacity="0.8"/>
      <g stroke="rgba(255,255,255,0.65)" stroke-width="0.6" fill="none">
        <line x1="6" y1="6" x2="22" y2="4"/>
        <line x1="22" y1="4" x2="28" y2="16"/>
        <line x1="28" y1="16" x2="20" y2="28"/>
        <line x1="20" y1="28" x2="4" y2="26"/>
        <line x1="4" y1="26" x2="6" y2="6"/>
        <line x1="6" y1="6" x2="14" y2="16"/>
        <line x1="22" y1="4" x2="14" y2="16"/>
        <line x1="28" y1="16" x2="14" y2="16"/>
        <line x1="14" y1="16" x2="4" y2="26"/>
        <line x1="14" y1="16" x2="20" y2="28"/>
      </g>
      <g fill="rgba(255,255,255,0.85)">
        <circle cx="6" cy="6" r="1.3"/>
        <circle cx="22" cy="4" r="1.3"/>
        <circle cx="28" cy="16" r="1.3"/>
        <circle cx="14" cy="16" r="1.3"/>
        <circle cx="20" cy="28" r="1.3"/>
        <circle cx="4" cy="26" r="1.3"/>
      </g>
    </svg>
    </span><div class='pv-header-text'><div class='pv-obj-type'>PolyData <span class='pv-header-badge'>8 points</span> <span class='pv-header-badge'>12 cells</span> <span class='pv-header-badge'>3 KiB</span></div></div><span class='pv-brand-logo'><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90 24">
      <text x="0" y="18" font-family="system-ui,-apple-system,sans-serif" font-size="18" font-weight="700" font-style="italic" letter-spacing="-0.5">
        <tspan fill="#3776AB" opacity="0.7">P</tspan><tspan fill="#FFD43B" opacity="0.7">y</tspan><tspan fill="#008c9e">Vista</tspan>
      </text>
    </svg>
    </span></div><div class='pv-metadata'><div class='pv-meta-row pv-copyable'><span class='pv-meta-row-label'>Bounds</span><button class='pv-copy-btn' title='Copy to clipboard' data-copy='(-10.0, 10.0, -2.3092638912203256e-14, 20.0, 0.1415802240371704, 7.483089447021484)' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button><span class='pv-meta-entry'><span class='pv-meta-label'>X</span> [-1.000e+01, 1.000e+01]</span><span class='pv-meta-entry'><span class='pv-meta-label'>Y</span> [-2.309e-14, 2.000e+01]</span><span class='pv-meta-entry'><span class='pv-meta-label'>Z</span> [1.416e-01, 7.483e+00]</span></div><div class='pv-meta-row pv-copyable'><span class='pv-meta-row-label'>Cells</span><span class='pv-meta-entry'><span class='pv-meta-label'>lines</span> 12</span></div></div><ul class='pv-sections'></ul></div></div>
    </div>
    <br />
    <br />

.. GENERATED FROM PYTHON SOURCE LINES 56-59

.. note::

  Note that the about filter can be replaced with a ``.outline()`` filter in PyVista

.. GENERATED FROM PYTHON SOURCE LINES 61-67

.. code-block:: Python

    pl = pv.Plotter()
    pl.add_mesh(mesh)
    pl.add_mesh(outline, color="k")
    pl.show()









.. tab-set::



   .. tab-item:: Static Scene



            
     .. image-sg:: /tutorial/06_vtk/images/sphx_glr_c_vtk_algorithms_002.png
        :alt: c vtk algorithms
        :srcset: /tutorial/06_vtk/images/sphx_glr_c_vtk_algorithms_002.png
        :class: sphx-glr-single-img
     


   .. tab-item:: Interactive Scene



       .. offlineviewer:: /home/runner/work/pyvista-tutorial/pyvista-tutorial/doc/source/tutorial/06_vtk/images/sphx_glr_c_vtk_algorithms_002.vtksz






.. GENERATED FROM PYTHON SOURCE LINES 68-75

Find your own filter
^^^^^^^^^^^^^^^^^^^^

Take a look at VTK's examples and documentation to find a filter you'd like
to apply to your mesh. The instructors will be around to help you implement.

See https://kitware.github.io/vtk-examples/site/Python/

.. GENERATED FROM PYTHON SOURCE LINES 77-84

.. raw:: html

    <center>
      <a target="_blank" href="https://colab.research.google.com/github/pyvista/pyvista-tutorial/blob/tutorial/notebooks/06_vtk/c_vtk_algorithms.ipynb">
        <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/ width="150px">
      </a>
    </center>


.. rst-class:: sphx-glr-timing

   **Total running time of the script:** (0 minutes 0.631 seconds)


.. _sphx_glr_download_tutorial_06_vtk_c_vtk_algorithms.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/tutorial?urlpath=lab/tree/notebooks/tutorial/06_vtk/c_vtk_algorithms.ipynb
        :alt: Launch binder
        :width: 150 px

    .. container:: sphx-glr-download sphx-glr-download-jupyter

      :download:`Download Jupyter notebook: c_vtk_algorithms.ipynb <c_vtk_algorithms.ipynb>`

    .. container:: sphx-glr-download sphx-glr-download-python

      :download:`Download Python source code: c_vtk_algorithms.py <c_vtk_algorithms.py>`

    .. container:: sphx-glr-download sphx-glr-download-zip

      :download:`Download zipped: c_vtk_algorithms.zip <c_vtk_algorithms.zip>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
