Overview

The nineteenth version of the STEP Tools® software is core technology for building STEP CAD, IFC BIM, and Digital Thread manufacturing applications. For the past thirty years our software has powered the product data in commercial CAD, analysis, and visualization systems with the fastest and most reliable libraries for making, using, and manipulating STEP, STEP-NC, IFC, and CIS/2.

In 1995, STEP made it possible to exchange full-fidelity brep solid geometry, and changed how companies did business. A few years later STEP did it again with CAD assemblies. Now STEP has made it possible to exchange full-fidelity semantic tolerances and companies will again change how they do business. In 2020, ISO published the second edition of STEP AP242, and our latest libraries contain 400 new definitions for semantic tolerances, additive setup, tesselated models and point cloud data, as well as UUIDs, references, and UTF-8 strings introduced by the third edition of the STEP file format.

STEP-NC AP238 has proven itself as the new machine control data for aerospace work. Our tools and libraries were used in the manufacture of one million STEP-NC parts in 2019, and include all of the digital twin, machine tool kinematics, semantic tolerance, and machining process enhancements from the upcoming second edition. Our material removal simulator has been used in parallel robotic drill-and-fill tests, other libraries are being used by machine tool vendors for process integration, and we continue to rapidly respond to our customer needs with 30-40 point releases every year.

IFC reduces the cost of construction by allowing building projects to be assembled digitally for testing before delivery. Every BIM system has an interface to read and write IFC and recent IFC technical meetings have included thousands of attendees. IFC translators now create advanced geometry previously only in STEP and our IFC meshing library has been expanded to match. Our libraries and tools have been updated to IFC 4x3, with continued automatic migration of older data through IFC4 and IFC 2x3.

Very large STEP and IFC product models are now common, and we have completely reworked our graphics core to handle them. Our latest viewers can handle models an order of magnitude larger than the last release, up to multi-gigabyte sizes, with faster meshing, smooth spinning, and coverage over more types of geometry.

AP242 Tolerance Model

All users get a common core of libraries with additional libraries and tools targeted at your particular application. Our knowledge of these standards is unmatched across the industry. Whatever your goal, we provide the tools that you can rely on to reach it.

We add new definitions to the libraries and tools as they become available, expand our meshers for STEP and IFC in conjunction with the CAD systems as they move to new types of geometry, and leverage the latest Part 21 Edition with new anchors and URL references, pack the most data in memory, with the best application performance. This includes the security and stability of almost thirty years of testing.

The STEP Tools® software is available on Windows, Linux, and Mac, including the new Apple M1 platform, with others available upon request. We have also added support for Visual Studio 2019, GCC-7 on Linux, and the latest Xcode environment on Mac.

The STEP Tools® Software Development Stack

STEP CAD Applications

STEP Stack

The second edition of AP242, published in 2020, introduces about 400 new definitions for semantic tolerances, additive setup, improved tesselated models and point cloud data, new types of hole features, annotated 3D model equivalence (A3M), and electrical wire harness.

These new definitions are on top of the 533 definitions added by the first edition for kinematics, assembly constraints, and PMI, so STEP now has over nine hundred new definitions beyond what AP214 and AP203e2 could handle.

Build a STEP importer or exporter with our libraries, read and write STEP models using C++ classes for the latest AP242e2 definitions or older AP203/AP214 models. Create meshes for visualization or analysis, build or use STEP assemblies, tolerances, and CAD geometry.

Use STEP Explorer to view geometry, assemblies, and semantic tolerances in the latest AP242 models with a completely reworked graphics core for fast performace on very large assemblies and files containing millions of instances. Our STEP checking and browsing tools to warn about potential problems in files, find and correct them.

The STEP components:

Meshing and Viewing a Nissan Concept Car

The STEP Programming API has C++ classes for every type of data that can be found in a STEP file, whether it was written by an AP203 system in 1995, or the most modern AP242 second edition translator in 2021. The C++ classes make it easier to program with IDE tool tips and strong compiler type checking. You can read any STEP file, and write files for use with the latest features by the latest applications or for compatibility with older ones. STEP applications are also simple to package, with no need for extra runtime support.

The API also provides a mesher for STEP models that converts Brep geometry into triangular meshes for viewing or analysis. The mesh has full associativity back to the original geometry, so you can associate tolerances and PMI, or select faces in a viewer. The meshing API is now simpler, meshes are built faster, particularly for spline surfaces, and gives better results with offset surfaces, open loops, and singularities in UV space. Save meshes as AP242 tesselated models, JSON, XML, STL, Additive manufacturing file (AMF) or 3D Manufacturing Format (3MF).

This release has new product and shape indexes that simplify work with assemblies and give quick access to the assembly structure, geometry and transforms. Other groups of functions provide high-level operations to make or query STEP tolerance and PMI annotations, presentation, units, measures, and contexts. This release adds functions for making and interpreting STEP dates and functions to simplify migration to AP242.

STEP Stack

STEP sample projects help you get started quickly, with programs to facet assemblies, make STL from STEP, build b-rep geometry, make new assemblies, and traverse existing assemblies.

The latest AP242 tolerances and PMI are easy to create or use with the High Level Tolerance API. These functions are callable in .NET or Node.js and work with face callouts, geometric tolerances, dimensions, datums, and the wide range of modifiers supported by AP242 second edition!

Our STEP Viewing tools show the geometry, assemblies, and tolerances as 3D display, so you can see the contents as intended. This release handles the latest AP242 Second Edition tolerances and has a completely reworked graphics core for an order of magnitude faster performace than previous releases!

Analyze STEP files and test them for correctness with the STEP Check and Browse tool. You can batch check files or explore the contents interactively using the built-in web server. 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 stack also includes batch checkers customized for AP214, AP209, and AP203.

Applications can also work with older IGES models using our IGES Read/Write API. This C++ library has classes for all definitions in IGES 5.3 and contains special routines to read and write that data in IGES formatted files.

IFC BIM Applications

IFC Stack

With our IFC BIM tools, you can build an IFC or CIS/2 importer or exporter for your product, read and write any IFC model using C++ classes for the latest definitions in IFC4 or IFC2x3, create meshes for visualization or analysis, build or navigate IFC assemblies, geometry, and relationships.

We have updated our APIs for the latest IFC 4x3 RC4 schema, completely revamped our mesher for parallel operation, support for dozens of new geometry types, including trimmed spline surfaces and the full range of swept profiles, and started adding things to a new IFC extensions library to simplify work with IFC placements, units and other common model structures.

Our IFC viewer displays geometry and spatial structure, with support for dozens of new types of geometry and a completely reworked graphics core for fast performace on very large assemblies and files containing millions of instances. Our checking and browsing tools warn about potential problems in files and help you find and correct them.

Some of the IFC components we provide:

Viewing a Large IFC Building Model

The IFC Programming API has C++ classes for every type of data that can be found in IFC files, from the latest IFC4x3 through IFC4, and IFC2x3. The C++ classes make it easier to program with IDE tool tips and strong compiler type checking. You can read any STEP file, and write files for use with the latest features by the latest applications or for compatibility with older ones. IFC applications are also simple to package, with no need for extra runtime support.

The API also provides a mesher that converts IFC geometry into triangular meshes for viewing or analysis. The mesh has full associativity back to the original geometry and product structure. The meshing API is now simpler, meshes are built faster, and supports 35 more types of geometry including b-reps with trimmed surfaces, which are new to IFC4. We added background meshing, simplified the API, and started adding functions to work with other IFC data, like styles, axis placements, and units.

IFC Check

IFC sample projects help you get started quickly. Sample programs show how to create meshes for an IFC spatial structure, transform the components into the proper position in space, Create an IFC building with a simple block shape, GUIDs, owner history, units, and basic spatial structure. Create a standard wall and attache property sets and quantities to it. Recursively prints an IFC assembly — the spatial structure beginning with the IfcProject root. Find and print the properties associated with each IfcWall instance in an IFC file.

Analyze IFC files and test them for correctness with the IFC Check and Browse tool. You can batch check files or explore the contents interactively using the built-in web server. 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 IFC files that are hundreds of megabytes in size!

Applications can also process structural steel definitions using the CIMsteel Integration Standard with the CIS/2 EXPRESS API. This C++ library has classes for all definitions in the Logical Product Model for CIS/2. As with the IFC EXPRESS, classes make it easier to program with IDE tool tips and prevent type mismatches.

Digital Thread Applications

Digital Thread Stack

With our stack of Digital Thread tools, you can display the 3D part models for the machining workpiece, tools, CNC, as well as removal simulation, PMI annotations, MTConnect positional data, QIF face status, and other aspects of a Digital Twin on the Digital Thread. The stack includes tools for the web and the desktop:

Using the Digital Thread APIs you can integrate manufacturing systems around STEP-NC, MTConnect, QIF, and ISO 13399 cutting tool data. Build interfaces to move data from these systems to and from the digital thread, drive machine tools, and feed metrology or anaylsis with digital twin models. Applications can use the Digital Thread API in .NET, Node, or C++ with collections of high level functions to:
Robot Drill and Fill with Digital Twin

The Digital Thread Web Interface provides a rich REST API for process and models plus a web client that displays the 3D part models for machining workpiece, tools, CNC, as well as removal simulation, PMI annotations, MTConnect positional data, QIF face status, and other aspects of a Digital Twin on the Digital Thread.

The server and client are live-stream the geometry and material removal calculated from As Run MTConnect data or the As Planned data in the Digital Thread model. The client and REST API are delivered as Javascript source so they can be customized for your application.

The server calls the Digital Thread API to build the responses to REST queries for geometry and material removal information. Your own Node.js or .NET applications can use the Digital Thread API to build CAM interfaces, assemble process, import geometry, add tolerances, react to process events, or move process onto machine tools.

The Digital Thread Desktop Interface is a Windows Desktop tool that views process, workpiece geometry, tools, and tolerances. It contains the material removal simulator for examining process and was built with the .NET version of the Digital Thread API.

To help you get started quickly, the stack contains source code for several Digital Thread sample projects. The Hello World project creates a very simple process. The STEPNode NX Translator sample project demonstrates how to read CAM data from Siemens NX and build a complete digital thread model. This translator program can be customized as desired to enhance it with your own semantics or to integrate data from other sources, like CAD models for your tools, raw stock, or final workpiece. The Print Tool Moves and Print Workingsteps projects demonstrate how to iterate over an as-planned process, reacting to the tool changes, operation changes, and individual tool moves. The Generate example builds on these projects and shows how to drive different machine tools from the digital thread.

Core Capabilities

Core Capabilities

Our core libraries and tools provide the foundation for your demanding CAD and data exchange applications. These libraries read, write, and manipulate data described by the EXPRESS schema language, which is used by STEP, STEP-NC, IFC, CIS/2, DSTV and other protocols to define structures and constraints. The libraries read and write models in the commonly-used Part 21 ASCII form, Part 28 XML, and zip-compressed versions of both.

Build applications with C++ classes generated from EXPRESS schemas for fast access and strong compiler type checking, advanced search and traversal features such as USEDIN, late-bound operations using the EXPRESS data-dictionary, perform CAD math for transforms, meshes, and other spatial operations, and control STEP physical files.

The ROSE Math API gathers math oprerations used across the Digital Thread, STEP and IFC stacks, and works with any schema. The API provides definitions for the mesh structures used by the STEP and IFC Meshers. It also has vector arithmetic and coordinate system transform functions, unit conversion, and bounding box resources. It also has utilities for writing mesh data to STL, AMF, 3MF, XML and JSON structures. In this release we also added a variety of date and time functions for working with ISO 8601 timestamps.

The ROSE Core API contains the foundation classes for EXPRESS structures and the framework for grouping these objects as models in memory that you can read or write to files. This API is fast and solid, with over twenty five years of use and stress testing in commercial CAD applications with thousands of the most abusive files that our corporate customers could find.

The library reads and writes the latest 2017 Third Edition of the Part 21 file format. One new capability of this edition is an 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 */ 
<f4671b18-a842-491f-a9c3-0142e56ff848>=#776;  /* flatness_tolerance */ 
<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;

A new REFERENCE section can also define 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 ROSE Core API handles these new capabilities transparently.

Platforms and Compilers

The STEP Tools® Software is available for the operating systems and compiler combinations shown below. This release adds support for Visual Studio 2019, the new Apple M1 platform, and updates our Linux compiler support to GCC-7.

Platform Supported Compilers
Windows 10 32bit Visual Studio 2019 (VC++ 16), 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 64bit Visual Studio 2019 (VC++ 16), 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 11+, M1 64bit Clang (Xcode 12.0). Library versions for plain and position-independent static linking, and dynamic linking.
MacOS 10.9+, Intel 64bit and 32bit 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 64bit GCC-7+ and GCC 3.4/4.x and newer. Library versions for plain and position-independent static linking, and dynamic linking.
Linux 32bit GCC 3.4/4.x and newer. Library versions for plain and position-independent static linking, and dynamic linking.
Contact us to arrange other platforms or configurations. See the installation notes for Windows, MacOS, and UNIX for details on each platform, library versions, C++ compilers and build flags.

The Windows software stack includes new libraries and DLLs for Visual Studio 2019, as well as the previously supported Visual Studio 2017, 2015, 2013 and 2012.

The Apple M1 MacOS software stack libraries are built with the Xcode 12.0 version of Clang. The libraries have versions for plain and position-independent static linking, and dynamic linking.

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

The STEP Tools® libraries use several open source packages.