The NIST STEP Class Library (SCL) is a set of C++ class libraries which are capable of representing information conforming to the EXPRESS (ISO 10303-11) data specification. The libraries may be used to build executable C++ applications which make use of information contained in an EXPRESS file. They contain such features as a dictionary of EXPRESS schema information and functionality for representing and manipulating instances of EXPRESS objects. Simple applications, such as ones which read and write EXPRESS data in the form of STEP Part 21 files, can be easily written and are included in the SCL release.
SCL was developed with several purposes in mind. Most notably it has been useful for validating emerging concepts for STEP implementation methods and for developing software for STEP-based applications. Developers of SCL have iterated through the following activities: STEP standards development, development of SCL based on STEP standards, and feedback into the standard as a result of implementation experience. Particular attention has been devoted to implementing STEP Parts:
- 21: Implementation Methods - Clear Text Encoding (ISO 10303-21),
- 22: The Standard Data Access Interface (SDAI) (ISO 10303-22),
- 23: The SDAI C++ language binding (ISO 10303-23), and
- 26: The SDAI IDL language binding (ISO 10303-26) WD.
Although NIST stopped working on the SCL after releasing version 3.2 in the late 1990s and today no longer provides any SCL support, the SCL source code continues to be used third party software such as BRL-CAD.
Current SCL development is taking place under an open source project initiated in 2011.
STEP Class Library Components
- data access interface library - library of C++ classes providing a partial implementation of the SDAI Session Schema.
- Data Probe - a graphical application of the SCL which allows a user to visually browse the information contained in an EXPRESS schema and to create and edit instances of entities defined in
the schema. It also allows input and output of files based on the EXPRESS file which conform to the STEP Part 21 (ISO 10303-21) encoding method. The Data Probe is distributed with the SCL. It uses the InterViews Toolkit, an X Windows-based user interface toolkit from Stanford University.
- editor library - library of C++ classes implementing the functionality associated with an editor for instances of entities defined in EXPRESS.
- exppp - pretty printer for formatting EXPRESS. Based on the NIST EXPRESS Pretty Printer Toolkit
- fedex - syntax and semantic checker for EXPRESS. Based on the NIST EXPRESS Toolkit.
- fedex_plus - parses an EXPRESS file and generates a C++ class library representation based on the STEP Data Access Interface (SDAI) C++ language binding (ISO 10303-23). Using the -c option fedex_plus outputs TIE implementation objects for building an Orbix (see Disclaimer) CORBA server based on the SDAI IDL language binding (ISO 10303-26).
- fedex_idl - translates EXPRESS into idl based on the STEP Data Access Interface IDL language binding (ISO-10303-26).
- fedex_os - parses an EXPRESS file and generates C++ necessary for adding persistence to the classes output from fedex_plus. Persistence is implemented using ObjectStore OODBMS (see Disclaimer).
- mkProbe - takes an EXPRESS file and generates a Data Probe editor/schema browser. The Data Probe is a graphical tool which allows a user to visually browse the information contained in an EXPRESS schema and to create and edit instances of entities defined in the schema. It also allows input and output of files based on the EXPRESS file which conform to the STEP Part 21 (ISO 10303-21) encoding method.
- NIST EXPRESS Pretty Printer Toolkit - the NIST EXPRESS Pretty Printer Toolkit, built on the EXPRESS Toolkit, reads an EXPRESS file and writes it out in a well-formatted style. Distributed with
- NIST EXPRESS Toolkit - the NIST EXPRESS Toolkit parses an EXPRESS file and represents it internally as C structures. Serves as a basis for the fedex tools above. Distributed with the SCL.
- probe-ui library - library of C++ classes providing InterViews user interface objects for implementing an editor of EXPRESS instances.
- shtolo - Back in the early 1990s, Don Libes at NIST developed Shtolo, a tool for creating a self-contained "long form" EXPRESS schema from a "short form" schema with interface specifications.Shtolo is not included as part of the SCL, but those interested in building it from source can do so by compiling this C file and linking the resulting object file with the SCL's libexpress.a and libexppp.a libraries.
- STEP core library - library of C++ classes providing STEP related functionality including early and late-bound attribute access, reading and writing of STEP Part 21 files, classes implementing EXPRESS base types, etc.
- utils library - library of C++ classes providing generic C++ functionality. ivfasd library - library of C++ classes providing general-purpose InterViews user interface objects.
Recent SCL downloads are available from the STEPcode website.
Old NIST releases dating from the 1990s:
- The STEP Class Library version 3.2 compressed tar file.
- The STEP Class Library version 3.1 compressed tar file.
- The STEP Class Library version 2.1 compressed tar file.