:orphan:


################
Parasolid Writer
################

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

+----------------------------------------------------------------------+
|                        **Parasolid**                                 |
+-----------------------------------------+----------------------------+
| **File Extension**                      | X_T                        |
+-----------------------------------------+----------------------------+
| **Supported Versions**                  | 14.0                       |
+-----------------------------------------+----------------------------+
| **Platforms**                           | |wy| |ly| |my| |ay| |iy|   | 
+-----------------------------------------+----------------------------+
| **Tessellation**                        | |c_grey_g|                 | 
+-----------------------------------------+----------------------------+
| :ref:`parasolid_wt_brep`                | |c_green|                  | 
+-----------------------------------------+----------------------------+
| **PMI**                                 | |c_grey| N/A               | 
+-----------------------------------------+----------------------------+
| :ref:`parasolid_wt_assembly`            | |c_green|                  | 
+-----------------------------------------+----------------------------+
| :ref:`parasolid_wt_views`               | |c_red|                    |
+-----------------------------------------+----------------------------+

The Parasolid file format was originally developed by Shape Data Limited, now owned by Siemens Digital Industries Software. It was first released in 1986 and has since become a widely used geometric modeling kernel in the CAD industry.

The Parasolid writer allows developers to export B-rep data from Exchange to Parasolid. Our library does not enforce any particular file extension, but the conventional extensions that you can create when you export the data are:

* `.X_B` / `.xmt_bin`
* `.X_T` / `.xmt_txt`


How to Export to Parasolid
==========================

To export a model to Parasolid, use :cpp:func:`A3DAsmModelFileExportToParasolidFile`.
Customize the export using :cpp:struct:`A3DRWParamsExportParasolidData`. 

.. admonition:: Note
    
    Export of tessellation data is only possible using the :doc:`Parasolid bridge </guide/parasolid/overview>`. 

.. code-block:: c

   A3DRWParamsExportParasolidData sParamsExportData = A3D_MAKE_DATA(A3DRWParamsExportParasolidData);
   
   // ... set export parameter options

   A3DAsmModelFileExportToParasolidFile(pModelFile, &sParamsExportData, "path/to/file.X_T");

.. rubric:: Assembly

To understand and manipulate the model tree before export, see
:doc:`assembly traversal </tutorials/c/print-assembly-structure>` or the :doc:`Tree Traversal API </guide/tree_traversal>`.

.. rubric:: Export to Buffer

Our Parasolid writer provides additional paramters to export data, which can be found in the :doc:`refernce manual </api/c/structures/A3DRWParamsExportParasolidData>`

Before exporting, ensure that the model contains the geometry and tessellation
you expect. See our pages on :doc:`tessellation  <guide/geometry/getting_tessellation>` for tips on generating visualization data for export.


.. _parasolid_wt_assembly:

Assembly
========

The assembly structure will be exported into the Parasolid file. This will include support for instancing and any coloring and transformations that may be present.


.. _parasolid_wt_brep:

B-Rep
=====

All B-rep surface and curve definitions are maintained during export, as long as the source format was Parasolid-based.
This includes the blends and intersection curves.
However, the B-rep is not exactly the same as the original Parasolid data as we occasionally need to do additional operations like trimming surfaces and recomputing vertices.
If you need to export B-rep *exactly* as it was in the original file, you should use the `KeepParsedEntities` import option.

If the format was not a Parasolid-based format then all surfaces get mapped to one of the following:

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

...and curves to one of the following:

* 3D curve
* Circle
* Ellipse
* Line
* UV curve


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

Export of tessellation data is only possible using the :doc:`Parasolid bridge </guide/parasolid/overview>`.


.. _parasolid_wt_views:

Views
=====

Views are a concept not supported by this format.

