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

Overview

Version 17 of the STEP Tools development stack contains software needed for all types of data, with separate Project Packs that covers applications based on STEP CAD, IFC BIM, or Digital Thread applications.

We simplified STEP applications with a single EXPRESS class library that covers all APs. The STEP faceter is stronger and faster with easy creation of AP242 tesselated models or XML for lightweight viewing. We have new APIs for geometric tolerances with a full range of functions for working with datums, common datums, datum modifiers, and tolerance modifiers. A new STEP checker and browser makes it easy to investigate data sets on any platform.

IFC applications get a boost with the new IFC Faceter, an IFC checker and browser, and improvements in automatic migration from older ifc2x3 data. The new CAD Math Library provides many functions for work with transforms, vectors, points, meshes, unit conversions and other common math. There are also many general updates, such as support for the new 2016 edition of the Part 21 file format. The migration guide has detailed information about API changes in the libraries.

Service Pack One

Service Pack 1 for the v17 STEP Tools® software was released in January 2018 and contains new STEP definitions from the upcoming AP242 Second Edition and some infrastructure improvements to support the 400 new classes that will be coming when the second edition is fully released.

We have also fixed some assembly handling issues in the STEP Helper Library, improved faceting of certain types, and updated the IFC EXPRESS library to the latest IFC4 Addendum 2 TC1 schema.

Detailed changes for each package are summarized here.

Visual Studio 2017, 2015 and new XCode Libraries

The Windows software stack includes new libraries and DLLs for Visual Studio 2017 and Visual Studio 2015, as well as the previously supported Visual Studio 2013 and 2012. We no longer provide libraries for Visual Studio 2010, 2008, 2005, or VC6. Please contact us if this will affect your development.

Set your library link path to one of the following to select the appropriate Visual Studio libraries.

$(ROSE)\lib\i86_win32_vc15_md (VS 2017, 32bit platform, /MD)
$(ROSE)\lib\x64_win64_vc15_md (VS 2017, 64bit platform, /MD)

$(ROSE)\lib\i86_win32_vc14_md (VS 2015, 32bit platform, /MD)
$(ROSE)\lib\x64_win64_vc14_md (VS 2015, 64bit platform, /MD)

$(ROSE)\lib\i86_win32_vc12_md (VS 2013, 32bit platform, /MD)
$(ROSE)\lib\x64_win64_vc12_md (VS 2013, 64bit platform, /MD)

$(ROSE)\lib\i86_win32_vc11_md (VS 2012, 32bit platform, /MD)
$(ROSE)\lib\x64_win64_vc11_md (VS 2012, 64bit platform, /MD)

The MacOS software stack libraries are built with the latest Xcode 8.0 version of Clang, with compatibility flags covering MacOS 10.12 (Sierra) to 10.9 (Mavericks). The Mach-O universal binaries have versions for plain and position-independent static linking, and dynamic linking.

AP242 Capabilities

AP242 Model
AP242 Tesselated Model Saved from Mesh
Mesh created by STEP-NC Simulator

The AP242 EXPRESS class library is now called stp_aim, and covers all of the definitions from the published first edition of AP242 as well as the latest definitions for the upcoming second edition, such as additive manufacturing and point clouds.

New APIs and core library enhancements simplify work with the extreme number of AND/OR combinations required by AP242 semantic tolerances. A full range of functions cover work with datums, common datums, datum modifiers, and tolerance modifiers. The following section describes this in greater detail.

The libraries can directly create AP242 tessellated models from any STEP advanced brep (via our faceter) or custom-generated mesh (such as material removal simulation). The AP242 models preserve faces and can have colors. There are also new functions for saving arbitrary sets of facets, such as portions of faces, for debugging or other purposes. The new checker and browser described in a later section is the home for all of our ongoing AP242 conformance checking work. The AP242 second edition definitions are currently present for the following types of information:

The EXPRESS class library continues to read and write older AP203, AP203e2, and AP214 files. It also now handles AP232 technical data packaging files. The library migrates certain definitions, such as the "cc_design" prefixed types, into the latest definitions, which simplifies programming and provides an easy way to migrate older data into AP242. We also recognize files with non-standard schemas which have appeared in some commercial tools, such as the AP214 variant "AUTOMOTIVE_DESIGN_CC2" and the circa 2005 CAX-IF construction history (SMCH) testing schema "CCD_CLA_GVP_AST_ASD."

AP242 Geometric Tolerances

STEP Tolerance
A Simple Flatness Tolerance
STEP CAD models now hold geometric tolerances associated with faces. AP242 has updated tolerance definitions with many more options and extra parameters. The latest libraries have API calls to easily create and navigate tolerances. The API has functions to create them, find their type, get and put modifiers, datums, and extra parameters. This is much simpler than trying to use the raw C++ classes for each type.

The core of the API uses single call to create any type of tolerance, as well as some functions to test whether the tolerance can hold different types of extra settings. The previous approach was not practical because it required raw C++ classes for each of the 259 possible AND/OR combinations, plus code in your application to pick between them. Key functions for creating and testing tolerances:

The extra parameters, like per area basis or unequal displacement, each have functions to get and set values. Key functions for getting and setting the extra parameters are:

There are also functions for traversing the set of tolerance modifiers, adding or removing modifiers, and managing the values. These functions also understand the old AP214-style modifier and will automatically translate MMC and LMC into a simple modifier enum. Some key functions for modifiers are:

We put in much work on handling datums, common datums, and datum modifiers. The functions easily loop over all of the datums associated with a tolerance. Other functions loop over the modifiers of a datum. When creating data, the functions use the latest AP242 definitions, but they also understand older AP214 style references, so you do not need to worry about the specifics. Some of the datum functions are:

Part 21 Third Edition Files

The third edition of the Part 21 file format replaces the second edition, which had not changed since 2002, and adds new capabilities. The first to be used is a new ANCHOR section that defines externally visible names. This is used to assign UUIDs to semantic tolerances for communication between QIF and MTConnect for AP242 metrology applications.

Below is a sample of an AP242 file with tolerances and UUIDs:

ISO-10303-21;
HEADER;
FILE_DESCRIPTION( (''), /* New Part 21e3 level */ '4;1');
FILE_NAME( [ ... Usual Header ...]);
FILE_SCHEMA (('AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF 
  { 1 0 10303 442 1 1 4 }'));
ENDSEC;

ANCHOR;
/* UUIDs for instances in the file */
<eb6fa56d-d799-47c8-af74-41fc1ae53e4c>=#10;  /* product_definition */
<c1e3e57c-e2ba-443d-a7bb-552d91bcfb56>=#972;  /* datum_feature */ 
<785dc747-8fc1-4ff9-ac35-fad70fdedf35>=#790;  /* perpendicularity_tolerance */ 
<d11202c4-cc57-496b-be70-d075b3f7ddcf>=#780;  /* dimensional_location */ 
<f4671b18-a842-491f-a9c3-0142e56ff848>=#776;  /* flatness_tolerance */ 
<279d96e6-3c5e-4f10-bc38-9c7e0dc51ccc>=#742;  /* dimensional_size */ 
<8491e775-ec2d-4228-a874-591c82dea200>=#740;  /* datum */ 
ENDSEC;

DATA;
#10=PRODUCT_DEFINITION('','',#16,#28);
#11=PRODUCT_DEFINITION_SHAPE('','',#10);

[ ... ]

#740=DATUM('','',#11,.F.,'B');
#741=SHAPE_ASPECT_RELATIONSHIP('','',#972,#740);

[ ... ]

#776=FLATNESS_TOLERANCE('','',#777,#930);
#777=LENGTH_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.1),#754);

ENDSEC;
END-ISO-10303-21;

In addition to the anchor names, a REFERENCE section defines local handles for instances that exist in other files, ZIP archives are now defined for STEP data, and UTF-8 encodings for string data is now allowed. The new STEP libraries handle these new capabilities transparently.

STEP Faceter

The STEP Faceter library is faster, with more AP242 and geometry coverage. The library can now write meshes as JSON or XML data sets for use with WebGL applications. A new property mechanism can attach extra information to faces. We also include source for a new STEP to STL program for using the faceter in Additive Manufacturing applications.

The geometry improvements cover many areas, including AP242 tessellated surface sets and tessellated faces, bounded_curve + surface_curve combinations with curve bounded surfaces, surfaces of revolved NURBS curves, and periodic surfaces where wrap-around occur in the trimmed area, such as a torus trimmed by complete circles.

The facet data is more space efficient, and the library gracefully handles requests for infinite geometric precision, null or bad data in AP242 tessellated models, faces, vertices or facets, as well as small or degenerate faces. Topology sense in STEP data is validated.

The API has new functions to calculate the area of surfaces and to create 2D Delaunay meshes. There are also new API functions for the geometric uncertainties attached to STEP solid models.

STEP Check and Browse

STEP Check

The new STEP Check and Browse tool can analyze STEP file contents and print reports like previous AP checkers, but now you can move beyond batch operation to interactive viewing using the built-in web server.

This tool is integrated into the Windows file explorer, so you can just right click on a file and select "Check STEP File" from the pop-up menu. It will start a local web-server and launch your browser. From there, you can build instance graphs, follow links forwards and backwards between objects, see the range of types in the file, look at the EXPRESS schema definitions, and browse STEP files that are hundreds of megabytes in size!

The stpcheck tool fully recognizes all common STEP schemas (AP242, AP214, AP203, STEP-NC) and can read and recognize the common parts of unusual STEP files. Since the user interface is just any web browser, the tool works on all supported platforms!

IFC BIM Faceter and IFC Migration

IFC Faceter
The new IFC Faceter library makes viewable meshes from IFC data, just like our STEP Faceter does for STEP. We anticipate many iterations as the library grows, so contact us if you are interested so that we can keep you supplied with the latest features! The faceter handles IFC extruded solids with profiles from circles, trimmed_curves, composite_curves, polylines, or lines. It handles shell-based surface models and solids that are faceted_breps with triangle or quad facets. The faceter also resolves color styles that appear in the IFC data. The IFC EXPRESS library now unites IFC2x3 and IFC4 models with greater ease! We automatically migrate types that have extra attributes in IFC4. The extra fields are present when writing IFC4 but omitted when writing as IFC2x3 or IFC2x2. We also migrate types that were removed in IFC4, such as IfcBezierCurve and Ifc2DCompositeCurve. IfcSurfaceStyleShading is also migrated for the latest IFC4 Addendum 1.

We include a very simple IFC geometry viewer (ifcview.exe) as a test harness to display mesh data. Call it from the command line with your filename.

We are also working on a new .NET API for building IFC tools. It has the same power as our C++ API, but can be used directly from C# or Visual Basic. Contact us if you are a customer who wants early access for testing!

IFC Check and Browse

STEP Check

The IFC combined checking and browsing tool can analyze IFC file contents, print reports, and do interactive viewing using the built-in web server.

This tool is integrated into the Windows file explorer, so you can just right click on a file and select "Check IFC File" from the pop-up menu. It will start a local web-server and launch your browser. From there, you can build instance graphs, follow links forwards and backwards between objects, see the range of types in the file, look at the EXPRESS schema definitions, and browse very large IFC files!

CAD Math Library

ROSE Math Library
The ROSE Math Library is a new addition to our software for work with vectors, transforms, meshes, unit conversions, and other operations common to engineering data. There is nothing in here that is specific to an information model (STEP, IFC, CIS/2, DSTV, etc) so it can be used in any program that uses the ROSE library.

This library gathers and documents math code previously spread over the STEP Tools® libraries for STEP and IFC, and removes dependencies on specific EXPRESS schemas. The result contains definitions for the mesh structures used by the STEP and IFC Faceters. It also has vector arithmetic and coordinate system transform functions, unit conversion, and bounding box resources. It also has utilities for writing the mesh data to XML and JSON structures.

The STEP Faceter, IFC Faceter, and STEP helper function libraries now use the mesh, transform, bounding box, and unit data types provided by the ROSE Math library. As a result, you may need to change some symbols when updating code that used the earlier definitions.

General Updates

The Core SDK is stronger after stress tests with thousands of the most abusive files that Microsoft and our corporate customers could make. We are also updated for the recently published third edition of the STEP file format!

Applications are now 5% smaller and have increased performance. We made some functions non-virtual and removed others that were not widely used or handled better in a different way. Other API changes simplify things and help with compiler checking. In particular, string access functions return constant strings so that the compiler can watch for unexpected modification.

Our Part 21 Edition 3 support has been exercised by vendor interoperability testing of the new anchors and URL references. The API has new functions for Part 21 Edition 3 references and Zip archives. You can resolve an external reference to an object and propagate that to all uses. Designs know the path within an archive, such as a zip file, that a it was read from or will be written to. We also annotate anchors with the type of their underlying object to help improve clarity in files. We also have example code that splits and merges files using Edition 3.

Applications built on the latest libraries handle new and unexpected types of STEP data better than ever before because of improved best-fit matching from EXPRESS to C++ classes. The library now chooses a complex instance combination for a subset of types if an exact match is not available. It finds the class that covers the most attributes or subtypes so that your code does not get unexpected casting errors. Most best-fit circumstances came from adding an extra type or subtype to a complex instance combo, which is now handled as a useful nearest combo rather than a less-useful supertype.

The ROSE library uses the full directory path when checking if a file is already in memory. A program can now read both "dir1/foo.stp" and "dir2/foo.stp". Read files with a full pathname for best results. The RoseDesign name() and path() functions also take a full file path now.

When writing Part 21 files, no longer line wrapping within \X\ encoded hex escape sequences. Wrapping is legal, but some systems are not well-written and have trouble with that.

The new RoseTypesCursor class traverses several disconnected types at once. We also expanded operation with deeply nested EXPRESS select types and made it easier to enable or disable individual warning messages.

Supported Platforms

The STEP Tools® software is available for the operating systems and compiler combinations shown below. Contact us to arrange other configurations. Each platform has library versions for use with specific C++ compilers and build flags. See the installation notes for Windows, MacOS, and UNIX for details on each.

Platform Supported Compilers
Windows 10/8/7 32bit Visual Studio 2017 (VC++ 15), Visual Studio 2015 (VC++ 14), Visual Studio 2013 (VC++ 12), Visual Studio 2012 (VC++ 11), with the /MD option. Library versions for static and DLL linking.
Windows 10/8/7 64bit Visual Studio 2017 (VC++ 15), Visual Studio 2015 (VC++ 14), Visual Studio 2013 (VC++ 12), Visual Studio 2012 (VC++ 11), with the /MD option. Library versions for static and DLL linking.
MacOS 10.12 (Sierra) to 10.9 (Mavericks) Clang (Xcode 8.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)

Service Pack History

The changes described above are cumulative to date. The details of earlier releases are archived below for historical reference.

The package versions for the current service pack are as follows:

Package		SP1
-------		---
Core		v17.2
IFC Stack	v17.1
STP Stack	v17.1

other packages --
IGES Library	v17.2
CIS/2 Library	v17.1
STP_ed1 Stack	v17.1