Overview
Service Pack One updates Version 18 of the STEP Tools® software 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:
- Rename annotation_placeholder_occurrence 'character_height' attribute to 'line_spacing'.
- Rename the action_item type to action_items.
- Change applied_usage_right to subtype of action_assignment with its own items rather than subtype of the applied_action_assignment.
- Change data_environment 'elements' attribute to use the characterized product definition select type.
- Change geometric_tolerance_with_defined_area_unit 'second_unit_size' attribute to use the length_or_plane_angle_measure_with_unit_select.
- Change geometric_tolerance_with_defined_unit 'unit_size' attribute to use the length_or_plane_angle_measure_with_unit_select.
- Change interpolated_configuration_sequence to be a subtype of geometric rep item rather than plain rep item.
- Change multi_level_reference_designator so that it no longer redeclares as derived the inherited relating and related product def attributes.
The Added the following entities to support AP238e2
- additive_type_operation
- extended_type_operation
- expression_item_representation_item
- counterbore_hole_definition
- counterbore_hole_occurrence
- counterbore_hole_occurrence_in_assembly
- counterdrill_hole_definition
- counterdrill_hole_occurrence
- counterdrill_hole_occurrence_in_assembly
- countersink_hole_definition
- countersink_hole_occurrence
- countersink_hole_occurrence_in_assembly
- explicit_composite_hole
- explicit_round_hole
- simplified_counterbore_hole_definition
- simplified_counterdrill_hole_definition
- simplified_countersink_hole_definition
- simplified_spotface_hole_definition
- spotface_definition
- spotface_hole_definition
- spotface_occurrence
- spotface_occurrence_in_assembly
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.
- absorbed_dose_unit
- capacitance_unit
- conductance_unit
- dose_equivalent_unit
- electric_charge_unit
- electric_potential_unit
- energy_unit
- force_unit
- frequency_unit
- illuminance_unit
- inductance_unit
- magnetic_flux_density_unit
- magnetic_flux_unit
- power_unit
- pressure_unit
- radioactivity_unit
- resistance_unit
For example, consider force units Newtons and Pound-force as documented in the fundamental concepts clause (5.2.1.4) 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 */ #30=SI_UNIT(*,$,.NEWTON.); /* Pound Force */ #40=CONVERSION_BASED_UNIT(#50,'pound-force',#60); #50=DIMENSIONAL_EXPONENTS(1.,1.,-2.,0.,0.,0.,0.); #60=MEASURE_WITH_UNIT(NUMERIC_MEASURE(4.448221615),#30);
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 */ #24=(MASS_UNIT()NAMED_UNIT(*)SI_UNIT(.KILO.,.GRAM.)); #25=DERIVED_UNIT_ELEMENT(#24,1.E0); #26=(LENGTH_UNIT()NAMED_UNIT(*)SI_UNIT($,.METRE.)); #27=DERIVED_UNIT_ELEMENT(#26,1.E0); #28=(NAMED_UNIT(*)SI_UNIT($,.SECOND.)TIME_UNIT()); #29=DERIVED_UNIT_ELEMENT(#28,-2.E0); #30=(DERIVED_UNIT((#25,#27,#29))FORCE_UNIT() NAMED_UNIT(*)SI_UNIT($,.NEWTON.)); /* Pound Force */ #31=FORCE_MEASURE_WITH_UNIT(FORCE_MEASURE(4.448221615260E0),#30); #32=DIMENSIONAL_EXPONENTS(1.E0,1.E0,-2.E0,0.E0,0.E0,0.E0,0.E0); #33=(CONVERSION_BASED_UNIT('lbf',#31) DERIVED_UNIT((#25,#27,#29)) FORCE_UNIT()NAMED_UNIT(#32)); #34=DERIVED_UNIT_ELEMENT(#33,1.E0);
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:
- IfcBearing
- IfcBearingType
- IfcBridge
- IfcBridgePart
- IfcCaissonFoundation
- IfcCaissonFoundationType
- IfcDeepFoundation
- IfcDeepFoundationType
- IfcRelPositions
- IfcTendonConduit
- IfcTendonConduitType
- IfcVibrationDamper
- IfcVibrationDamperType
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.
rose_mesh_amf_save()
rose_mesh_3mf_save()
Platforms and Compilers
Service Pack One of the STEP Tools® software 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_*