:orphan:

########################
Autodesk Inventor Reader
########################

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

+----------------------------------------------------------------------+
|                        **Autodesk Inventor**                         |
+-----------------------------------------+----------------------------+
| **File Extension**                      | IPT, IAM                   |
+-----------------------------------------+----------------------------+
| **Supported Versions**                  | Up to 2027                 |
+-----------------------------------------+----------------------------+
| **Platforms**                           | |wy| |ly| |my| |ay| |iy|   | 
+-----------------------------------------+----------------------------+
| :ref:`inventor_tessellation`            | |t_green| Supported        | 
+-----------------------------------------+----------------------------+
| :ref:`inventor_brep`                    | |c_green| Supported        | 
+-----------------------------------------+----------------------------+
| :ref:`inventor_pmi`                     | |c_red| Unsupported        | 
+-----------------------------------------+----------------------------+

Autodesk Inventor files are native CAD formats that store complete part and assembly design data. 
When read by HOOPS Exchange, they provide access to product structure, 3D model definitions, and associated visualization data.

A file does not need to have a particular extension to be read correctly by HOOPS Exchange. 
However, the file extensions of Inventor files that you can expect to be loaded by HOOPS Exchange are:

* `.IAM`
* `.IPT`

How to Import From Autodesk Inventor
====================================

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

To load an autodesk inventor 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.ipt", &sReadParam, &pModelFile);

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

.. _inventor_tessellation: 

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

The Inventor reader can use embedded tessellation instead of generating tessellation from B-rep data.
To control this feature, you must use `TfReadInvParameters` (inherits from `TfReadParameters`).
Use member function `SetUseTessForFile(bool bUseTessForFile)` to change value, and `UseTessForFile()` to read the current setting.
The default value is true, meaning embedded tessellation is used by default.

.. _inventor_brep: 

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

HOOPS Exchange 7.2 and later allows you to query the full topological and geometric model defined in an Inventor file.
HOOPS Exchange does not provide access to the geometric definition of all surfaces/curves possible in Inventor. 
However, evaluators for all types are provided.
When exporting to PRC, advanced geometries that do not exist in PRC are converted to NURBS representations.


Some HOOPS Exchange evaluators, specifically for vertex blends and law surfaces, are less robust than our others.
For this reason, the Inventor importer is described as "limited" in official documentation.
If these geometry types are not present in your data, you can expect the Inventor reader to provide robustness comparable to our other readers.

* Blend surface (constant radius)
* Blend surface (variable radius)
* Blend surface (from curve)
* Blend surface (vertex)
* B-spline surface
* Cone
* Extrusion surface
* Law surface
* Offset surface
* Pipe surface
* Plane
* Skin surface
* Sphere
* Surface of revolution
* Surface from curves
* Sweep surface
* Torus

Supported curve types in Inventor include:

* B-spline
* Circle
* Curve on surface
* Ellipse
* Law curve
* Line
* Offset curve
* Intersection curve

.. _inventor_pmi: 

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

HOOPS Exchange does not support PMI for this format.

Views
=====

Inventor representations allow the definition of cameras and certain component visibility states, 
both of which are fully supported by the HOOPS Exchange Inventor Reader.

Materials
=========

HOOPS Exchange's Autodesk Inventor reader supports materials.

HOOPS Exchange supports isotropic materials, excluding any damping coefficient or thermally treated data.
HOOPS Exchange supports orthotropic materials, except for thermal conductivity data.
HOOPS Exchange does not support transverse isotropic materials.

Physical materials are not necessarily embedded in Inventor files.
Inventor files may reference physical materials that are part of an Inventor installation.
Exchange automatically looks for missing physical materials in the installed material library files.
If you want to specify other material library files, add them to :c:member:`A3DRWParamsGeneralData.m_ppcSearchMaterialLibraryFiles`.

The material library files are searched in this order:

* The files specified in :member:`A3DRWParamsGeneralData.m_ppcSearchMaterialLibraryFiles`
* The installed material library files

Textures
========

The HOOPS Exchange Autodesk Inventor reader supports diffuse textures.

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

Inventor-specific Import Options
********************************

There are no import options specific to the Inventor format.

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

* Color redefinition available in Inventor representations is unsupported.
* Default representations are unsupported.
