:orphan:

###########
ACIS Writer
###########

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

+----------------------------------------------------------------------+
|                         **ACIS**                                     |
+-----------------------------------------+----------------------------+
| **File Extension**                      | SAT, SAB                   |
+-----------------------------------------+----------------------------+
| **Supported Versions**                  | 5.0                        |
+-----------------------------------------+----------------------------+
| **Platforms**                           | |wy| |ly| |my| |an| |iy|   |
+-----------------------------------------+----------------------------+
| :ref:`acis_wt_tessellation`             | |c_grey| N/A               |
+-----------------------------------------+----------------------------+
| :ref:`acis_wt_brep`                     | |c_green| Supported        |
+-----------------------------------------+----------------------------+
| **PMI**                                 | |c_grey| N/A               |
+-----------------------------------------+----------------------------+

ACIS is a widely-used geometric modeling kernel that provides robust 3D modeling functionalities for various CAD, CAM, and CAE applications.

The ACIS file format stores 3D geometry data, including vertices, edges, faces, and bodies, using a precise and efficient representation.

This format is commonly used for interoperability between different CAD systems and for accurate geometric representation in engineering and design applications.

Our support for ACIS covers both :doc:`reading <acis_reader>` and writing ACIS files on Windows, GNU/Linux, and macOS. HOOPS Exchange handles geometry in the following way:

* **B-rep:** Suitable for downstream CAD applications that require exact geometry.
* **Tessellation:** Can be exported when your workflows rely on visualization meshes.


How to Export to ACIS
=====================

To export a model to ACIS, use :cpp:func:`A3DAsmModelFileExportToAcisFile`.
Customize the export using :cpp:struct:`A3DRWParamsExportAcisData`.

.. code-block:: c

   A3DRWParamsExportAcisData sParamsExportData;
   A3D_INITIALIZE_DATA(A3DRWParamsExportAcisData, sParamsExportData);
   // ... set export parameter options

   A3DAsmModelFileExportToAcisFile(pModelFile, &sParamsExportData, "path/to/file.sat");

.. rubric:: Assembly

ACIS does not support the concept of assemblies, so we flatten the assembly before exporting.
All parts will appear as sibling parts, with transformations and coloring preserved to match the source data.

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 ACIS writer provides additional methods to export data:

* :cpp:func:`A3DAsmModelFileExportToAcisBuffer`: Writes a model file to a memory buffer.
* :cpp:func:`A3DRepresentationItemExportToAcisBuffer`: Writes a representation item to a memory buffer.

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.


.. _acis_wt_brep:

B-rep
=====

All B-rep data is exported with surfaces and curves approximated to the following types:

* **Surfaces**: B-spline surface, Cone, Plane, Torus.
* **Curves**: B-spline, Circle, Line, UV curve, Ellipse.


.. _acis_wt_tessellation:

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

This format does not support tessellation representation.


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

.. rubric:: Hidden Objects

ACIS does not support hidden objects.
We export hidden objects as visible by default with :cpp:func:`A3DRepresentationItemExportToAcisBuffer`, but this is not possible with :cpp:func:`A3DAsmModelFileExportToAcisFile`.

.. rubric:: Unsupported Features

ACIS does not support PMI and views, so our ACIS writer does not export these elements.
The ACIS kernel does not support conversion of tessellation to geometry, so exporting files with tessellation to ACIS will result in an empty model.
