: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| Unsupported by format |
+-----------------------------------------+--------------------------------+

IGES (Initial Graphics Exchange Specification) is a neutral CAD file format 
used to exchange 2D and 3D design data such as curves, surfaces, and wireframe 
geometry between CAD systems.

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 
=======================

Reading ``IGES`` files follows the same pattern as other formats: configure load parameters, then call the standard load function.

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_MAKE_DATA(A3DRWParamsLoadData);
   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: 

Boundary Representation (B-rep)
===============================

Supported surface types include:

* 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

Supported curve types include:

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

.. _iges_rd_pmi: 

Product Manufacturing Information (PMI)
=======================================

PMI is not supported by the IGES file format.

Assembly
========

The full assembly tree definition is provided, however referenced files are not currently supported.
Incremental load is unsupported 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.


Advanced Publish
****************

Advanced Publish is an authoring SDK within HOOPS Exchange that enables creation and export of rich engineering data using the PRC data model. 
It supports generating output for several supported formats through file import or API-based authoring.

Please note that the IGES file format is only available to define the 3D model in Advanced Publish.

For more information about using Advanced Publish with this file format, refer to the Advanced Publish section of the Programming Guide :doc:`here </guide/publish/overview>`.

IGES-specific Import Options
****************************

None

Limitations
***********

* Group associativity is not supported (IGES Type 402).
