ST-Developer is a set of software tools to build tools, translators and databases for STEP Product Models, Industry Foundation Classes (IFC), Cimsteel (CIS/2), or other EXPRESS-defined models. 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 ROSE library is the ST-Developer C++ API for demanding CAD and data exchange applications. It works with C++ classes generated from EXPRESS schemas for fast access and strong compiler type checking, and provides advanced object search and traversal features such as USEDIN, access using classes or a data dictionary, and detailed control over STEP physical file handling.
ST-Developer also includes generated C++ classes for building ROSE applications with the STEP, IFC, and CIS/2 information models. There are also libraries that help with specific information models and protocols such as the STEP Faceter library, STIX AP Helper library, and the Part 28 library for reading and writing XML.
The ROSE library contains C++ classes that hold EXPRESS-defined data and support classes that help index the data, read or write it to storage, or provide other useful functions.
Instances of the STEP object classes hold EXPRESS-defined data in memory. These classes are generated by an EXPRESS compiler for each of the data structures in an EXPRESS schema. For example, given a Point entity definition in EXPRESS, the compiler generates a C++ class Point as a subtype of a ROSE base class to hold instances of point data. The next chapter describes the EXPRESS to C++ mapping in more detail. Applications can be written with or without generated C++ classes.
The ROSE Support Classes traverse, manipulate, 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 support functions into one place. Only one static instance exists, named ROSE.
The list below shows the hierarchy of classes documented in this manual. For example, the RoseList class is derived from the RoseAggregate and RoseObject classes.
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.
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 functions to set its values. */ RoseDesign * d; Point * point1 = pnewIn(d) 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 = pnewIn(d) Point (2.5, 4.0); Point * point3 = pnewIn(d) Point (5.0, 0.0);
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 the most current information on the STEP standard, recent projects, products, and demonstrations.