:orphan:

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

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

+--------------------------------------------------------------------------+
|                        **Parasolid**                                     |
+-----------------------------------------+--------------------------------+
| **File Extension**                      | X_B, X_T, XMT, XMT_TXT         |
+-----------------------------------------+--------------------------------+
| **Supported Versions**                  | Up to 38.1                     |
+-----------------------------------------+--------------------------------+
| **Platforms**                           | |wy| |ly| |my| |ay| |iy|       | 
+-----------------------------------------+--------------------------------+
| :ref:`parasolid_rd_tessellation`        | |c_green| Supported            |
+-----------------------------------------+--------------------------------+
| :ref:`parasolid_rd_brep`                | |c_green| Supported            | 
+-----------------------------------------+--------------------------------+
| :ref:`parasolid_rd_pmi`                 | |c_grey| Unsupported by format |
+-----------------------------------------+--------------------------------+

Parasolid is a geometric modeling kernel format used to store precise solid 
and surface model definitions for CAD systems.

The HOOPS Exchange 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` / `.xmt_bin`
* `.X_T` / `.xmt_txt`


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

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

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

.. _parasolid_rd_tessellation: 

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

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

.. _parasolid_rd_brep: 

Boundary Representation (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.

Surface types available in Parasolid include:

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

Curve types available in Parasolid include:

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

.. _parasolid_rd_pmi: 

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

This concept is not supported by Parasolid.

Assembly
========

The assembly definition within the Parasolid file is supported.
However, the Parasolid reader does not support incremental load.

Views
=====

Views are not supported by the Parasolid file format.

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

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 Parasolid 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>`.

Format-Specific Notes
*********************

Parasolid uses the meter as its default unit. 
In HOOPS 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`.
