StixMesh Graphics Library Change History
Changes in release 18.2 (in progress)
- API rework to simplify and share faceting code with IFC. Changes
include remame of StixMeshStp to StixMesh, replace AsyncMaker class
with the stixmesh_worker API and move base classes for builder and
meshing options into the rosemath library.
Changes in release 18.1 (2019-10-28)
- Version 18 Service Pack One release.
- Added support for offset surfaces
- Better handles open loops and singularities in UV space.
- Adjust du/dv epsilon values when computing surface normals
- Added implementation for get/setSaveFaceSolver()
- Added stixmesh_is_inside(RoseReal2DArray, double)
- Added core to preserve surface, uv trim polygon and solver from faceter.
- Refactored faceting code to expose surface, solver and uv_trim
- Added AMF writing code
- Added 3mf generation program to process a full STEP assembly and
stixmesh_export_3mf overloads that take shape(s) asms to export
- Fixed spheres to not be periodic in the V direction.
- Allow negative slope on cones.
- Added stixmesh_get_styled_items function.
- Added StixMeshStpBuilder::getFaceInfo convenience methods
- Updated StixMeshTrimSegment to keep track of singularities on the segment
- Update worker API to include a StixMeshWorkerContext object.
Changes in release 18.0 (2018-10-01)
- Version 18 release.
- Added simple function interface to get STEP objects from the mesh.
The old API from StixMeshStep is still present but the new functions
are usable in more situations.
- When creating a tesselated solid from a mesh using either of the
following functions, you can set the geometric link field by passing
the original brep as the optional last geomlink parameter. This
will also set the geometric link for each tesselated face back to
the original STEP face that was faceted to make the mesh face.
Changes in release 17.2 (2018-07-18)
- The following functions are now declared with DLL linkage.
Previously only available via static libraries.
- Updated faceter to reverse the face sense and retry whenever it
Changes in release 17.1 (2017-12-29)
- Updated AP242 tessellated geometry import to be more conservative
about healing facet normals. (This healing process will generally
break the topology of the mesh, and so is not desirable.)
- Added code to render (some) facets with a bad same_sense attribute.
- Updated presentation code to provide link from geometric
representation item (e.g. face) to geometric_item_specific_usage and
Changes in release 17.0 (2017-04-07)
- Update for major revision
- Added license locking for export_product_asm
- Fixed regression in XML output where annotations were not getting output
due to schema changes.
- Added support for tessellated solids in the background worker API and
StixMeshStpBuilder:: canMake() and isShell method.
- Fixed warning when dealing with tessellated solids with missing vertex
Changes in release 16.32 (2017-01-09)
- Added support for complex_triangulated_surface_set and
tessellated_geometric_set in the tessellated geometry processing.
- Improved bounding box computation for tessellated geometry.
Changes in release 16.31 (2016-11-28)
Changes in release 16.30 (2016-08-05)
- Updated default fractional tolerance to 1/2000 to create smoother looking
Changes in release 16.29 (2016-07-25)
Changes in release 16.28 (2016-06-30)
- Updated STEP faceter to set the face colors if available, and
stixmesh_resolve_presentstion() has been called.
Changes in release 16.27 (2016-06-10)
- Added shutdownOnDtor property to job manager. This allows the dtor to
avoid a deadlock if someone else (e.g. node.js) kills the worker threads.
Changes in release 16.26 (2016-06-01)
- Update for ST-Developer v16 SP4
- Added worker interface for eager faceting of STEP data.
- Added user data field to StixMeshStpFace
- Added StixMeshStpBuilder::populateFaces() to created the faces for
already existing instances. Previously, this functionalify was only
available from the static StixMeshStpBuilder::make method, which
created a new object on the heap.
- Removed single thread stub code from StixMeshJobMgr
- Added ability to raise job's priority, and wait for a job to finish.
- Added virtual (callback) functions for StixMeshJob:
completed - called from main thread after job is completed.
autoDelete - is this returns true, the job is deleted, rather than
being passed to the called when getCompleted() is called.
- Corrected bug in the faceter where the application was crashing when a surface
could not be created.
Changes in release 16.25 (2016-04-18)
- Fixed a long-standing problem in the thread manager. In some
situations, the system would consider a shell faceting complete, when it
- Corrected several problems where a uncertainty of 0 was causing infinite
recursion. (Worked around Zeno's paradox).
Changes in release 16.24 (2016-02-09)
- Fixed bug in NURBS library where reparameterizeInPlace was not updating
the cached min u/max u values. This was in turn causing a surface of
revolution (of NURBS curves) to fail faceting.
Changes in release 16.23 (2016-01-04)
- Version bump for ncpack 16.17
Changes in release 16.22 (2015-11-21)
- Version bump for ncpack 16.16
Changes in release 16.21 (2015-09-21)
- Update for ST-Developer v16 SP3
Changes in release 16.20 (2015-09-17)
- Fixed bug in faceter that was causing a crash when no outer boundary was
found on a non-peroidic surface. This "impossible" condition was not being
Changes in release 16.19 (2015-08-19)
- Version bump for latest ncpack.
Changes in release 16.18 (2015-08-18)
- Update for internal release
Changes in release 16.17 (2015-07-24)
- Update for internal release
Changes in release 16.16 (2015-07-14)
- Updated StixMeshStpBuilder::renderFace to correctly update the face status
when processing failed. Several cases were omitted earlier.
- Updated topology class to include validateNoGeometry() method.
- Now using the ROSE Math library for the mesh structures, bounding
boxes, and all vector/transform functions. This requires adding
rosemath.lib to your link line and typically just changing the names
of some classes from StixMeshFoo to RoseMeshFoo and functions from
stixmesh_foo to rose_mesh_foo.
- Update StixMeshTopology::getFacetVertex to not crash when passed a
Changes in release 16.15 (2015-06-02)
- Updated topology validation to look for back-to-back coplanar adjacent facets
and report as a failure
Changes in release 16.14 (2015-05-06)
- Updated documentation.
- Updated STEP faceting code to deal with the case where vertex_points on
edge_loops are duplicated rather than shared. (This represents illegal
- Added support for degenerate_toroidal_surface instances
- Added support for trim curves that remove holes in closed surfaces.
Changes in release 16.13 (2015-04-28)
- Corrected bug that was causing the system to crash on unfacetible faces
- Updated stixmesh_topology to be more robust in the face of NULL facets,
vertices or facets getting passed in.
- Updated faceting code to generate correct topology when the goemetry is,
for example, cylinder trimmed by two complete circles. When this happens,
it is necessary to introduce a seam, but this seam was getting duplicated,
resulting in the edges only getting used once -- and getting bad topology.
This duplication is now eliminated.
Changes in release 16.12 (2015-03-26)
- Added support for bounded_curve AND SURFACE_CURVE used to trim
- Fixed export_product_asm to not crash when a product_definition_formation
- Updated precision in XML dump file.
Changes in release 16.11 (2015-01-07)
- Added stixmesh_create_from_tessellated_surface_set() function
- Refactored tessellation creation code to handle both tessellated_surface_sets
and tessellated_faces. (Both entities have the same structure, but no
- Fixed bug in tessellation processing code when pnindex was empty. (code
was only checking for NULL list, which is not legal according to the schema.)
Changes in release 16.10 (2014-12-12)
- No longer storing facet normals:
- The vertex normals field in struct StixMeshFacet is now renamed normals
- Added StixMeshfactSet::getFacetNormal. (also in StixMeshStp)
- Added StixMeshFacetSet::getFacetVertexNormal() to get the normal of at vertex,
or returns the facet normal if vertex normal is unset.
- Fixed bug in face props where the next field was not getting initized
- Facet normals are no longer included in the XML output. This may break some
- Fixed but in face properties where the next field was not getting initialized
to NULL, causing undefined bahavior.
- Updated topology validate code to resurrect the old sense validation code,
now renamed to GeometricSense
- Retired stixmesh_transform.h. The fixes described below were moved
over to the base stixlib as stix_get_transform.
- Updated stixmesh_transform to apply in inverse to the target. This
appears to be the correct thing to do, but it does break some old
- Updated tessellation export code to insure that there is an empty
Changes in release 16.9 (2014-11-18)
- Added code to avoid endless loop in topology validation.
- Added stixmesh_save_fragment and
stixmesh_face_facets(rose_uint_vector) functions. Thess allow
arbitrary sets of facets to be exported (w/o reordering the facet
list). Mostly useful for debugging.
Changes in release 16.8 (2014-10-15)
- Added workaround to allow display is degenerate (small) segments.
Changes in release 16.7 (2014-10-10)
- Added support for exporting facet normals in XML format both at the API
level, and by implementing the -fn option to export_product_asm.
- Added header (DLL) support for inline functions.
- Moved faces (e.g. groups of facets from StixMeshStp to
StixMeshFacetSet. This will allow face-oriented operations to be
handled in the file I/O and simulation.
- Added face properties to allows properties to be added to faces.
- Extended AP242 export to preserve faces and allow faces to have
- Extended XML I/O to allow for preservation of arbitrary attributes
on the faces (<facets> group element).
- Made 2D delaunay mesh generation code avalible as an API
- Updated 2D delaunay code to preserve topology
- Move 2D Bounding box declaration from stixmesh_surface.h to
- Changed topology validation function to check structural topology
and not geometry
Changes in release 16.6 (2014-07-17)
- Updated NURBS curve parameterization to be more predictable.
Changes in release 16.5 (2014-06-24)
- Added work-around for missing PMI data when the
geometric_item_specific_usage.used_representation is unset (this is
bad STEP data).
- Added StixMeshFacetSet::getFacetArea and
Changes in release 16.4 (2014-05-23)
- Updated stixmesh_resolve_annotation to handle shape aspect
relationships connecting to the shape_rep
Changes in release 16.3 (2014-05-22)
- Rewrote topology computation code to avoid O(n^2) behavior.
Changes in release 16.2 (2014-05-20)
- Added tessellation export code.
Changes in release 16.1 (2014-04-29)
- Updated faceting code to support periodic surfaces where the
wrap-around occurrs inside the trimmed area, and the surface is
trimmed by two partial trim curves. (e.g. a torus trimmed by
- Fixed bug in dump_facets that was resulting in bad XML output.
Changes in release 16.0 (2014-04-11)
- Removed unneeded debugging messages and fixed some warnings.
Updated error handling to identify the library in messages.
- new methods StixMeshFacetSet
delteteFacet, deleteVertex, deleteNormal, compact
- new methods StixMeshTopology:
- new class StixMeshTopologyWritable, to allow non-const topology
- Updated topology validation to insure edges are unique.
- Extended tessellated support to handle complete tri strips and tri
- Updated stixmesh_get_draughting_models to return vector of of
stp_representation instead of the subtype stp_draughting_model.
- Updated presentation resolution code to detect unimplemented cases
and avoid crashing. stixmesh_get_draughting_models now returns
vector of representation instead of draughting_model
Changes in release 15.9 (2014-03-04)
- Updated stixmesh_copy_facetset to correct bug where it was not getting
correctly cleaned is reused
Changes in release 15.8 (2014-02-07)
- Added functions: stixmesh_vector_normalize, stixmesh_vector_scale,
- Added class StixMeshShellFace
- Updated XML shell reader to take a StixMeshShellRecord rather than a
facet set, so face color information can be read
Changes in release 15.7 (2014-01-29, beta6/PE)
- Added stixmesh_topology_dump()
- Added the following methods to StixMeshTopology: getNeighborFacet(),
createEdge(), setEdgeFacets(), setVertexFacets()
- Changed stixmesh_copy_facetset to take a const StixMtrx& instead of
- Release for ST-Developer PE
- Added export declarations for use as a DLL.
- Changed boundingbox and StixMeshUVBbox to be class rather than a
struct because they have members.
- Reworked threading API to use rose_thread.h.
- Added stixmesh_topology.h to stixmesh.h
- Reworked demos to mesh solids instead of representations so that
they properly handle all kinds of data.
- updated styled_item resolution so that it will not crash when a
styled_item cannot be cast to styled_item (due to andor conflict).
Changes in release 15.6 (2013-12-16)
- Checkpoint release
- Added the following methods to StixMeshTopology:
getVertexFacetsEdges, getVertexFacets, getVertexEdges,
- Added StixMeshTopologyVertexIterator class
Changes in release 15.5 (2013-12-03)
- Added initial support for STEP tessellated faces.
- Added stixmesh_make_box to create a simple box. Added
stixmesh_make_shape.h for prototypes for shape creation functions.
- Made the color and id parameters optional in stixmesh_save_* functions
- Updated topology so the edges are in the same order as vertices.
e.g. verts: a,b,c; edges: ab,bc,ca
Changes in release 15.4 (2013-11-15)
- Added StixMeshBoundingBox::largestSide()
- Added stixmesh_cache.h header and moved the find/add/delete
functions from stixmesh_stp.h. Added a function to walk the shape
tree of an assembly, create and cache meshes with the rep items for
each solid. Added another to walk the asm and compute the bbox from
the cached facets.
- Fixed bug in StixMeshStp::getFaceFacets. For incomplete facets, the
start was being returned as 0 instead of ROSE_NOTFOUND.
- Allowed multiple vertex loops on otherwise untrimmed surfaces, thus
fixing bug #732 (poorly trimmed spheres)
- Major performance improvments in non-periodic surfaces with many
- Fixed bug where periodic NURBS surfaces were not getting relibaly
- Harmonized API between StixMeshStpBuilder and StixMeshStp by adding
the following methods to StixMeshStp: getVertex, getNormal,
getFacetCount, getFacet, getEdgeBouningBox, getEdgeSample.
- Added StixMeshStpFace::getRenderingState and isComplete() methods on
StixMeshStp and StixMeshStpBuilder to allow an application to query
if the faceting is complete.
- Updated StixMeshBuilder::getMesh to only return the mesh if the
faceting is completed.
- Minor fixes to the sample progams.
Changes in release 15.3 (2013-10-17)
- Fixes to build under HP-UX
- Generated right-hand oriented facets.
- Fixed several threading race conditions.
- Added StixMeshTopology class to compute and validate shell topology.
Changes in release 15.2 (2013-09-30)
- Added stixmesh_ec and used it to report errors.
- Eliminated exit() calls, and instead propogated problem as error
- Changed stixmesh_get_estimated_bounding_box to not return the bb,
but instead take a pointer that it fills in.
- Upsated bounding box to clear the diagonal when it is updated.
- Renamed getFacets methods of StixMeshStp and StixMeshStpBuilder to
Changes in release 15.1 (2013-09-18)
- Added StixMeshOptions and replaced tolerance parameter everythere
with options structure
- Updated stixmesh_create_circle to return a success/failure code
since it can actually fail.
- Added getArea and getFacetArea to StixMeshStpFace
- Added face area XML export.
- Updated command line processor in export_product_asm to allow STEP
file name to be anywhere.
- Added StixMeshOptions parameters to export_product_asm command line.
Changes in release 15.0 (2013-09-09)
- Added cache functions to attach one or more meshes to a step object
for later use.
- Updated StixMeshStpBuilder::make to process connected_face_set
- Removed StixMeshFacetSet::addFacet and added
- Moved StixMeshFacetSet::copy to stixmesh_copy_facetset
- Added modifyVertex and modifyNormal to StixMeshFacetSet
- Added stixmesh_find_bbox() and stixmesh_find_bbox() functions.
- Added high-level API and rewrote export_product_asm to use it
- renamed renderEdges to renderPrep, implicitly set tolerance in
renderPrep if not set.
- Added tolerance parameter to stixmesh_simple_* routines.
- Started worker threads at low priority
- empted job queue in JobMgr dtor
- fpu save and restore code
- moved stixmesh_xml_* functions to be methods of StixMeshXMLExport
Initial version, based on faceting code split from the stgl package at
Copyright © 2021 STEP Tools Inc. All Rights Reserved