:orphan:

###########
IGES Reader
###########

.. rst-class:: format-title-block

+----------------------------------------------------------------------+
|                        **IGES**                                      |
+-----------------------------------------+----------------------------+
| **File Extension**                      | IGS, IGES                  |
+-----------------------------------------+----------------------------+
| **Supported Versions**                  | 5.1, 5.2, 5.3              |
+-----------------------------------------+----------------------------+
| **Platforms**                           | |wy| |ly| |my| |ay| |iy|   | 
+-----------------------------------------+----------------------------+
| :ref:`iges_rd_tessellation`             | |c_green| Supported        | 
+-----------------------------------------+----------------------------+
| :ref:`iges_rd_brep`                     | |c_green| Supported        | 
+-----------------------------------------+----------------------------+
| :ref:`iges_rd_pmi`                      | |c_grey| N/A               |
+-----------------------------------------+----------------------------+

The IGES Reader provides full access to the B-rep and View Data stored within a particular IGES file.
A file does not need to have a particular extension to be read correctly by HOOPS Exchange however the file extensions of IGES files that you can expect to be loaded by HOOPS Exchange are:

* `.IGES`
* `.IGS`

How to Import From IGES 
=======================

To load an IGES file, use :cpp:func:`A3DAsmModelFileLoadFromFile`.
The :cpp:struct:`A3DParamsLoadData` structure is used to customize the loading behavior:

.. code-block:: c

   A3DAsmModelFile* pModelFile = 0;

   A3DRWParamsLoadData sReadParam;
   A3D_INITIALIZE_DATA(A3DRWParamsLoadData, sReadParam);
   sReadParam.m_sGeneral.m_bReadSolids = true;

   // ... set other A3DRWParamsLoadData fields as necessary

   A3DAsmModelFileLoadFromFile("path/to/file.igs", &sReadParam, &pModelFile);

See :doc:`/guide/basic_operations/load_model` for more about loading model files.

.. _iges_rd_tessellation: 

Tessellation
============

This visualization data for this format is generated by the HOOPS Exchange tessellation engine.

.. _iges_rd_brep: 

B-rep
=====

The list of supported surface types:

* Plane surface
* Ruled surface
* Rational b-spline surface
* Bounded surface
* Parametric spline surface
* Surface of revolution
* Offset surface
* Trimmed surface
* Right circular cylindrical surface
* Right circular conical surface
* Spherical surface
* Toroidal surface

The list of supported curve types:

* Circular arc
* Rational b-spline curve
* Line
* Curve on a parametric surface
* Copius data
* Offset curve
* Parametric spline curve
* Composite curve

.. _iges_rd_pmi: 

PMI
===

This concept is not supported by IGES.

Assembly
========

The full assembly tree definition is provided however referenced files are not currently supported.
Incremental load is not supported by our IGES reader.

Views
=====

Views are supported, however, authoring applications very rarely export IGES data with views.

Miscellaneous
=============

Our IGES reader does significant effort to correct problems with corrupt or poorly defined data.
Some of the things done here include fixing basic problems with corrupt files, correcting orientation problems, closing open loops and adjusting vertex tolerances.
The :func:`A3DAsmModelFileSew()` function is available to developers who want all surfaces which share a common edge to be joined together.


Import Options Specific to IGES
===============================

None

Limitations
===========

Group associativity is not supported (IGES Type 402).
