
.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "examples/01_readers/read_iges.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

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

        :ref:`Go to the end <sphx_glr_download_examples_01_readers_read_iges.py>`
        to download the full example code.

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_examples_01_readers_read_iges.py:


Read an IGES file
=================

IGES (``.iges`` / ``.igs``) is one of the older neutral CAD interchange
formats, still common for legacy mechanical hand-offs and
turbomachinery. ``pyvista_cad.read_iges`` wraps `pyiges
<https://github.com/pyvista/pyiges>`_ and tessellates analytic
surfaces with geomdl.

This example uses a real centrifugal impeller exported from SolidWorks
to IGES (MIT, pyiges) and pushes beyond a load+plot demo by computing
surface curvature, the kind of analysis turbomachinery engineers
routinely run on imported IGES geometry.

.. GENERATED FROM PYTHON SOURCE LINES 18-25

.. code-block:: Python


    import numpy as np
    import pyvista as pv

    import pyvista_cad
    from pyvista_cad.examples import downloads








.. GENERATED FROM PYTHON SOURCE LINES 26-28

Load the real impeller. ``surfaces=True`` tessellates every analytic
B-spline surface; ``lines=False`` drops the construction wires.

.. GENERATED FROM PYTHON SOURCE LINES 28-37

.. code-block:: Python


    iges = pyvista_cad.read_iges(
        downloads.iges_impeller_path(),
        bsplines=True,
        surfaces=True,
        lines=False,
    )
    iges





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

 .. code-block:: none

    Converting entities to vtk:   0%|          | 0/4615 [00:00<?, ?it/s]    Converting entities to vtk:   0%|          | 2/4615 [00:00<06:32, 11.76it/s]    Converting entities to vtk:   0%|          | 17/4615 [00:00<01:09, 66.30it/s]    Converting entities to vtk:   1%|          | 32/4615 [00:00<00:51, 88.60it/s]    Converting entities to vtk:   1%|          | 47/4615 [00:00<00:45, 100.12it/s]    Converting entities to vtk:   1%|▏         | 62/4615 [00:00<00:42, 107.17it/s]    Converting entities to vtk:   2%|▏         | 77/4615 [00:00<00:40, 111.50it/s]    Converting entities to vtk:   2%|▏         | 92/4615 [00:00<00:40, 112.70it/s]    Converting entities to vtk:   2%|▏         | 107/4615 [00:01<00:39, 113.50it/s]    Converting entities to vtk:   3%|▎         | 122/4615 [00:01<00:39, 114.82it/s]    Converting entities to vtk:   3%|▎         | 137/4615 [00:01<00:38, 116.49it/s]    Converting entities to vtk:   3%|▎         | 152/4615 [00:01<00:38, 117.38it/s]    Converting entities to vtk:   9%|▉         | 435/4615 [00:01<00:06, 669.57it/s]    Converting entities to vtk:  11%|█▏        | 520/4615 [00:01<00:06, 626.69it/s]    Converting entities to vtk:  12%|█▏        | 575/4615 [00:01<00:07, 556.37it/s]    Converting entities to vtk:  14%|█▎        | 625/4615 [00:02<00:08, 496.82it/s]    Converting entities to vtk:  15%|█▍        | 671/4615 [00:02<00:08, 456.68it/s]    Converting entities to vtk:  15%|█▌        | 714/4615 [00:02<00:11, 333.77it/s]    Converting entities to vtk:  16%|█▌        | 749/4615 [00:02<00:14, 260.43it/s]    Converting entities to vtk:  17%|█▋        | 778/4615 [00:02<00:18, 209.42it/s]    Converting entities to vtk:  17%|█▋        | 802/4615 [00:03<00:29, 130.76it/s]    Converting entities to vtk:  18%|█▊        | 820/4615 [00:03<00:28, 132.46it/s]    Converting entities to vtk:  18%|█▊        | 837/4615 [00:03<00:28, 133.06it/s]    Converting entities to vtk:  18%|█▊        | 853/4615 [00:03<00:28, 132.12it/s]    Converting entities to vtk:  19%|█▉        | 868/4615 [00:03<00:28, 129.47it/s]    Converting entities to vtk:  19%|█▉        | 883/4615 [00:04<00:36, 102.82it/s]    Converting entities to vtk:  19%|█▉        | 897/4615 [00:04<00:35, 104.88it/s]    Converting entities to vtk:  20%|█▉        | 911/4615 [00:04<00:34, 106.76it/s]    Converting entities to vtk:  20%|██        | 925/4615 [00:04<00:34, 108.25it/s]    Converting entities to vtk:  20%|██        | 939/4615 [00:04<00:33, 109.02it/s]    Converting entities to vtk:  21%|██        | 951/4615 [00:04<00:34, 105.55it/s]    Converting entities to vtk:  21%|██        | 965/4615 [00:04<00:34, 107.00it/s]    Converting entities to vtk:  21%|██        | 979/4615 [00:05<00:33, 108.35it/s]    Converting entities to vtk:  22%|██▏       | 993/4615 [00:05<00:33, 109.23it/s]    Converting entities to vtk:  22%|██▏       | 1007/4615 [00:05<00:32, 109.52it/s]    Converting entities to vtk:  22%|██▏       | 1024/4615 [00:05<00:30, 116.58it/s]    Converting entities to vtk:  22%|██▏       | 1038/4615 [00:05<00:31, 114.83it/s]    Converting entities to vtk:  23%|██▎       | 1052/4615 [00:05<00:31, 113.84it/s]    Converting entities to vtk:  23%|██▎       | 1066/4615 [00:05<00:31, 113.04it/s]    Converting entities to vtk:  23%|██▎       | 1080/4615 [00:05<00:31, 112.62it/s]    Converting entities to vtk:  24%|██▎       | 1094/4615 [00:06<00:31, 112.41it/s]    Converting entities to vtk:  24%|██▍       | 1108/4615 [00:06<00:31, 112.21it/s]    Converting entities to vtk:  24%|██▍       | 1122/4615 [00:06<00:31, 111.91it/s]    Converting entities to vtk:  25%|██▍       | 1136/4615 [00:06<00:31, 111.90it/s]    Converting entities to vtk:  25%|██▍       | 1150/4615 [00:06<00:47, 72.85it/s]     Converting entities to vtk:  25%|██▌       | 1164/4615 [00:06<00:42, 81.15it/s]    Converting entities to vtk:  26%|██▌       | 1178/4615 [00:07<00:39, 88.11it/s]    Converting entities to vtk:  26%|██▌       | 1192/4615 [00:07<00:36, 94.06it/s]    Converting entities to vtk:  26%|██▌       | 1208/4615 [00:07<00:33, 102.89it/s]    Converting entities to vtk:  27%|██▋       | 1224/4615 [00:07<00:30, 109.55it/s]    Converting entities to vtk:  28%|██▊       | 1288/4615 [00:07<00:15, 216.95it/s]    Converting entities to vtk:  28%|██▊       | 1311/4615 [00:07<00:16, 205.47it/s]    Converting entities to vtk:  29%|██▉       | 1332/4615 [00:07<00:16, 193.18it/s]    Converting entities to vtk:  29%|██▉       | 1352/4615 [00:08<00:21, 149.56it/s]    Converting entities to vtk:  30%|███       | 1385/4615 [00:08<00:17, 187.52it/s]    Converting entities to vtk:  30%|███       | 1407/4615 [00:08<00:17, 183.36it/s]    Converting entities to vtk:  31%|███       | 1428/4615 [00:08<00:17, 179.73it/s]    Converting entities to vtk:  31%|███▏      | 1448/4615 [00:08<00:18, 173.68it/s]    Converting entities to vtk:  32%|███▏      | 1467/4615 [00:08<00:19, 165.38it/s]    Converting entities to vtk:  32%|███▏      | 1485/4615 [00:08<00:20, 155.24it/s]    Converting entities to vtk:  33%|███▎      | 1510/4615 [00:08<00:20, 148.32it/s]    Converting entities to vtk:  33%|███▎      | 1529/4615 [00:09<00:20, 147.08it/s]    Converting entities to vtk:  33%|███▎      | 1544/4615 [00:09<00:22, 138.92it/s]    Converting entities to vtk:  34%|███▍      | 1573/4615 [00:09<00:18, 162.13it/s]    Converting entities to vtk:  34%|███▍      | 1590/4615 [00:09<00:19, 152.59it/s]    Converting entities to vtk:  35%|███▍      | 1612/4615 [00:09<00:19, 155.77it/s]    Converting entities to vtk:  36%|███▌      | 1639/4615 [00:09<00:19, 154.23it/s]    Converting entities to vtk:  36%|███▌      | 1658/4615 [00:09<00:19, 149.95it/s]    Converting entities to vtk:  36%|███▋      | 1674/4615 [00:10<00:20, 140.96it/s]    Converting entities to vtk:  37%|███▋      | 1702/4615 [00:10<00:18, 161.01it/s]    Converting entities to vtk:  37%|███▋      | 1719/4615 [00:10<00:19, 151.89it/s]    Converting entities to vtk:  38%|███▊      | 1741/4615 [00:10<00:18, 155.03it/s]    Converting entities to vtk:  38%|███▊      | 1768/4615 [00:10<00:18, 153.57it/s]    Converting entities to vtk:  39%|███▊      | 1787/4615 [00:10<00:27, 102.57it/s]    Converting entities to vtk:  39%|███▉      | 1801/4615 [00:11<00:27, 104.19it/s]    Converting entities to vtk:  40%|███▉      | 1831/4615 [00:11<00:20, 133.33it/s]    Converting entities to vtk:  40%|████      | 1847/4615 [00:11<00:21, 130.82it/s]    Converting entities to vtk:  41%|████      | 1870/4615 [00:11<00:19, 141.16it/s]    Converting entities to vtk:  41%|████      | 1897/4615 [00:11<00:18, 145.25it/s]    Converting entities to vtk:  42%|████▏     | 1916/4615 [00:11<00:18, 145.40it/s]    Converting entities to vtk:  42%|████▏     | 1932/4615 [00:11<00:19, 140.40it/s]    Converting entities to vtk:  42%|████▏     | 1960/4615 [00:12<00:16, 161.61it/s]    Converting entities to vtk:  43%|████▎     | 1977/4615 [00:12<00:17, 152.27it/s]    Converting entities to vtk:  43%|████▎     | 1999/4615 [00:12<00:16, 154.55it/s]    Converting entities to vtk:  44%|████▍     | 2026/4615 [00:12<00:16, 153.53it/s]    Converting entities to vtk:  44%|████▍     | 2045/4615 [00:12<00:17, 150.08it/s]    Converting entities to vtk:  45%|████▍     | 2061/4615 [00:12<00:17, 142.57it/s]    Converting entities to vtk:  45%|████▌     | 2089/4615 [00:12<00:15, 163.34it/s]    Converting entities to vtk:  46%|████▌     | 2106/4615 [00:13<00:16, 153.46it/s]    Converting entities to vtk:  46%|████▌     | 2128/4615 [00:13<00:15, 155.87it/s]    Converting entities to vtk:  47%|████▋     | 2155/4615 [00:13<00:16, 153.38it/s]    Converting entities to vtk:  47%|████▋     | 2174/4615 [00:13<00:16, 150.89it/s]    Converting entities to vtk:  47%|████▋     | 2190/4615 [00:13<00:16, 144.05it/s]    Converting entities to vtk:  48%|████▊     | 2218/4615 [00:13<00:14, 164.79it/s]    Converting entities to vtk:  48%|████▊     | 2235/4615 [00:13<00:15, 154.62it/s]    Converting entities to vtk:  49%|████▉     | 2257/4615 [00:14<00:15, 157.07it/s]    Converting entities to vtk:  49%|████▉     | 2284/4615 [00:14<00:14, 155.71it/s]    Converting entities to vtk:  50%|████▉     | 2303/4615 [00:14<00:15, 152.32it/s]    Converting entities to vtk:  50%|█████     | 2319/4615 [00:14<00:15, 145.07it/s]    Converting entities to vtk:  51%|█████     | 2347/4615 [00:14<00:21, 107.78it/s]    Converting entities to vtk:  51%|█████     | 2361/4615 [00:14<00:21, 107.29it/s]    Converting entities to vtk:  52%|█████▏    | 2386/4615 [00:15<00:17, 124.25it/s]    Converting entities to vtk:  52%|█████▏    | 2413/4615 [00:15<00:16, 131.90it/s]    Converting entities to vtk:  53%|█████▎    | 2432/4615 [00:15<00:16, 133.56it/s]    Converting entities to vtk:  53%|█████▎    | 2446/4615 [00:15<00:17, 126.36it/s]    Converting entities to vtk:  54%|█████▎    | 2476/4615 [00:15<00:14, 152.77it/s]    Converting entities to vtk:  54%|█████▍    | 2492/4615 [00:15<00:14, 143.21it/s]    Converting entities to vtk:  54%|█████▍    | 2515/4615 [00:15<00:14, 149.80it/s]    Converting entities to vtk:  55%|█████▌    | 2542/4615 [00:16<00:13, 149.39it/s]    Converting entities to vtk:  55%|█████▌    | 2561/4615 [00:16<00:14, 146.52it/s]    Converting entities to vtk:  56%|█████▌    | 2576/4615 [00:16<00:14, 138.01it/s]    Converting entities to vtk:  56%|█████▋    | 2605/4615 [00:16<00:12, 160.90it/s]    Converting entities to vtk:  57%|█████▋    | 2622/4615 [00:16<00:13, 150.63it/s]    Converting entities to vtk:  57%|█████▋    | 2644/4615 [00:16<00:12, 153.03it/s]    Converting entities to vtk:  58%|█████▊    | 2671/4615 [00:17<00:12, 152.02it/s]    Converting entities to vtk:  58%|█████▊    | 2690/4615 [00:17<00:12, 149.20it/s]    Converting entities to vtk:  59%|█████▊    | 2705/4615 [00:17<00:13, 140.20it/s]    Converting entities to vtk:  59%|█████▉    | 2734/4615 [00:17<00:11, 162.88it/s]    Converting entities to vtk:  60%|█████▉    | 2751/4615 [00:17<00:12, 152.78it/s]    Converting entities to vtk:  60%|██████    | 2773/4615 [00:17<00:11, 154.66it/s]    Converting entities to vtk:  61%|██████    | 2800/4615 [00:17<00:11, 153.07it/s]    Converting entities to vtk:  61%|██████    | 2819/4615 [00:17<00:11, 152.94it/s]    Converting entities to vtk:  61%|██████▏   | 2835/4615 [00:18<00:12, 147.22it/s]    Converting entities to vtk:  62%|██████▏   | 2850/4615 [00:18<00:12, 141.06it/s]    Converting entities to vtk:  62%|██████▏   | 2865/4615 [00:18<00:12, 136.85it/s]    Converting entities to vtk:  62%|██████▏   | 2879/4615 [00:18<00:13, 131.76it/s]    Converting entities to vtk:  63%|██████▎   | 2893/4615 [00:18<00:21, 81.85it/s]     Converting entities to vtk:  63%|██████▎   | 2908/4615 [00:18<00:18, 90.83it/s]    Converting entities to vtk:  63%|██████▎   | 2922/4615 [00:19<00:17, 97.11it/s]    Converting entities to vtk:  64%|██████▎   | 2938/4615 [00:19<00:15, 105.72it/s]    Converting entities to vtk:  64%|██████▍   | 2953/4615 [00:19<00:14, 110.87it/s]    Converting entities to vtk:  64%|██████▍   | 2968/4615 [00:19<00:14, 115.32it/s]    Converting entities to vtk:  65%|██████▍   | 2982/4615 [00:19<00:14, 115.76it/s]    Converting entities to vtk:  65%|██████▍   | 2996/4615 [00:19<00:13, 116.08it/s]    Converting entities to vtk:  65%|██████▌   | 3011/4615 [00:19<00:13, 118.21it/s]    Converting entities to vtk:  66%|██████▌   | 3028/4615 [00:19<00:12, 124.52it/s]    Converting entities to vtk:  66%|██████▌   | 3042/4615 [00:20<00:12, 122.47it/s]    Converting entities to vtk:  66%|██████▌   | 3056/4615 [00:20<00:12, 119.94it/s]    Converting entities to vtk:  67%|██████▋   | 3071/4615 [00:20<00:12, 121.01it/s]    Converting entities to vtk:  67%|██████▋   | 3085/4615 [00:20<00:12, 119.57it/s]    Converting entities to vtk:  67%|██████▋   | 3099/4615 [00:20<00:12, 118.81it/s]    Converting entities to vtk:  67%|██████▋   | 3114/4615 [00:20<00:12, 121.00it/s]    Converting entities to vtk:  68%|██████▊   | 3129/4615 [00:20<00:12, 122.46it/s]    Converting entities to vtk:  68%|██████▊   | 3145/4615 [00:20<00:11, 124.87it/s]    Converting entities to vtk:  68%|██████▊   | 3159/4615 [00:20<00:11, 121.97it/s]    Converting entities to vtk:  69%|██████▉   | 3174/4615 [00:21<00:11, 121.73it/s]    Converting entities to vtk:  69%|██████▉   | 3189/4615 [00:21<00:11, 122.78it/s]    Converting entities to vtk:  69%|██████▉   | 3203/4615 [00:21<00:11, 120.87it/s]    Converting entities to vtk:  70%|██████▉   | 3217/4615 [00:21<00:11, 118.90it/s]    Converting entities to vtk:  70%|███████   | 3232/4615 [00:21<00:11, 121.34it/s]    Converting entities to vtk:  70%|███████   | 3246/4615 [00:21<00:11, 120.02it/s]    Converting entities to vtk:  71%|███████   | 3260/4615 [00:21<00:11, 118.86it/s]    Converting entities to vtk:  71%|███████   | 3275/4615 [00:21<00:11, 120.54it/s]    Converting entities to vtk:  71%|███████▏  | 3290/4615 [00:22<00:11, 119.15it/s]    Converting entities to vtk:  72%|███████▏  | 3304/4615 [00:22<00:17, 75.48it/s]     Converting entities to vtk:  72%|███████▏  | 3318/4615 [00:22<00:15, 84.22it/s]    Converting entities to vtk:  72%|███████▏  | 3333/4615 [00:22<00:13, 93.70it/s]    Converting entities to vtk:  73%|███████▎  | 3348/4615 [00:22<00:12, 101.53it/s]    Converting entities to vtk:  73%|███████▎  | 3362/4615 [00:22<00:11, 105.00it/s]    Converting entities to vtk:  73%|███████▎  | 3376/4615 [00:23<00:11, 107.65it/s]    Converting entities to vtk:  73%|███████▎  | 3391/4615 [00:23<00:10, 113.02it/s]    Converting entities to vtk:  74%|███████▍  | 3405/4615 [00:23<00:10, 113.86it/s]    Converting entities to vtk:  74%|███████▍  | 3419/4615 [00:23<00:10, 114.32it/s]    Converting entities to vtk:  74%|███████▍  | 3434/4615 [00:23<00:10, 117.48it/s]    Converting entities to vtk:  75%|███████▍  | 3449/4615 [00:23<00:09, 119.32it/s]    Converting entities to vtk:  75%|███████▌  | 3463/4615 [00:23<00:09, 118.09it/s]    Converting entities to vtk:  75%|███████▌  | 3477/4615 [00:23<00:09, 117.56it/s]    Converting entities to vtk:  76%|███████▌  | 3492/4615 [00:23<00:09, 119.65it/s]    Converting entities to vtk:  76%|███████▌  | 3507/4615 [00:24<00:09, 121.34it/s]    Converting entities to vtk:  76%|███████▋  | 3521/4615 [00:24<00:09, 119.48it/s]    Converting entities to vtk:  77%|███████▋  | 3535/4615 [00:24<00:09, 117.99it/s]    Converting entities to vtk:  77%|███████▋  | 3550/4615 [00:24<00:08, 120.17it/s]    Converting entities to vtk:  77%|███████▋  | 3564/4615 [00:24<00:08, 118.76it/s]    Converting entities to vtk:  78%|███████▊  | 3578/4615 [00:24<00:08, 117.84it/s]    Converting entities to vtk:  78%|███████▊  | 3593/4615 [00:24<00:08, 119.72it/s]    Converting entities to vtk:  78%|███████▊  | 3608/4615 [00:24<00:08, 120.88it/s]    Converting entities to vtk:  78%|███████▊  | 3622/4615 [00:25<00:08, 119.14it/s]    Converting entities to vtk:  79%|███████▉  | 3636/4615 [00:25<00:08, 118.34it/s]    Converting entities to vtk:  79%|███████▉  | 3651/4615 [00:25<00:08, 120.19it/s]    Converting entities to vtk:  79%|███████▉  | 3666/4615 [00:25<00:07, 121.91it/s]    Converting entities to vtk:  80%|███████▉  | 3682/4615 [00:25<00:07, 124.00it/s]    Converting entities to vtk:  80%|████████  | 3696/4615 [00:25<00:12, 76.21it/s]     Converting entities to vtk:  80%|████████  | 3713/4615 [00:26<00:10, 89.29it/s]    Converting entities to vtk:  81%|████████  | 3727/4615 [00:26<00:09, 95.86it/s]    Converting entities to vtk:  81%|████████  | 3741/4615 [00:26<00:08, 100.42it/s]    Converting entities to vtk:  81%|████████▏ | 3756/4615 [00:26<00:08, 107.33it/s]    Converting entities to vtk:  82%|████████▏ | 3771/4615 [00:26<00:07, 112.77it/s]    Converting entities to vtk:  82%|████████▏ | 3785/4615 [00:26<00:07, 114.37it/s]    Converting entities to vtk:  82%|████████▏ | 3799/4615 [00:26<00:07, 114.99it/s]    Converting entities to vtk:  83%|████████▎ | 3814/4615 [00:26<00:06, 117.85it/s]    Converting entities to vtk:  83%|████████▎ | 3829/4615 [00:26<00:06, 119.97it/s]    Converting entities to vtk:  83%|████████▎ | 3843/4615 [00:27<00:06, 119.31it/s]    Converting entities to vtk:  84%|████████▎ | 3857/4615 [00:27<00:06, 118.11it/s]    Converting entities to vtk:  84%|████████▍ | 3872/4615 [00:27<00:06, 120.61it/s]    Converting entities to vtk:  84%|████████▍ | 3886/4615 [00:27<00:06, 119.24it/s]    Converting entities to vtk:  85%|████████▍ | 3902/4615 [00:27<00:05, 123.14it/s]    Converting entities to vtk:  85%|████████▍ | 3917/4615 [00:27<00:05, 124.04it/s]    Converting entities to vtk:  85%|████████▌ | 3932/4615 [00:27<00:05, 124.14it/s]    Converting entities to vtk:  86%|████████▌ | 3946/4615 [00:27<00:05, 121.94it/s]    Converting entities to vtk:  86%|████████▌ | 3960/4615 [00:28<00:05, 120.47it/s]    Converting entities to vtk:  86%|████████▌ | 3975/4615 [00:28<00:05, 122.29it/s]    Converting entities to vtk:  86%|████████▋ | 3990/4615 [00:28<00:05, 122.96it/s]    Converting entities to vtk:  87%|████████▋ | 4004/4615 [00:28<00:05, 121.08it/s]    Converting entities to vtk:  87%|████████▋ | 4018/4615 [00:28<00:04, 119.68it/s]    Converting entities to vtk:  87%|████████▋ | 4033/4615 [00:28<00:04, 121.97it/s]    Converting entities to vtk:  88%|████████▊ | 4047/4615 [00:28<00:04, 120.51it/s]    Converting entities to vtk:  88%|████████▊ | 4061/4615 [00:28<00:04, 118.92it/s]    Converting entities to vtk:  88%|████████▊ | 4076/4615 [00:29<00:04, 121.06it/s]    Converting entities to vtk:  89%|████████▊ | 4091/4615 [00:29<00:04, 122.08it/s]    Converting entities to vtk:  89%|████████▉ | 4107/4615 [00:29<00:04, 124.89it/s]    Converting entities to vtk:  89%|████████▉ | 4121/4615 [00:29<00:06, 77.85it/s]     Converting entities to vtk:  90%|████████▉ | 4136/4615 [00:29<00:05, 87.89it/s]    Converting entities to vtk:  90%|████████▉ | 4151/4615 [00:29<00:04, 96.52it/s]    Converting entities to vtk:  90%|█████████ | 4165/4615 [00:29<00:04, 100.97it/s]    Converting entities to vtk:  91%|█████████ | 4179/4615 [00:30<00:04, 104.60it/s]    Converting entities to vtk:  91%|█████████ | 4194/4615 [00:30<00:03, 110.08it/s]    Converting entities to vtk:  91%|█████████ | 4208/4615 [00:30<00:03, 111.14it/s]    Converting entities to vtk:  91%|█████████▏| 4222/4615 [00:30<00:03, 112.59it/s]    Converting entities to vtk:  92%|█████████▏| 4237/4615 [00:30<00:03, 116.11it/s]    Converting entities to vtk:  92%|█████████▏| 4252/4615 [00:30<00:03, 118.99it/s]    Converting entities to vtk:  92%|█████████▏| 4266/4615 [00:30<00:02, 118.17it/s]    Converting entities to vtk:  93%|█████████▎| 4280/4615 [00:30<00:02, 117.84it/s]    Converting entities to vtk:  93%|█████████▎| 4295/4615 [00:31<00:02, 119.54it/s]    Converting entities to vtk:  93%|█████████▎| 4310/4615 [00:31<00:02, 121.31it/s]    Converting entities to vtk:  94%|█████████▎| 4324/4615 [00:31<00:02, 118.54it/s]    Converting entities to vtk:  94%|█████████▍| 4338/4615 [00:31<00:02, 117.24it/s]    Converting entities to vtk:  94%|█████████▍| 4353/4615 [00:31<00:02, 119.65it/s]    Converting entities to vtk:  95%|█████████▍| 4367/4615 [00:31<00:02, 118.35it/s]    Converting entities to vtk:  95%|█████████▍| 4381/4615 [00:31<00:01, 117.33it/s]    Converting entities to vtk:  95%|█████████▌| 4396/4615 [00:31<00:01, 119.25it/s]    Converting entities to vtk:  96%|█████████▌| 4411/4615 [00:32<00:01, 121.51it/s]    Converting entities to vtk:  96%|█████████▌| 4425/4615 [00:32<00:01, 119.91it/s]    Converting entities to vtk:  96%|█████████▌| 4439/4615 [00:32<00:01, 118.60it/s]    Converting entities to vtk:  97%|█████████▋| 4454/4615 [00:32<00:01, 120.95it/s]    Converting entities to vtk:  97%|█████████▋| 4469/4615 [00:32<00:01, 122.92it/s]    Converting entities to vtk:  97%|█████████▋| 4483/4615 [00:32<00:01, 121.12it/s]    Converting entities to vtk:  97%|█████████▋| 4497/4615 [00:32<00:00, 119.31it/s]    Converting entities to vtk:  98%|█████████▊| 4512/4615 [00:33<00:01, 76.57it/s]     Converting entities to vtk:  98%|█████████▊| 4526/4615 [00:33<00:01, 84.98it/s]    Converting entities to vtk:  98%|█████████▊| 4540/4615 [00:33<00:00, 92.32it/s]    Converting entities to vtk:  99%|█████████▊| 4555/4615 [00:33<00:00, 100.40it/s]    Converting entities to vtk:  99%|█████████▉| 4570/4615 [00:33<00:00, 107.09it/s]    Converting entities to vtk: 100%|██████████| 4615/4615 [00:33<00:00, 137.33it/s]


.. 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 (0x7f6fab3a1ae0)
      N Cells:    753716
      N Points:   488880
      N Strips:   0
      X Bounds:   -5.052e+01, 4.945e+01
      Y Bounds:   -6.144e+01, 6.144e+01
      Z Bounds:   -4.577e+01, 6.388e+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'>488,880 points</span> <span class='pv-header-badge'>753,716 cells</span> <span class='pv-header-badge'>34.9 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='(-50.516562808, 49.445007453, -61.44230342071006, 61.44230342071006, -45.772995131000016, 6.388220916)' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button><span class='pv-meta-entry'><span class='pv-meta-label'>X</span> [-5.052e+01, 4.945e+01]</span><span class='pv-meta-entry'><span class='pv-meta-label'>Y</span> [-6.144e+01, 6.144e+01]</span><span class='pv-meta-entry'><span class='pv-meta-label'>Z</span> [-4.577e+01, 6.388e+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> 751,374</span><span class='pv-meta-entry'><span class='pv-meta-label'>lines</span> 2,342</span></div></div><ul class='pv-sections'><li class='pv-section-item'><input id='section-645a648a-1f65-404f-b679-5e48e8bfb34d' class='pv-section-summary-in' type='checkbox' checked /><label for='section-645a648a-1f65-404f-b679-5e48e8bfb34d' class='pv-section-summary' title='Expand/collapse section'>Field Data: <span>(2)</span></label><div class='pv-section-inline-details'></div><div class='pv-section-details'><ul class='pv-var-list'><li class='pv-var-item'><div class='pv-var-name'><span>cad.source_format</span><button class='pv-copy-btn' title='Copy to clipboard' data-copy='cad.source_format' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button></div><div class='pv-var-dims'>(1,)</div><div class='pv-var-dtype'>&lt;U4</div><div class='pv-var-range'></div><div class='pv-var-badges'></div></li><li class='pv-var-item'><div class='pv-var-name'><span>cad.backend</span><button class='pv-copy-btn' title='Copy to clipboard' data-copy='cad.backend' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button></div><div class='pv-var-dims'>(1,)</div><div class='pv-var-dtype'>&lt;U6</div><div class='pv-var-range'></div><div class='pv-var-badges'></div></li></ul></div></li></ul></div></div>
    </div>
    <br />
    <br />

.. GENERATED FROM PYTHON SOURCE LINES 38-43

Compute mean curvature on the impeller surface. Mean curvature
highlights the convex blade ridges and concave hub fillets: the
regions a CFD or stress engineer wants to refine first. (Gaussian
curvature on a near-developable blade is ~0 almost everywhere and
washes out; mean curvature reads far better.)

.. GENERATED FROM PYTHON SOURCE LINES 43-48

.. code-block:: Python


    surface = iges.extract_surface().compute_normals()
    surface['mean_curvature'] = surface.curvature(curv_type='mean')
    surface





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

 .. code-block:: none

    /home/runner/work/pyvista-cad/pyvista-cad/examples/01_readers/read_iges.py:44: PyVistaFutureWarning: The default value of `algorithm` for the filter
    `PolyData.extract_surface` will change in the future. It currently defaults to
    `'dataset_surface'`, but will change to `None`. Explicitly set the `algorithm` keyword to
    silence this warning.
      surface = iges.extract_surface().compute_normals()


.. 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 (0x7f6fab42fe80)
      N Cells:    753716
      N Points:   488880
      N Strips:   0
      X Bounds:   -5.052e+01, 4.945e+01
      Y Bounds:   -6.144e+01, 6.144e+01
      Z Bounds:   -4.577e+01, 6.388e+00
      N Arrays:   7</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'>488,880 points</span> <span class='pv-header-badge'>753,716 cells</span> <span class='pv-header-badge'>68.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='(-50.516562808, 49.445007453, -61.44230342071006, 61.44230342071006, -45.772995131000016, 6.388220916)' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button><span class='pv-meta-entry'><span class='pv-meta-label'>X</span> [-5.052e+01, 4.945e+01]</span><span class='pv-meta-entry'><span class='pv-meta-label'>Y</span> [-6.144e+01, 6.144e+01]</span><span class='pv-meta-entry'><span class='pv-meta-label'>Z</span> [-4.577e+01, 6.388e+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> 751,374</span><span class='pv-meta-entry'><span class='pv-meta-label'>lines</span> 2,342</span></div></div><ul class='pv-sections'><li class='pv-section-item'><input id='section-45ae78b3-016a-47a3-b4ec-abea73768418' class='pv-section-summary-in' type='checkbox' checked /><label for='section-45ae78b3-016a-47a3-b4ec-abea73768418' class='pv-section-summary' title='Expand/collapse section'>Point Data: <span>(3)</span></label><div class='pv-section-inline-details'>mean_curvature <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>vtkOriginalPointIds</span><button class='pv-copy-btn' title='Copy to clipboard' data-copy='vtkOriginalPointIds' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button></div><div class='pv-var-dims'>scalar</div><div class='pv-var-dtype'>int64</div><div class='pv-var-range'>[0.000e+00, 4.889e+05]</div><div class='pv-var-badges'></div></li><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'>[-1.000e+00, 1.000e+00]</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>mean_curvature</span><button class='pv-copy-btn' title='Copy to clipboard' data-copy='mean_curvature' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button></div><div class='pv-var-dims'>scalar</div><div class='pv-var-dtype'>float64</div><div class='pv-var-range'>[-5.647e+00, 2.707e+00]</div><div class='pv-var-badges'> <span class='pv-badge pv-badge-active'>active</span></div></li></ul></div></li><li class='pv-section-item'><input id='section-70e16c97-9f8f-4410-8aa5-598ad5034367' class='pv-section-summary-in' type='checkbox' checked /><label for='section-70e16c97-9f8f-4410-8aa5-598ad5034367' class='pv-section-summary' title='Expand/collapse section'>Cell Data: <span>(2)</span></label><div class='pv-section-inline-details'></div><div class='pv-section-details'><ul class='pv-var-list'><li class='pv-var-item'><div class='pv-var-name'><span>vtkOriginalCellIds</span><button class='pv-copy-btn' title='Copy to clipboard' data-copy='vtkOriginalCellIds' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button></div><div class='pv-var-dims'>scalar</div><div class='pv-var-dtype'>int64</div><div class='pv-var-range'>[0.000e+00, 7.537e+05]</div><div class='pv-var-badges'></div></li><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'>[-1.000e+00, 1.000e+00]</div><div class='pv-var-badges'> <span class='pv-badge pv-badge-normals'>normals</span></div></li></ul></div></li><li class='pv-section-item'><input id='section-277f7f4e-79a4-40b3-8dc4-eccc20e3c685' class='pv-section-summary-in' type='checkbox' checked /><label for='section-277f7f4e-79a4-40b3-8dc4-eccc20e3c685' class='pv-section-summary' title='Expand/collapse section'>Field Data: <span>(2)</span></label><div class='pv-section-inline-details'></div><div class='pv-section-details'><ul class='pv-var-list'><li class='pv-var-item'><div class='pv-var-name'><span>cad.source_format</span><button class='pv-copy-btn' title='Copy to clipboard' data-copy='cad.source_format' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button></div><div class='pv-var-dims'>(1,)</div><div class='pv-var-dtype'>&lt;U4</div><div class='pv-var-range'></div><div class='pv-var-badges'></div></li><li class='pv-var-item'><div class='pv-var-name'><span>cad.backend</span><button class='pv-copy-btn' title='Copy to clipboard' data-copy='cad.backend' onclick="navigator.clipboard.writeText(this.dataset.copy)">⧉</button></div><div class='pv-var-dims'>(1,)</div><div class='pv-var-dtype'>&lt;U6</div><div class='pv-var-range'></div><div class='pv-var-badges'></div></li></ul></div></li></ul></div></div>
    </div>
    <br />
    <br />

.. GENERATED FROM PYTHON SOURCE LINES 49-53

Render with a diverging colormap centred on zero so flat regions sit
mid-scale and ridges / valleys pop. Symmetric, robust ``clim`` from
the 90th percentile of the absolute curvature keeps a few extreme
outliers from flattening the contrast.

.. GENERATED FROM PYTHON SOURCE LINES 53-65

.. code-block:: Python


    q = float(np.nanpercentile(np.abs(surface['mean_curvature']), 90))

    pl = pv.Plotter()
    pl.cad.add(
        surface,
        scalars='mean_curvature',
        cmap='RdBu_r',
        clim=(-q, q),
        scalar_bar_args={'title': 'Mean curvature'},
    )
    pl.show()







.. tab-set::



   .. tab-item:: Static Scene



            
     .. image-sg:: /examples/01_readers/images/sphx_glr_read_iges_001.png
        :alt: read iges
        :srcset: /examples/01_readers/images/sphx_glr_read_iges_001.png
        :class: sphx-glr-single-img
     


   .. tab-item:: Interactive Scene



       .. offlineviewer:: /home/runner/work/pyvista-cad/pyvista-cad/doc/examples/01_readers/images/sphx_glr_read_iges_001.vtksz







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

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


.. _sphx_glr_download_examples_01_readers_read_iges.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example

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

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

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

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

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

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