1.1 What is STEP and ST-Developer?
The Standard for the Exchange of Product Model Data (STEP) is a family of ISO international standards that describe how to represent and exchange digital product information. In 1983, STEP merged earlier national efforts such as IGES, VDAFS, and SET. The first parts of STEP were published in 1994, including the EXPRESS information modeling language and the first application protocol, AP203, for exchanging BREP mechanical CAD geometry. Additional parts followed to address new technolgies, like Part 28 XML exchange (ISO 10303-28), and engineering information such as machine-tool control with STEP-NC AP238 (ISO 10303-238).
ST-Developer is a set of software tools to build, operate and maintain your STEP, IFC, CIS/2 and EXPRESS-defined tools, translators and databases. It contains programming bindings for C++, C, and Java, plus tools for testing data sets against verification rules and constraints, browsing through the contents of your data sets, building information models, and more.
The STEP Standard
Digital product data must contain enough information to cover a product's entire life cycle, from design to analysis, manufacture, quality control testing, inspection and product support functions. In order to do this, STEP must cover geometry, topology, tolerances, relationships, attributes, assemblies, configuration and more.
To accomplish this ambitious goal, STEP is a multi-part ISO standard. Many parts are complete and published, while more are under development. These parts cover technology, such as testing procedures, file formats and APIs, as well as content, such as geometry, features, PDM, and other industry-specific information. The key aspect of STEP is extensibility. STEP is built on a formal language that describes the structure and correctness conditions of any engineering information that needs to be exchanged.
Industry experts use this language, called EXPRESS, to detail the information required to describe products of that industry. These "Application Protocols" form the bulk of the standard, and are the basis for STEP product data exchange. In addition, the EXPRESS language can document constraints as well as data structures. These formal constraints are an explicit correctness standard for the digital product data.
Figure 1.1 shows the structure of the STEP standard. Infrastructure parts, such as the exchange file format (Part 21), are separate from industry-specific application protocols, such as the drafting AP (Part 202, also called AP202). The industry-specific portion is open-ended. APs are available for mechanical design, drafting, analysis, process planning, CNC machining, shipbuilding, architecture and building construction, with more APs in development.
Some key reasons why STEP is important:
- STEP is a standard that can grow. It is based on a language (EXPRESS) and can be extended to any industry. A standard that grows will not be outdated as soon as it is published.
- The EXPRESS language describes constraints as well as data structure. Formal correctness rules will prevent conflicting interpretations. STEP SDKs use these descriptions to create more robust, maintainable systems.
- STEP is international, and was developed by users, not vendors. User-driven standards are results-oriented, while vendor-driven standards are technology-oriented. STEP has, and will continue to, survive changes in technology and can be used for long-term archiving of product data.
ST-Developer
ST-Developer ships with pre-built STEP AP Class Libraries, ROSE C++ and Java class libraries for many STEP APs and other models like CIS/2 and IFC. You can start programming immediately, just by linking against the appropriate library. The ST-Developer programming libraries are:
- ROSE C++ Library -- For demanding CAD and data exchange applications. C++ classes generated from EXPRESS schemas mean fast access, and strong compiler type checking helps to build reliable applications. The ROSE library provides many advanced object search and traversal features such as USEDIN, early and late-bound access, greater control over STEP physical file handling, and AP interoperability extensions. This manual covers the ROSE C++ library.
In addition, ST-Developer ships with several extension libraries for ROSE applications, such as the Part 28 library for reading and writing XML, the Part 21 filter library for working on very large STEP Part 21 files out of memory, and the ROSE Log Window library for status messages in GUI applications.
- SDAI C Library -- Build applications using a small set of straightforward C functions to manipulate STEP data. No application protocol-specific structures or classes are used. Refer to the SDAI C Library Reference Manual for more information on SDAI C applications.
- ST-Developer for Java Library -- Using the EXPRESS compiler, you can build applications using Java classes. Strong compiler type checking helps to build reliable applications. Refer to the ST-Developer Java Library Reference Manual for more information.
- STEP AP and other Schema Libraries -- ST-Developer ships with pre-built ROSE C++ and Java class libraries for many STEP APs and other information models like CIS/2 and IFC. You can start programming immediately, just by linking against the appropriate library.
ST-Developer also includes a set of related tools, to perform various tasks on STEP data and EXPRESS definitions. Refer to the ST-Developer Tools Reference Manual for more information on these tools.
- EXPRESS Compiler -- Produce C++ definitions from EXPRESS information models, then use these classes with the ROSE library to build application software or object-oriented databases.
- EXPRESS-G Tools -- Construct EXPRESS-G diagrams from any EXPRESS information model, such as those in STEP, display, rearrange, and print them using a graphical editor.
- STEP Conformance Testing Tools -- Check STEP data sets for adherence to the STEP Application Protocols using these tools. These systematically evaluate EXPRESS constraints and derived attributes to verify that a data set is correct.
- Source Management Tools -- Manage and extend C++ class files, create makefiles, and perform other software development tasks.
- IGES and AUTO-CAD DXF Converters -- Use these file format converters to convert data from systems that produce IGES or DXF files into STEP physical exchange files and vice-versa.
1.2 Manual Organization
This manual describes programming techniques and use of ROSE C++ classes and functions, with examples and cross-references to other relevant topics. The manual is divided into two parts:
- Part One: Application Programming with the ROSE Class Library -- Techniques used to build STEP applications. Topics include environment setup, generating C++ classes, compiling and linking, reading and writing data sets, traversing objects in memory, data dictionary information, error handling and more.
- Part Two: Class and Function Reference -- Documentation for every ROSE C++ class and function. Each chapter describes the member functions of a single class. Only public functions are listed. Functions meant for internal use and functions inherited from a superclass are not listed. The reader should refer to the superclass for inherited functions.
The ROSE C++ Class Library
The ROSE library uses a number of different C++ classes to create and manipulate EXPRESS-defined data. These classes can be divided into categories, as shown in Figure 1.2.
The STEP Object Classes represent EXPRESS data structures. Instances of these classes hold EXPRESS-defined data in memory. The EXPRESS compiler creates subclasses of these for each EXPRESS definition. For example, given a Point entity definition in EXPRESS, the compiler generates a C++ class Point , derived from a ROSE base class, to hold instances of point data. The Point class can be customized with extra functions if needed. Section 2.4 describes the EXPRESS to C++ mapping in more detail. Applications can be written with or without generated C++ classes.
The ROSE Support Classes are traverse, manipulating, and hold housekeeping information for STEP data objects. For example, RoseManager objects store extra information about STEP data objects. The RoseDesign class holds a collection of STEP objects for reading and writing to secondary storage.
The RoseInterface class collects functions provided by support classes into one place. Only one instance of this class exists. It is named ROSE and referred to as the ROSE interface object.
- /* ROSE Library Interface */
- RoseInterface
- /* STEP Data Objects */
- RoseObject
- RoseStructure
- RoseDictionary
- RoseDesign
- RoseDomain
- RoseAttribute
- RoseUnion
- RoseAggregate
- RoseList
- RoseBag
- RoseSet
- RoseArray
- RoseStructure
- /* ROSE Support Classes */
- RoseManager
- RoseCursor
- RoseDesignSection
- RoseErrorContext
- RoseErrorReporter
- RoseServer
- RoseType
Figure 1.3 shows the hierarchy of classes documented in this manual. For example, the RoseList class is derived from the RoseAggregate and RoseObject classes.
Font Conventions
Within the body of a paragraph, functions, keywords, and filenames are shown in bold, such as librose.a or /usr/local/bin . Function names are shown with trailing parenthesis, such as findDomain() or name() . When referring to a C++ member function in another class, the C++ scope notation is used, such as RoseDesign::save() or RoseObject::domain() .
Function prototypes are listed with each parameter on a separate line and the function name set off in bold as shown below. Optional parameters are listed in standard C++ notation showing the default value.
RoseAggregate * findObjects( RoseAggregate * list_to_fill, RoseDesign* design = <Current> );
Occasionally, functions must be described in a parameterized manner, with angle brackets indicating the parameterized portion of the function definition. For example, the following prototype is used for the RoseObject getInteger() , getString() , getObject() , etc. functions:
<type_ref> get<name>( RoseAttribute * att );
Finally, programming examples are shown in a separate paragraph, in a typewriter-style font:
/* Create a point using the default constructor
* and use the update methods to set its values.
*/
Point * point1 = pnew Point;
point1->x (1.0);
point1->y (0.0);
/* Create points using a different constructor,
* that fills in the values in one step. */
Point * point2 = pnew Point (2.5, 4.0);
Point * point3 = pnew Point (5.0, 0.0);
References
The following publications may be of interest to readers looking for additional information on the C++ language, the STEP standard, or the EXPRESS information modeling language:
The C++ Language
- S. Dewhurst and K. Stark, Programming in C++ , Prentice Hall, 1989.
- M. Ellis and B. Stroustrup, The Annotated C++ Reference Manual , Addison-Wesley, 1990.
- S. Lippman, A C++ Primer , Addison-Wesley, 1989.
- B. Stroustrup, The C++ Programming Language , Addison-Wesley, 1986.
STEP and EXPRESS
- J. Owen, STEP: An Introduction , Information Geometers (47 Stockers Avenue, Winchester SO22 5LB, United Kingdom), 1993.
- D. Schenck and P. Wilson, Information Modeling the EXPRESS Way , Oxford University Press, New York, 1994.
In addition, readers may want to consult the STEP Tools web site for up-to-date information on the STEP standard, current projects, products, demonstrations, etc:
http://www.steptools.com/