This describes an older ST-Developer release (2001). You can find the details for the latest release here

What's new in ST-Developer v9

ST-Developer Version 9 is the tenth major release of the ST-Developer suite of STEP and EXPRESS programming tools from STEP Tools, Inc. It includes a number of exciting enhancements, extensions and new tools. These enhancements should make it faster and easier than ever before to read, manipulate, validate, and share STEP data. This release supports internationalization for Part 21 data. An optional add-on product, ST-XML enables you to access CEB, OSEB, and EXPRESS-X technology.

The version 9 release includes a new EXPRESS to HTML converter. This tool generates a frames-based set of HTML pages. The tool makes it easy to browse and navigate an information model. It preserves comments and spacing in the EXPRESS information model and creates a cross reference report for each entity in the schema.

As in previous releases, the Windows version of ST-Developer is bundled with the latest version of our ST-Viewer product. The new version of ST-Viewer includes a dimensioning tool which can measure distances and angles in a part. The viewer can now display data from AP-227 and AP-210 models.

The Windows Part 21 file browser has been extended to provide more information. It displays the name of the attributes in the STEP File, making it much easier to match the Part 21 file with the information model.

The EXPRESS to C++ compiler can now implement inverse attributes. When the new "-inverse" option is used, the compiler generates a method which computes and returns the value for the attribute for each inverse attribute in the information model.

The command line rose file utility has a new option "rose paths" which displays the run-time configuration of the ST-Developer environment. This can be used to diagnose where the system is looking to find schemas and other data files. This is especially useful on Windows systems where the search path is specified in a combination of the environment and the registry.

The ROSE library features several enhancements. We have reorganized some of the run-time type information so that applications use less memory. In addition, we have added some functions to clean up memory at the end of your application, so you could cleanly unload a DLL if you want. The Part 21 Filer has been enhanced to support the newly released Second Edition of the Part 21 specification, and to support reading and writing of 16-bit Unicode characters in strings. The Second Edition of Part 21 support allows multiple data sections, where each section can have a separate schema.

The SDAI library includes a few new extensions. There is a low-level interface which provides a more seamless interface between routines written against the SDAI interface and those written to the ROSE C++ API. There are also new extensions to the library to allow application to manipulate models with multiple schemas.

This version supports several new compiler configurations. We now support HP-UX version 11, and the Sun Forte C++ compiler versions 5 and 6. We have discontinued support for DEC Unix on the Alpha platform.

ST-Developer v9 Supported Platforms

Architecture Operating System Supported C++ Compilers
HP PA-RISC HP-UX v11.0 HP Cfront C++ with and w/o +eh,
IBM PowerPC AIX 4.x IBM CSet/xlC
Intel x86 Linux 2.2
(RedHat 6.2)
Intel x86 Windows NT v4.0 Windows 95/98 Visual C++ v6.0 with /ST, /MT, and /MD options
Silicon Graphics IRIX v6.x SGI C++ default and -n32
Sun SPARC Solaris v7 Sun C++ v4.2, Sun Forte C++ 5.0 and 6.0 (with and w/o -PIC -mt), GCC 2.95

EXPRESS to HTML Converter

The EXPRESS to HTML converter (express2html) has been rewritten to provide more useful output. This tool's output can be used to browse EXPRESS information models. It can be used by developers who need to understand the EXPRESS information models, information modelers, or someone who is examining a Part 21 exchange file. This is not just a pretty-printer, but rather generates a report for each entity in the information model giving a more complete picture of the inheritance and attributes than is available explicitly in the EXPRESS information models.


The express2html tool now preserves comments and formatting in the EXPRESS information models. The tool writes each definition onto its own HTML page, and generates cross reference information for each entity. It generates an easy to navigate set of HTML frames, which allows you to easily browse any EXPRESS information model. For each entity, the generated HTML includes a report describing all the attributes (both local and inherited), inheritance information, and the other types and entities in the information model that reference the entity.

ST-Viewer Enhancements

ST-Viewer now supports basic dimensioning. This means that the tool can be used to display the length of various items in the model as well as angle measures. For example, a straight edge might be 27 inches long, or the distance between the endpoints of a semi-circle might be 32 millimeters. Angle magnitudes for revolved_area_solids are also shown. These entities are found in, for example, AP-227.

Dimensions in ST-Viewer

In addition, ST-Viewer provides preliminary support for viewing of AP-227 and AP-210 STEP data. While most such data will display correctly, some AP-227 and AP-210 files may not. If you encounter any file which cannot be properly displayed, please provide the file to us for analysis. We would also like to receive feedback in terms of what enhancements can be made in the display of these data.

ST-Viewer now analyzes input data before proceeding with visualization so that problems can be detected, and software switches can be set appropriately. This data analyzer looks for difficult geometry, burdensome file sizes, unsupported APs, and whether or not configuration data is available. If it detects what it believes will cause problems, it pops up suggested settings and queries the user whether to accept or cancel the suggested settings. You may also override these automatic suggestions individually by toggling the various check boxes on or off.

Data Analyser

Using the Dimensioning features

To go into dimensioning mode, just click on the dimensioning icon. Click on the icon again to go back into normal viewing mode.

View Mode Icons

Once in dimensioning mode (which is the wireframe/edge-selection mode), click on edges in the picture, and the dimensions for that edge will be displayed. Where the edge represents a revolved_area_solid, an angle magnitude will be displayed.

By clicking a different edge, the dimension for this new edge is displayed and the first one is turned off. Or, by clicking another edge while holding the shift key down, the dimension of the new edge is displayed in addition to previous ones.

Click on the dimensioning icon again to return to the normal viewing mode.

Viewer Technical Notes

For dimensioning to work, wireframe data must be generated by the viewer. Therefore, the default setting for the viewer has changed from producing solid data only to producing solid and wireframe data. The wireframe data tends to be large, so if you are not going to be using the dimensioning capabilities, set the viewer back to "solid" under the File->Preferences menu. To make this the new default, check the "Use Always" box under File->Preferences->More, and restart ST-Viewer.

Part 21 Browser

STEP File Browser now provides EXPRESS type information for the entities in Part 21 files. To take advantage of this feature you must have the compiled EXPRESS schema of the file opened in the browser in your ROSE_DB search path. To access EXPRESS type information, click an entity ID in the browser and then choose Attributes from the shortcut menu. The browser will display the Entity Attributes dialog box.

Entity Attributes Dialog

This dialog box provides detailed list of all EXPRESS attributes of the selected entity. For each entity attribute it displays name, type, and value. The type is either an entity type or EXPRESS primitive type - defined types are displayed as their corresponding primitive types.

The browser also displays the XML data formatted as a tree of nodes that can be collapsed or expanded as necessary. To use this feature you must have Microsoft Internet Explorer 5.0 or higher installed.

XML Browsing

Inverse Attributes

The EXPRESS to C++ compiler can now generate methods in the C++ classes which implement inverse attribute value calculation as defined in the EXPRESS information model. Use the option -inverse and for every inverse attribute in an EXPRESS model, the compiler creates a method in the corresponding C++ class which computes and returns the inverse value for the attribute:

    express2c++ -inverse ...
    express2cxx -inverse ...
    expfront -classes -inverse ...

Rose File Utility

The rose file utility has a new command which displays the run-time search path used to locate schema files. This is invoked with the command rose paths, and produces output similar to the following

    Search Path:         .;.\schemas
    System Schema Path:  C:\steptools_9.0\system_db\schemas
    Registry Key:        SOFTWARE\STEP Tools, Inc.\ST-Developer\9.0
    Complete search path [ROSE.path()]:

Part 21 Second Edition

The original Part 21 specification was issued in 1994, and shortly thereafter a technical corrigendum was published to correct some errors in the way that selects were handled. This technical corrigendum or TC version is what is in common use today.

A second edition of the Part 21 specification is in the final stages of preparation and will soon be published as an international standard. The second edition is upwards compatible, so your existing Part 21 files will remain valid. Under the new edition, files may contain additional context information in the header, and may contain more than one data section.

We have updated ST-Developer so that it supports the features of the new edition, so that when you want to start using them, they will already be there.

For compatibility with older applications, the ROSE library will continue to write out files using the TC specification unless the data set uses second edition features such as the following:

Improved Memory Management

We have reorganized some of the run-time type information so that applications use less memory. In addition, we have added some functions to clean up memory at the end of your application, so you could cleanly unload a DLL if you want. RoseInterface has two new methods for releasing system memory:

    ROSE.shutdown_everything();  /* permanent */

When your application begins, the ROSE library creates system dictionaries and other information necessary to keep the correspondence between EXPRESS and C++ classes. Some of the information is set up when static constructors are called and other parts are initialized on first access to some STEP data. It also reads in compiled schema files and other data-dictionary information.

This information is used by most operations, and it is needed throughout the life of the application. Since it must always be present, previous library versions did not provide any way to unload it. In a normal application, cleaning up all this information is unneeded, since memory is released on application exit.

However, checkers such as Purify would report this information as "memory leaks" so we have added these cleanup functions:

The shutdown() function releases all of the persistent data in memory, including compiled schemas, and restores the ROSE library to a pre-boot condition. If you want to, you can read designs back into memory again and continue processing.

The shutdown_everything() function releases all of the persistent data in memory, but it also releases all of the runtime C++ type information. Once this is done, there is no way to restart and you should not make any more calls to the ROSE library.


This release of ST-Developer supports reading and writing wide characters stored in strings of Part 21 files. This feature is especially helpful for applications that need to display Asian characters. Part 21 provides escapes that allow for 16-bit Unicode characters to be specified in strings. Starting with version 9, the ROSE library includes features to read and decode such strings in Part 21 files. We have implemented this feature to have minimal impact on the existing code base of ST-Developer applications.

The internationalization support consists of two parts: a raw mode for the Part 21 filer, plus a library of utility functions for converting between the Part 21 and Unicode representations of the strings.

To start handling international characters, an application must call rose_enable_wchar(ROSE_TRUE) to turn the raw mode on. When a Part 21 file is read, the ROSE library will leave16 bit characters in their encoded form. (All 8-bit characters are decoded as normal.) This behavior allows the data to be stored in strings of 8 bit characters without losing any information. Normally, wide characters are ignored by the reader, and effectively deleted from the data. The Part 21 writer also operates differently in raw mode and insures that it does not escape the escape code, thus preserving the wide characters.

The second part of the Unicode support consists of a library of functions that convert between the Part 21 8-bit representation of the strings, and the 16-bit Unicode strings. To convert the string to and from Unicode, ST-Developer includes the following two functions:

    wchar_t * rose_cvt_p21_to_wchar (const char *);   
    char * rose_cvt_wchar_to_p21 (const wchar_t * str);  

These functions convert between the 8-bit Part 21 representation and 16-bit Unicode characters.

SDAI Updates

In ST-Developer Version 9, the SDAI interface incorporates several changes. In general, these changes add functionality and fix bugs. Code which works against the version 8 interface will continue to function without any source code changes. The additional functionality is in the form of a low-level interface which provides a cleaner interface with the ROSE library. With this release, the SDAI library conforms to the IS version of ISO 10303-24.

If you decide to recompile your existing code to take advantage of the new features in the SDAI library, you should recompile the entire project to avoid unpleasant surprises at link or run time.

Low-Level Interface

For many applications, the higher-level, application management portion of the SDAI only adds complexity to the application without adding any real value. For this reason, the Version 9 release of the SDAI library provides a low-level interface in which you avoid the sdaiOpenSession()/sdaiOpenRepository()/sdaiAccessModel() calls, and instead use the ROSE library to open a design, then access and manipulate the data with the SDAI.

This new functionality enables SDAI applications to access and manipulate Part 21 files with multiple data sections, as well as making it easier to write utility functions and hybrid applications which combine the ROSE and SDAI interfaces provided by ST-Developer.

Other changes

The library now has a several convenience functions that efficiently perform queries against the data dictionary. These functions provide a convenient and fast method to get the full set of attributes (local and inherited), determine all the super and subtypes of an entity in a schema, and to get all the uniqueness rules that apply to an entity. These functions are the following:

    _sdaiGetAllAttrDefinitions ()

This library now has the _sdaiSaveAs() function. This function allows you to save a model as a different name without renaming the model.

A bug that causes the application to crash if it open, closes and reopens a session has been corrected.

A bug caused the library to crash with null-pointer access when reading the EXPRESS parse data for a schema that has a defined type whose underlying type is an aggregate has been corrected.