This describes an older ST-Developer release (2016). You can find the details for the latest release here
Service Pack 4 Overview — 2016-06-01
This release is the latest service pack with cumulative patches for ST-Developer v16 and new features to simplify work with CAD, CAM, and BIM data. Contact us at info@steptools.com to get the latest updates.
Service Pack 4 introduces many improvements for for STEP geometric tolerances. The API now includes a full range of functions for working with datums, common datums, datum modifiers, and tolerance modifiers. The functions also transparently handle the latest AP242 definitions, and older AP214 data, so you do not need to worry about the specifics.
This service pack also includes new capabilities, fixes and performance boosts across all of the libraries. Together with previous service packs, ST-Developer includes new features and improvements in the following areas:
- Visual Studio 2015
- STEP Check and Browse
- Geometric Tolerances
- Other STEP Enhancements
- IFC BIM Faceter
- IFC Check and Browse
- Math Library
- General Updates
Visual Studio 2015
Beginning with Service Pack 3, we now include libraries and DLLs for use with Visual Studio 2015. ST-Developer for Windows continues to support older versions as well, with libraries for Visual Studio 2013, 2014, 2008, and 2005. We will retire support for Visual Studio 2005, 2008 and VC6 in the next full release. Please contact us if this will affect your development. Set your library link path to one of the following to use the new libraries.
- $(ROSE)\lib\i86_win32_vc14_md (2015, 32bit platform, /MD)
- $(ROSE)\lib\x64_win64_vc14_md (2015, 64bit platform, /MD)
STEP Check and Browse
The new stpcheck combines checking and browsing in a single tool. It can analyze STEP file contents and print reports like previous AP checkers, but now you can move beyond batch operation to interactive viewing using the built-in web server.
This tool is integrated into the Windows file explorer, so you can just right click on a file and select "Check STEP File" from the pop-up menu. It will start a local web-server and launch your browser. From there, you can build instance graphs, follow links forwards and backwards between objects, see the range of types in the file, look at the EXPRESS schema definitions, and browse STEP files that are hundreds of megabytes in size!
The stpcheck tool fully recognizes all common STEP schemas (AP242, AP214, AP203, STEP-NC) and can read and recognize the common parts of unusual STEP files. Since the user interface is just any web browser, the tool works on all ST-Developer platforms!
Geometric Tolerances
STEP CAD models now hold geometric tolerances associated with faces. AP242 has updated tolerance definitions with many more options and extra parameters. The latest libraries have API calls to easily create and navigate tolerances. The API has functions to create them, find their type, get and put modifiers, datums, and extra parameters. This is much simpler than trying to use the raw C++ classes for each type.
We introduced the core of the API in SP3, and in SP4 we extended it with more functions for datums, common datums, datum modifiers, and tolerance modifiers.
The core of the API uses single call to create any type of tolerance, as well as some functions to test whether the tolerance can hold different types of extra settings. The previous approach was not practical because it required raw C++ classes for each of the 259 possible AND/OR combinations, plus code in your application to pick between them. Key functions for creating and testing tolerances:
- stix_make_tolerance()
- stix_tol_geometric_type()
- stix_tol_type()
Surface Profile with All Possible Extra Parameters
The extra parameters, like per area basis or unequal displacement, each have functions to get and set values. Key functions for getting and setting the extra parameters are:
- stix_tol_get/put_area_type()
- stix_tol_get/put_displacement()
- stix_tol_get/put_maximum_upper_tolerance()
- stix_tol_get/put_second_unit_size()
- stix_tol_get/put_unit_size()
There are also functions for traversing the set of tolerance modifiers, adding or removing modifiers, and managing the values. These functions also understand the old ap214-style modifier and will automatically translate MMC and LMC into a simple modifier enum. Some key functions for modifiers are:
In SP4, we put in much work on handling datums, common datums, and datum modifiers. The functions easily loop over all of the datums associated with a tolerance. Other functions loop over the modifiers of a datum. When creating data, the functions use the latest AP242 definitions, but they also understand older AP214 style references, so you do not need to worry about the specifics. Some of the datum functions are:
- stix_tol_add_datum()
- stix_tol_add_common_datum()
- stix_tol_add_datum_modifier()
- stix_tol_get_datum()
- stix_tol_get_datum_modifier()
- stix_tol_remove_datum()
- stix_tol_remove_datum_modifier()
Other STEP Enhancements
Mesh created by STEP-NC Simulator
We continue to improve the STEP Faceter library with better AP242 handling, more geometry, and faster speed. We also have the latest definitions in our STEP CAD and STEP Manufacturing AP libraries!
- STEP Faceter Library
[change log]
- New STEP to STL Sample Program for using the STEP Faceter library in Additive Manufacturing applications. We also open-sourced the export_product_asm tool and have expanded it into a more extensive STEP to STL or WebGL program on our GitHub projects.
- Can save meshes as AP242 tesselated models for use in downstream simulation or other systems. The AP242 models preserve faces and can have colors. There are also new functions for saving arbitrary sets of facets, such as portions of faces, for debugging or other purposes.
- The facet data structure still holds normals for each vertex, but no longer stores a normal for the entire triangle. The vertex normals have been renamed from "vert_normals" to just "normals", and the StixMeshfactSet::getFacetNormal() function computes the triangle normal.
- Added a face property mechanism for attaching additional information to faces.
- New support for reading and handling AP242 tessellated_surface_sets and tessellated_faces. Now reading and processing bounded_curve AND surface_curve used to trim curve_bounded_surface instances.
- New API functions for getting the area of surfaces and for 2D Delaunay mesh generation.
- Stability improvements in many areas: handling unfacetible faces, NULL faces, vertices or facets, bad data in AP242 tesselated models, validating senses in topology
- Fixed mesh topology when faceting geometry such as cylinder trimmed by two complete circles. A seam is now added correctly.
- Expanded handling of trimmed periodic surfaces, particularly where wrap-around occurrs inside the trimmed area, such as a torus trimmed by complete circles.
- Continuous improvements in speed, topology handling, and small or degenerate faces. Better topology validation and more predictable NURBS curve parameterization. Fixed a NURBS reparameterize issue that was causing failures with surfaces of revolved NURBS curves.
- STEP data with a geometric uncertainty of zero (infinitely precise) is now handled sensibly.
- STEP CAD APs Library
- STEP Manufacturing APs Library
- STEP-NC, AP242, AP214, and AP203 in a single application!
- Simplified complex instance combinations for handling geometric tolerances
- Updated to use the latest AP242 schema (stepmod v1.36). As above, fine-tuning of rules and new CSG definitions.
- Added support for the AP232 technical data packaging schema.
- Now recognizing the circa 2005 CAX-IF construction history (SMCH) testing schema "CCD_CLA_GVP_AST_ASD" as ap203e2, and files with "AUTOMOTIVE_DESIGN_CC2" as AP214. These schema names made it into some commercial tools.
- Added complex instance combinations to support tesselated display PMI now being created by Catia.
- Added definitions to support the proposed CAX-IF Minimal Presentation PMI.
- Fixed "name" attributes incorrectly redeclared as derived in characterized_representation and kinematic_pair entities. These definitions inherit two different name attributes. The wrong ones were marked as redeclared, so a "*" was not in the proper place in P21 files. This also affected any subtypes or complex instance combination with these types.
- STIX AP Helper Library
[change log]
- Simplified API for geometric tolerances described above.
- New helper functions for querying geometric uncertainties attached to STEP solid models.
IFC BIM Faceter
We are adding a new IFC Faceter library that makes viewable meshes from IFC data, just like our STEP Faceter does for STEP. We have also improved the IFC BIM library to move between IFC2x3 and IFC4 with greater ease!
We are also working on a new .NET API for building IFC tools. It has the same power as our C++ API, but can be used directly from C# or Visual Basic. Contact us if you are a customer who wants early access for testing!
- IFC Faceter Library
[change log]
- This is a developer preview of our IFC Faceter Library. We anticipate many more iterations, so contact is if you are interested so that we can keep you supplied with the latest features!
- The faceter handles IFC data with extruded solids that have profiles made up of circles, trimmed_curves, composite_curves, polylines, or lines. It handles shell-based surface models and solids that are faceted_breps with triangle or quad facets. The faceter also resolves color styles that appear in the IFC data.
- We include a very simple IFC geometry viewer (ifcview.exe) as a test harness to display mesh data. Call it from the command line with your filename.
- IFC BIM Library
[change log]
- Added automatic migration support for types that have extra attributes in IFC4 but no other significant structural changes. The extra fields are present when writing IFC4 but not used when writing the file as IFC2x3 or IFC2x2. There are no longer warnings about missing fields when reading these types in IFC2x3 data. See the release notes for a full list of types that have been enhanced.
- Add aliases for reading the IfcBezierCurve, IfcRationalBezierCurve, Ifc2DCompositeCurve types that were removed in IFC4. These are simple subtypes with no extra fields, so just handle them as instances of the supertype.
- Corrected case-sensitive comparison issue that caused schema initialization issues on Linux, AIX, Solaris, and HPUX.
- IfcSurfaceStyleShading gained an optional attribute moved from a subtyle in ifc4_add1. Supressing warnings about the extra attribute when reading or writing as IFC 2x3 data.
IFC Check and Browse
The new ifccheck is a combined checking and browsing tool for IFC files. Like stpcheck, it can analyze IFC file contents and print reports and do interactive viewing using the built-in web server.
This tool is integrated into the Windows file explorer, so you can just right click on a file and select "Check IFC File" from the pop-up menu. It will start a local web-server and launch your browser. From there, you can build instance graphs, follow links forwards and backwards between objects, see the range of types in the file, look at the EXPRESS schema definitions, and browse very large IFC files!
Math Library
The ROSE Math Library is a new addition to ST-Developer that contains functions for working with vectors, transforms, meshes, unit conversions, and other operations common to engineering data. There is nothing in here that is specific to an information model (STEP, IFC, CIS/2, DSTV, etc) so it can be used in any program that uses the ROSE library.
This library gathers and documents math code previously spread over the STEP Tools® libraries for STEP, IFC, and other engineering data and removes depencencies on specific EXPRESS schemas. The result contains definitions for the for mesh structures used by the STEP and IFC Faceter libraries. It also has a full range of vector arithmetic and coordinate system transform functions, unit conversion, and bounding box resources. It also has utilities for writing the mesh data to XML and JSON structures.
The STEP Faceter, IFC Faceter, and STEP helper function libraries now use the mesh, transform, bounding box, and unit data types provided by the ROSE Math library. As a result, you may need to change some symbols when updating code that used the earlier definitions.
General Updates
The core ST-Developer APIs are stronger after stress tests with thousands of the most abusive files that Microsoft and our corporate customers could make. We are also preparing for the future third edition of the STEP file format!
- ROSE Library [change log]
- The library uses the full directory path when checking if a file is already in memory. A program can now read both "dir1/foo.stp" and "dir2/foo.stp". Call ROSE.findDesign() and findDesignInWorkspace() with a full pathname for best results. The RoseDesign name() and path() functions also take a full file path now.
- Best-fit matching from EXPRESS to C++ classes now chooses a complex instance combination for a subset of types if the full combination is not available, and it now finds the class that covers the most attributes or subtypes. Most best-fit circumstances came from adding an extra type or subtype to a complex instance combo, which will now be handled as a useful nearest combo rather than a less-useful supertype. In SP4 we continued to refine the scoring system used to find the best fit class.
- Added more functions for Part 21 Edition 3 references. In particular, you can now assign an object to a reference and propogate that to all usages. We are also annotating anchors with the type of their underlying object to help improve clarity in E3 files.
- Applications are now 5% smaller and have increased performance. Some functions non-virtual and removing ones that were never widely used or can be handled better in a different way. Minor API changes also simplify things and help with compiler checking. In particular, we made the return values for many string access functions const char rather than just char.
- New RoseDesign fileArchiveMember() holds the path within an archive, such as a zip file, that a design was read from or will be written to. If null, it will use the default name.
- New RoseTypesCursor class for traversing several disconnected types at once.
- The STEP file reader is has been tested against thousands of STEP files that were intentionally corrupted by Microsoft "fuzz" testing tools.
- The Part21 edition 3 test implementation has been exercised by vendor interoperability testing of the new anchors and URL references. We also sponsored the development of open source programs to split and merge P21 files using the P21e3 spec.
- When writing Part 21 files, no longer line wrapping within \X\ encoded hex escape sequences. Wrapping is legal, but some systems are not well-written and have trouble with that.
- Added enable()/disable() to error context for simpler turning on/off of individual messages. Error reporting respects ROSE_LOG instead of always using 'roselog'.
- Fixed crashes when renumbering EIDs on an empty design and when writing a null XML attribute.
- The rose_put_nested_object() and rose_create_select() functions now work properly with very deeply nested select types.
Service Pack History
The changes described above are cumulative to date. The details of earlier releases are archived below for historical reference.
- Service Pack 1 — 2014-11-19
- Service Pack 2 — 2015-04-29
- Service Pack 3 — 2015-09-23
- Service Pack 4 — 2016-04-07
The sub-package versions used in the current release are as follows:
Package SP1 SP2 SP3 SP4 ------- --- --- --- --- ifcbim v16.0 v16.2 v16.4 v16.6 ifccheck - - v16.2 v16.3 ifcmesh - v16.3 v16.6 v16.9 p28lib v16.0 v16.0 v16.1 v16.2 roselib v16.1 v16.2 v16.5 v16.13 rosemath - - v16.5 v16.8 sdailib v16.0 v16.0 v16.1 v16.2 stix v16.1 v16.3 v16.5 v16.13 stixmesh v16.9 v16.13 v16.21 v16.26 stpcad v16.1 v16.5 v16.8 v16.13 stpcheck - - v16.10 v16.11 stpman v16.1 v16.5 v16.8 v16.13