This describes an older ST-Developer release (2014). You can find the details for the latest release here


For the past two decades, ST-Developer has been the most complete and mature SDK for building applications for STEP, IFC, and CIS/2. ST-Developer v16 achieves new levels of convenience and power with libraries focused on STEP CAD and CAM/CNC applications with the latest AP242 definitions, or IFC BIM applications with the latest IFC4 model.

A new higher-level library for STEP Faceting transforms STEP geometry into meshes for graphics display and other lightweight tasks. A STEP Helper library simplifies work with common STEP concepts. The ROSE C++ Library now handles compressed STEP files and external references from the upcoming Part 21 third edition, has better traversal marking, error reportings, and other API improvements.

As operating systems and compilers evolved, we responded with support for versions. On Windows, ST-Developer now has libraries for Visual Studio 2013 and 2012. DLLs and installers are now digitally signed for use in your Windows 8 logo tests. On MacOS, we now support Mavericks, the Clang compiler, and the latest Xcode. We also have shared library support on Linux 32bit, 64bit, and MacOS X.

ST-Developer Overview

Supported Platforms

ST-Developer is available for all of the different operating systems and compiler combinations shown below. Contact us if you would like to arrange support for other configurations. Each platform has versions of the programming libraries for use with all major C++ compiler versions and build flags. See Windows Installation, MacOS Installation, and UNIX Installation for details on each.

Platform Supported Compilers
Windows 32bit Visual Studio 2013 (VC++ 12), Visual Studio 2012 (VC++ 11), Visual Studio 2010 (VC++ 10), Visual Studio 2008 (VC++ 9), Visual Studio 2005 (VC++ 8), and Visual C++ 6.0 with the /MD option. Library versions for static and DLL linking.
Windows 64bit Visual Studio 2013 (VC++ 12), Visual Studio 2012 (VC++ 11), Visual Studio 2010 (VC++ 10), Visual Studio 2008 (VC++ 9), and Visual Studio 2005 (VC++ 8) with the /MD option. Library versions for static and DLL linking.
MacOS X 10.8 (Mountain Lion) or 10.9 (Mavericks) Clang (Xcode 4.3 or 5.0) with libraries built for Mach-O universal binaries. Library versions for plain and position-independent static linking, and dynamic linking.
Linux 32bit
All recent distros, RHEL 5, SuSE 10-11, and anything with glibc 2.5+.
GCC 3.4/4.x. Library versions for plain and position-independent static linking, and dynamic linking.
Linux 64bit
All recent distros, RHEL 5, SuSE 10-11, and anything with glibc 2.5+.
GCC 3.4/4.x. Library versions for plain and position-independent static linking, and dynamic linking.
IBM POWER-series
AIX v5.3, POWER5
IBM XL C/C++ 64bit. Library versions for plain and thread safe static linking.
Hewlett Packard
HP-UX v11, Itanium
HP ANSI C++ 64bit. Library versions for plain and position-independent static linking (+Z -z -mt)
Solaris v10+, SPARC Sun Studio v11 64bit. Library versions for plain and position-independent static linking (-PIC -mt)
Solaris v10+, Intel x86 Sun Studio v11 64bit. Library versions for plain and position-independent static linking (-PIC -mt)

STEP CAD, CAM, and IFC BIM Libraries

In this release, the STEP Merged CAD Library now has the latest AP242 definitions. This library handles AP242, AP214, and AP203 in one program, and now has the latest tesselation model, updated PMI, and external product structure. We added new recommendations and instructions for updating your programs to the revised structures in AP242. We also updated our sample programs with better examples for Brep geometry, presentation styling, and assembly creation. All of these libraries have built-in schema and short name information so they do not require runtime support files.

For CAM and CNC applications, we have added a new STEP Merged Manufacturing Library. This library handles STEP-NC and other STEP manufactuing APs, plus AP242, AP214, and AP203 in one program. Start using the latest PMI, manufacturing tolerances, and machine tool kinematics definitions from AP242 in your manufacturing programs.

Both merged libraries have new complex instance combinations for the PMI model, tesselated geometry model, and kinematics models. We have also improved support for reading very early AP203 files that used preliminary versions of the standard.

Finally, we have added the new IFC BIM Library for AEC applications with the latest HVAC, piping, and electrical coverage in the IFC4 Industry Foundation Classes model. As with the STEP merged libraries, this is one library for building IFC applications that read and write IFC4, IFC 2x3, or IFC 2x2 data. The library currently reads most older data and we are working to expand the migration capabilities.

STEP Faceter Library and ST-Viewer

The STEP Faceter Library is a new addition to ST-Developer v16, but the technology has been inside the ST-Viewer for several years. In this release, we are making it available as a public API so that you can quickly build your own programs graphics, costing, or other applications with STEP geometry.

This library transforms STEP geometry and topology definitions into triangular meshes for OpenGL, WebGL, or other graphics display. We provide sample programs that show how to facet simple parts or full assemblies. The library is multi-threaded for maximum performance and the API calls give you a range of options, from high-level calls to detailed thread management. You can facet solids or just individual faces, and have control over the render tolerance and tradeoffs between the mesh quality, size and computational cost.

We have also made many improvements to the geometry processing within the library, which is also seen in ST-Viewer. Rendering and performance is much better for unusually trimmed spheres, surfaces with hundreds of holes, periodic surfaces, and singularities. Mesh quality is greatly improved and error recovery code prevents crashes when a face does not facet properly.

We added support for the new tesselated models in AP242 and geometric sets of curve bounded surfaces (class 2), support for mixed units, better rendering of revolved surfaces, and improved display for poly_loop face boundaries and oriented_face instances. Files without product structure are not legal STEP files, but they may have some shape information in them that is now displayed if possible.

STEP AP Helper Library

The STEP AP Helper Library is a new addition to ST-Developer v16. it contains a collection of helper functions to simplify work with assemblies, properties, units and measures, representation contexts, and other common STEP structures. The functions are mostly geared towards analyzing existing data sets and tagging them for quicker traversal, but some of the functions also simplify creation of new data.

Versions of this library are provided for use with the STEP CAD and STEP Manufacturing libraries.

ROSE C++ Library

The ROSE library has been refined with new support for compressed STEP files, a test implementation of URL references from the upcoming third edition of the Part 21 file format, better traversal marking and error reportings, and better reading of bad or misformatted STEP files.

The library now transparently reads STEP Part 21 files that have been zip-compressed or gzip-compressed. No special filenames or extensions are needed — the format is automatically detected when reading. You can write compressed files by setting the RoseDesign format to "step-zip" or "step-gzip".

The ROSE library now has initial support for anchors and URL references in the upcoming third edition of the STEP Part 21 file format. The ISO community is still exploring the full range of possibilities for these new capabilities, but these references make it possible to distribute data across multiple files or a ZIP archive.

Within the library, reference data is kept by new RoseReference and RoseRefUsage objects and RoseDesigns have a a new reference_section(), similar to the header_section() and system_section(), that holds all of the references in a file. When reading STEP files, the library does a better job of reading corrupted or incorrectly written data. In particular, the library now now handles enumeration values with doubled trailing dots (a side effect of some email transit) and presentation styles which are not correctly qualified by some CAD systems. Extraneous "+" and leading zeros from exponents are now removed when writing floating point values and the maximum digits of precision can also be adjusted if needed.

As part of the release of the STEP Faceting Library, we have moved some thread API functions down into the ROSE library. Your application programs should still only access the ROSE library through one thread at a time, but we are beginning to leverage threads throughout the ST-Developer code. No changes are needed on Windows, but MacOS programs will need to link "-lpthread". Other UNIX applications will link "-lpthread -lrt".

The RoseObject marking API has been improved so that you can now nest traversals or use several concurrent marks. For concurrent marking, you can pass an optional RoseMark handle identify the mark, otherwise the functions use the most recently begun handle. Having multiple marks makes it easier to categorize objects and to perform more advanced network traversal algorithms.

Error reporting has been streamlined and enhanced. You can now find the maximum severity of issues seen during file reads or other complex operations. You can also collect counts and then query specific errors or print summaries. It is also easier to provide your own custom code to handle error reporting.

We also combined several return codes into a single RoseStatus type, which indicates the maximum error status (warning, error, etc). The function prototypes for the following callbacks have changed, but they will still return the ROSE_OK value on success.


The internal APIs used for reading and writing files are now simpler. They use new input stream and output stream classes that wrap non-filesystem sources or destinations for STEP data. This is used for the compressed read/write (like the zip and gzip handling discussed above), and can be extended for network links or other character sources. We also added some hooks to the EXPRESS data dictionary to customize attribute orderings. These hooks are used by the stpcad and stpman libraries to read and migrate very early AP203 files.

The Set(), List(), Bag(), and Array() macros have been retired because they caused symbol conflicts on some systems. Just use the expanded name directly or use the new prefixed macros ROSE_SET_OF(t), ROSE_LIST_OF(t), etc. We also added ROSE prefixes to the NULL_INDEX and NOTFOUND macros.

Compiling with DLLs on Windows is now simpler. You only need to defining ROSE_DLL to turn on DLL linkage for all ST-Developer libs.

Other Improvements

The ST-Developer DLLs are now all digitally signed and contain embedded version numbers.

We also corrected some issues with international character filenames. All of the Windows command line tools now properly handle wide character arguments, and we have corrected some rare issues that arise from using international characters and switching locales.