Service Pack One updates Version 18 of the STEP Tools development stack to include the latest STEP AP242e2 and AP238e2 support, IFC 4x2 updates, as well as improvements to the underlying libraries.

STEP Improvements

The STEP AIM EXPRESS library has been updated with the latest definitions from AP242e2 and AP238e2 DIS ballots as well as improved matching for complex instance cases seen in practice. The detailed changes for the library are described below.

The STEP Meshing library now supports offset surfaces, negative slope on cones, and better handles open loops and singularities in UV space. There are many API improvements for fine grain control of the faceting and access to the surface, uv trim polygon and solver. The mesh library also has code for writing STEP assemblies in the Additive manufacturing file format (AMF) and the 3D Manufacturing Format (3MF). Additional AMF/3MF support has been built into the ROSE Math library.

STEP Schema Updates

The STEP AIM EXPRESS library now uses the SMRLv8 definitions that AP242e2 and AP238e2 were built against. The header now has #define for the symbol STPLIB_SCHEMA_HAS_SMRL_V8 to enable conditional code for changed definitions, since changes seem to be rolling out on a SMRL version basis rather than by AP edition.

The STEP AIM EXPRESS library now has complex instance classes of draughting_model, characterized representation, and tessellated shape representation for better handling of tesselated PMI with attached validation. A complex instance of draughting model and characterized representation is used for attaching PMI validation properties (see PMI recpract 10.2). When using tesselated PMI, the complex instance must also include tesselated shape representation. The best-fit matching was handling all combinations, but the only C++ class previously available did not include shape representation. Now, this combination can be safely cast to a shape representation.

Some SMRLv8 definition changes that might affect C++ code are:

The Added the following entities to support AP238e2

Updated the following Part 113 hole feature definitions to match the SMRLv8 version used by the second DIS and AP238e2.

Support for Part 21 entity shortnames has been updated for the latest AP242e2 DIS and AP238e2 DIS ballot schema definitions.

We also developed header file stplib_oldname.h that contains transitional macros that ease the shift from old EXPRESS classes that do not have a "stp_" prefix to the current usage in the STEP AIM EXPRESS library. Contact us if you would like to use this while updating old code.

Unit Discussion

We have also added classes for complex instances of derived_unit and the named_unit subtypes SI and conversion_based unit. This gives more consistent behavior when data uses some new "mix-in" derived unit subtypes. We do not recommended using the new subtypes for reasons discussed below, but we have seen some data in the field with them.

The "mix-in" unit types below were recently added to mark a value as a particular type, not to hold actual data. Unfortunately, these are defined as defined_unit subtypes, but need to work with values defined as SI units, or conversions based on an SI unit, which are both named_unit subtypes.

For example, consider force units Newtons and Pound-force as documented in the fundamental concepts clause ( of AP238e1 published in 2007 and remains the recommended usage for AP238e2. These are based on the SI unit enumeration "NEWTON" and appear as below in a P21 file.

/* Newton */

/* Pound Force */

Unfortunately, creating an instance with the new force_unit subtype of defined_unit requires adding a list of elements to construct a unit it from base quantities. This is redundant, because the unit is already defined by an SI unit enumeration.

The example below was seen in a file from a recent AP242 translator and contains duplicate definitions, one as a "NEWTON" enumeration and one as a chain of derived elements to build "Kilogram Meter per Second squared." The second example of Pound force isn't even correct because it just reuses the "Kilogram Meter per Second squared" elements rather than build proper "Foot Pound per Second squared" elements.

/* Newton */

/* Pound Force */

The irony is that the 1994 first edition of P41 made the same mistake in the other direction, with area_unit and volume_unit. The lesson was discovered as soon as someone tried to make data and those definitions were marked as deprecated and unusable for several editions. A recent edition changed the supertype for those two, but added the new broken definitions listed above. We recommend that the new definitions be similarly ignored until corrected.

IFC Improvements

The IFC BIM EXPRESS library has been updated with the latest definitions from IFC 4x2 with new bridge design entities and modifications to the grid and linear placement entities. Among the new entities are the following:

The class hierarchy of some entities have been changed, with intermediate supertypes inserted for categorization. The new types do not have any attributes. The IfcFacility type was inserted between IfcBuilding and IfcSpatialStructure. The IfcDeepFoundation type was inserted between IfcPile and IfcBuildingElement. Similar insertions were done for IfcFacilityPart and IfcPileType.

The definition for IfcObjectPlacement has changed, moving the "PlacementRelTo" attribute from IfcLocalPlacement up to the supertype. This insertion affects the IfcGridPlacement and IfcLinearPlacement definitions in a way that causes noticable Part 21 file differences. Instances in a file have the new attribute inserted into the middle of the list rather than at the end where it might be easily ignored by unsuspecting implementations.

The IFCBIM library will read and write IfcGridPlacement and IfcLinearPlacement with the new field in the correct place if the schema type is declared as 4x2 and will omit it for earlier versions. The IfcLinearPlacement curve attribute previously called "PlacementRelTo" has been renamed to "PlacementMeasuredAlong".

The IfclibSchemaType values are now sorted into ascending version release date. The ifclib_schema_other value is above the newest recognized IFC version. The type now looks like the following.

enum IfclibSchemaType {
    ifclib_schema_none,		// new file, no schema set
    ifclib_schema_ifc2x2,	// IFC2x2
    ifclib_schema_ifc2x3,	// IFC2x3
    ifclib_schema_ifc4,		// IFC4 
    ifclib_schema_ifc4x1,	// IFC4x1 
    ifclib_schema_ifc4x2,	// IFC4x2
    ifclib_schema_other		// Unrecognized schema name

IFC4 tightened the type of the IfcRelConnectsPortToElement RelatedElement attribute from IfcElement to the more specific IfcDistributionElement subtype. In this release, we have relaxed the type back to IfcElement. We have seen data sets from systems using BuildingProxy elements, which are not the subtype, and this change allows the library to handle that.

Core Library Improvements

The version of EXPAT XML parser embedded in the ROSE library has been updated to the latest version (2.2.9).

The ROSE Math library now contains function to export meshes in the AMF format and the 3MF format.

Platforms and Compilers

Service Pack One of the STEP Tools Development Stack is available for the operating systems and compiler combinations shown below. Contact us to arrange other configurations. Each platform has library versions for use with specific C++ compilers and build flags. See the installation notes for Windows, MacOS, and UNIX for details on each.

In Service Pack One, we have retired support for Sun Studio v11 and have shifted the supported compiler to Sun Studio v12.

Platform Supported Compilers
Windows 10/8/7 32bit Visual Studio 2017 (VC++ 15), Visual Studio 2015 (VC++ 14), Visual Studio 2013 (VC++ 12), Visual Studio 2012 (VC++ 11), with the /MD option. Library versions for static and DLL linking.
Windows 10/8/7 64bit Visual Studio 2017 (VC++ 15), Visual Studio 2015 (VC++ 14), Visual Studio 2013 (VC++ 12), Visual Studio 2012 (VC++ 11), with the /MD option. Library versions for static and DLL linking.
MacOS 10.12 (Sierra) to 10.9 (Mavericks) Clang (Xcode 8.0) with libraries built for Mach-O universal binaries. Library versions for plain and position-independent static linking, and dynamic linking.
Linux 32bit
All recent distros, RHEL 5, SuSE 10-11, and anything with glibc 2.5+ .
GCC 3.4/4.x. Library versions for plain and position-independent static linking, and dynamic linking.
Linux 64bit
All recent distros, RHEL 5, SuSE 10-11, and anything with glibc 2.5+ .
GCC 3.4/4.x. Library versions for plain and position-independent static linking, and dynamic linking.
Solaris v10+, SPARC Sun Studio v12 64bit. Library versions for plain and position-independent static linking (-PIC -mt)

Versions and Installers

Service Pack One was released on 2019-10-28, and the installers and versions for the Core, STEP, IFC, and other packages are listed below.

Package		Version		Installer
-------		-------		---------
Core SDK	v18.1		stdev_core_18_1_*
STEP Stack	v18.1		stdev_stpstack_18_1_
IFC Stack	v18.1		stdev_ifcstack_18_1_

IGES Library	v18.2		igeslib_18_2_*
CIS/2 Library	v18.1		cislib_18_1_*
STP_ed1 Stack	v18.1		stdev_stp_e1stack_18_1_*