Book Contents | Book Index | Master Index | Previous Chapter | Next Chapter
Search STEP Tools Web Support

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.

STEP Standard

Some key reasons why STEP is important:


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:

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.

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.


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:


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.

ROSE Classes

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.

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

STEP and EXPRESS

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/

 

| Book Contents | Book Index | Master Index | ST-Developer Home | Previous Chapter | Next Chapter |