Overview

The eighteenth version of the STEP Tools® software is core technology for STEP CAD applications, particularly with the Second Edition of AP242, BIM applications that use IFC and CIS/2, and Digital Thread Manufacturing applications built around STEP-NC, MTConnect, and QIF.

Customers increasingly demand standardized interfaces for their CAD, CAM and BIM systems. Adding a STEP, BIM or STEP-NC interface to your system increases your value by allowing your customers to read and write the data of their supply chains. ST-Developer is the most mature and widely used product for building these interfaces. Our libraries have been tested in multiple CAD, CAM and BIM systems and our knowledge of the requirements of the standards is unmatched across the industry.

All users receive a common core of libraries, and we provide you with a selection of additional libraries and tools targeted at your particular application. Whatever your goal, we provide the tools that you can rely on to reach it.

AP242 Tolerance Model

STEP applications support the latest AP242, updated with the Second Edition DIS ballot definitions. This includes the latest tolerance and PMI definitions, additive manufacturing setup, tessellated models, and 3D point cloud definitions. The STEP Explorer views the new semantic tolerances while new APIs create and read them.

IFC BIM applications now support the latest IFC4x1, updated with several dozen new definitions for infrastructure alignment, along with improved automatic migration support for previous IFC versions, IFC meshing, and IFC-specific checking and browsing.

Digital Thread applications now support the latest second edition STEP-NC AP238 drafts, along with all of the STEP AP242 tolerances. The advanced simulator, high-level .NET and Javascript APIs, and client-server interfaces are bringing Digital Manufacturing into production. Build machining programs, add tolerances, import models for workpieces, tools, and fixtures. Simplify interfacing with existing machine tools, while the material removal simulator calculates the result of machining as solid models.

The STEP Tools® Software Development Stack

Across all application areas, the core libraries continue to accumulate refinements for faster read and write of files, the latest Part 21 Edition with new anchors and URL references, better handling of many files in memory, better matching from EXPRESS types to C++, and smaller applications with increased performance. This includes the security and stability of almost thirty years of testing.

The STEP Tools® software stack runs on Windows, Linux, and Mac platforms, with others available upon request. The C++ libraries are built for all of the latest compilers, including Visual Studio 2015 and 2017, and the Xcode 8.0 environment.

STEP CAD Applications

STEP Stack

With our stack of libraries and tools for STEP, you can build a STEP importer or exporter for your product, read and write any STEP model using C++ classes for all of the latest definitions in AP242, AP203, and AP214, create meshes for visualization or analysis, build or navigate assemblies, create or analyze tolerances and PMI, and build or use STEP CAD geometry for any other purpose. We also provide the STEP Explorer to view geometry, assemblies, and semantic tolerances. STEP checking and browsing tools warn about potential problems in files and help you find and correct them.

Some of the STEP components we provide:

Faceting and Viewing an Automotive Assembly

Applications use the faceter library to convert STEP models with 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. You can also use the built-in routines to save meshes as AP242 tesselated models, JSON, XML, or STL.

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. These functions now use the AP242 Second Edition DIS in this release!

The STEP AIM Helper API takes the complexity out of dealing with STEP assemblies. It will recognize the assembly structures and provide quick access to the associated geometry and transforms. It also simplifies making or recognizing properties, basic tolerance structures, units, measures, and contexts.

STEP Stack

At the heart of all STEP applications is the STEP AIM EXPRESS API, with new support for the AP242 Second Edition DIS. This C++ library has classes for all definitions in AP242, AP238, AP214, and AP203. Classes make it easier to program with IDE tool tips and prevent type mismatches. You can read files from any AP and switch between APs when writing. The library automatically handles deprecated entities and is simple to package into applications.

To help you get started quickly, the stack contains source code for several STEP sample projects. The Facet Assembly and Make STL projects create meshes for all component geometry in an assembly and transforms the results into the proper position in space. The Plate and Geometry projects create STEP Brep geometry form boxes or polygonal plates with cutouts and attaches the STEP product structure with version and part information. The Assembly and Walk Assembly projects show you how to build a the product and geometry links of a STEP assembly and how to traverse and interpret them.

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.

Our STEP Viewing tools show the geometry, assemblies, and tolerances as 3D display, so you can see the contents as intended. This release has added support for the latest tolerances defined by AP242 Second Edition DIS and also improved performace for files with very large assemblies containing thousands of elements!

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 stack of libraries and tools for IFC BIM, 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 assemblies, and build or use IFC geometry for any other purpose. We also provide the IFC viewer to examine geometry and spatial structure. IFC 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 Spatial Structure

Applications use the faceter library to convert IFC spatial structures into triangular meshes for viewing or analysis. The mesh has full associativity back to the original geometry, so you can associate data or select faces in a viewer. You can also use the built-in routines to save meshes as JSON, XML, or STL.

IFC Check

At the heart of all IFC applications is the IFC BIM EXPRESS API, with new support for the IFC 4x1 definitions! This C++ library has classes for all definitions in IFC4x1, IFC4, and IFC2x3. Classes make it easier to program with IDE tool tips and prevent type mismatches. You can read files from any version and switch between versions when writing. The library automatically handles deprecated entities and is simple to package into applications.

To help you get started quickly, the stack contains source code for several IFC sample projects. The Geometry project creates an IFC building with a simple block shape, GUIDs, owner history, units, and basic spatial structure. The Hello Wall project creates a standard wall and attaches property sets and quantities to it. The Print Spatial project recursively prints an IFC assembly — the spatial structure beginning with the IfcProject root. The Print Wall Props project finds and prints 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:
Web Client showing Live Machining 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 Faceters. 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 XML and JSON structures.

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. 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)

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.

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.