Except for bug fixes, there have been no changes to the SDAI library API functions past the ST-Developer v9 release.
In ST-Developer v9, the SDAI interface incorporates several changes. In general, these changes add functionality and fix bugs. Code which works against the v8 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.
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.
Part 24 has recently been published as an International Standard by ISO. The SDAI library conforms to this specification. You will not need to change your code to conform this specification.
The IS standard specifies that the non-persistent lists created by retrieving the value of INTERSE attributes are now only guaranteed until the next call that retrieves an inverse attribute. This means that applications no longer need to call sdaiDeleteNPL() to release the NPL. This automatic deletion has not yet been implemented in the ST-Developer version 9 release, so you should continue to manually delete the NPL, or else your application will experience a memory leak. We do plan to implement this feature in a future release.
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 to ROSE library to access a design, then directly manipulate the data.
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. For more information, see Low-Level Model API.
This release of the SDAI adds support for multiple schemas. It is now possible to manipulate Part 21 exchange files without resorting to the ROSE interface. See Multiple Schemas for more information.
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 in entity. These functions are _sdaiGetAllAttrDefinitions (), _sdaiGetDerivedAttrDefinitions(), _sdaiGetExplcitAttrDefinitions(), _sdaiGetInverseAttrDefinitions(), _sdaiGetSubtypes(); _sdaiGetSupertypes(), and _sdaiGetUniquenessDefinitions().
This library now has a new _sdaiSaveAs() function. See _sdaiSaveAs() for more information.
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.
ST-Developer Version 8 includes a number of improvements in the SDAI C binding. In addition to a few bug fixes, the SDAI library now provides a more convenient interface for manipulating SELECT types, and a few extension functions for handling Part 21 headers and entity ID's.
The sdaiPutAttr() and sdaiPutAttrBN() functions are now more forgiving when operating on SELECT typed attributes. In previous releases, you needed to specify a path through the tree of selects which specified every defined type that was involved. In the new version, these rules have been significantly relaxed. If the value you are setting is an ENTITY type, you do not need to indicate a type path at all, rather the system will find and utilize an appropriate path. In the case of primitives, you still need to provide a type path, but you only need to specify enough of the type path to identify the attribute.
See SELECTS form more information.
When you create a new SDAI model with sdaiCreateModel(), the model will be written out as a STEP Part 21 file by default. In previous versions, the file was written out as a rose file. If you want to write a file in binary format, call
This change only effect newly created files; any model that was read in from a file is written out in the same format that is was read in. This change only effects the SDAI, and not the ROSE library.
The SDAI library now contains a few conveniences functions the access and manipulate the STEP Part 21 information. The _sdaiGetEntityId() function returns the STEP Entity ID (e.g. line number) from a step file.
int id = _sdaiGetEntityId (inst);
In addition, the SDAI now contains the _sdaiHeaderDescription() and _sdaiHeaderName() functions to manipulate the Part 21 header information.
In the v7 version of the SDAI library, a number of aggregate manipulation functions (such as sdaiAdd()) did not correctly operate, and instead indicated an errors for what should be legal operations. This bug has been corrected.
A bug in the v7 version of the SDAI library where sdaiTestAggrByIndex() and released functions always returned true has been fixed.
Past versions of the SDAI library generated names of entity_definition instances for complex types incorrectly. The new version now correctly generates the names as defined in Part 22, with the supertypes (sorted alphabetically) separated by the `+' character.
In addition, we have improved the speed of the sdaiGetAttr() function.
We have cleaned up the namespace so that the SDIA library exports no functions except those that begin with sdai or _sdai. You may still notice some namespace pollution, but there is now nothing beyond what the ROSE library provides.