STL to ACIS SAT conversion

Version (78.7 KB) by Adam A
Convert an STL file into ACIS SAT, which can be more readily imported into various CAD packages.
Updated 6 Jun 2012

View License

STL to ACIS SAT converter

Adam H. Aitkenhead
31st March 2010

Convert an STL file into an ACIS v4.0 SAT file (Standard ACIS Text), which can be more readily imported into various CAD packages (including Solidworks) as a solid model.

>> CONVERT_stl_to_sat(STLfilename)
>> CONVERT_stl_to_sat(STLfilename,STLformat)

converts the stl file <STLfilename> into an ACIS SAT file. The optional string <STLformat> defines the format of the STL file as one the following:
'auto' - (The default option) Automatic detection of the file format
'ascii' - ASCII format
'binary' - Binary format

>> CONVERT_stl_to_sat('sample.stl')

converts the STL file 'sample.stl' into an ASIC SAT file called 'sample.sat'.

The STL data must meet the following criteria:

1. All facets are triangular.
2. No duplicate or overlapping facets exist.
3. The mesh is properly closed.
4. The facet normals are properly defined.
5. For each facet edge, there must exist an odd number of identical edges on adjacent facets.

Although uncommon, some STL meshes may not meet requirement 5 and cannot be converted to SAT using this code.

For a description of the ACIS format, refer to:

Depending on the hardware, conversion is performed reasonably quickly for STL meshes of up to a few thousand facets. For larger meshes the conversion time increases roughly with the square of the number of facets.

Cite As

Adam A (2024). STL to ACIS SAT conversion (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R14SP1
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes

If the code fails due to a problematic facet, a plot is now displayed to show the location of that facet.

Added extra checks to test if the input mesh meets requirement 5. Also, small speed improvement for import of binary STL files.

Minor bug fix.

Another 20-25% speed improvement.

Optimised the WRITE_sat.m code, giving a speed increase of 30-40% for larger meshes.

Added automatic removal of zero-area facets.

Added H1 headers.

7th April 2010: Optimisation of the WRITE_sat.m code. Conversion now runs 10-15% quicker for large meshes.