:orphan:

################
Parasolid Reader
################

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

+----------------------------------------------------------------------+
|                        **Parasolid**                                 |
+-----------------------------------------+----------------------------+
| **File Extension**                      | X_B, X_T, XMT, XMT_TXT     |
+-----------------------------------------+----------------------------+
| **Supported Versions**                  | Up to 38                   |
+-----------------------------------------+----------------------------+
| **Platforms**                           | |wy| |ly| |my| |ay| |iy|   | 
+-----------------------------------------+----------------------------+
| **Assembly**                            | |c_green|                  | 
+-----------------------------------------+----------------------------+
| **B-rep**                               | |c_green|                  | 
+-----------------------------------------+----------------------------+
| **PMI**                                 | |c_grey| N/A               | 
+-----------------------------------------+----------------------------+
| **Tessellation**                        | |c_green|                  | 
+-----------------------------------------+----------------------------+
| **Views**                               | |c_grey| N/A               |
+-----------------------------------------+----------------------------+
| **Visualization**                       | |c_green|                  |
+-----------------------------------------+----------------------------+

The Parasolid reader provides full access to the assembly and B-REP data stored within a Parasolid file. A file does not need to have a particular extension to be read correctly by HOOPS Exchange however the file extensions of Parasolid files that you can expect to be loaded by HOOPS Exchange are:

* `.X_B`
* `.X_T`
* `.XMT`
* `.XMT_TXT`

How to Import From Parasolid 
=============================

To load a parasolid 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.x_b", &sReadParam, &pModelFile);

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

Assembly
========

The assembly definition within the Parasolid file is supported.
Incremental load is not supported by our Parasolid reader.

B-REP
=====

HOOPS Exchange allows you to query the full topological and geometric model defined in a Parasolid file. HOOPS Exchange provides evaluators
which allow you to directly query all the geometry types available in Parasolid. You can additionally ask HOOPS Exchange to approximate any
specific geometry and provide it in a standard NURBS form.

The list of surface types available in Parasolid is:

* Blend surface
* B-spline surface
* Cone
* Cylinder
* Offset surface
* Plane
* Revolution surface
* Sphere
* Swept surface
* Torus

The list of curve types available in Parasolid is:

* B-spline
* Circle
* Ellipse
* Intersection curve
* Line
* UV curve

Visualization
=============

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

Views
=====

This concept is not supported by Parasolid.

PMI
===

This concept is not supported by Parasolid.

Format-Specific Notes
=====================

Parasolid uses the meter as its default unit. In Exchange, however, the model file created will use millimeters instead of meters and a
conversion factor will be applied with the `\ref A3DTopoContextData::m_dScale "m_dScale"` member
of `\ref A3DTopoContextData`.
