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[2])
- 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.
- stixmesh_get_stp_faceinfo()
- stixmesh_get_stp_face()
- 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.
- stixmesh_create_tessellated_solid() stixmesh_create_tessellated_shape_rep()
Changes in release 17.2 (2018-07-18)
- The following functions are now declared with DLL linkage.
Previously only available via static libraries.
- stixmesh_create_ap242_product_for_shape_rep()
- stixmesh_create_from_tessellated_surface_set()
- stixmesh_create_tessellated_shape_rep()
- stixmesh_create_tessellated_solid()
- stixmesh_worker_clear_design()
- stixmesh_worker_clear_design_all()
- stixmesh_worker_find_any_builder()
- stixmesh_worker_find_builder()
- stixmesh_worker_get_jobmgr();
- stixmesh_worker_is_design_queued()
- stixmesh_worker_make_builder()
- stixmesh_worker_raise_priority()
- stixmesh_worker_render()
- stixmesh_worker_render_design()
- stixmesh_worker_wait()
- Updated faceter to reverse the face sense and retry whenever it fails.
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 draughting_model_item_association.
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 normals.
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)
- Update for NCpack 16.23
Changes in release 16.30 (2016-08-05)
- Updated default fractional tolerance to 1/2000 to create smoother looking round holes.
Changes in release 16.29 (2016-07-25)
- NCPack 16.21
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 was not.
- 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 tested for.
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 deleted facet
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 STEP topology.)
- 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 curve_bounded_surface instances
- Fixed export_product_asm to not crash when a product_definition_formation is missing
- 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 inheritnce relationship.)
- 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 (was vert_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 existing apps.
- 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 data files.
- Updated tessellation export code to insure that there is an empty triangle_fan list
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 colors.
- 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 (stixmesh_delaunay.h)
- Updated 2D delaunay code to preserve topology
- Move 2D Bounding box declaration from stixmesh_surface.h to stixmesh_boundingbox.h
- 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 StixMeshFacetSet::getSurfaceArea methods.
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 complete circles)
- 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: validateEdgesUnique
- 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 fans
- 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, stixmesh_read_shell stixmesh_start_shell_element, stixmesh_save_shell_header, stixmesh_save_shell_footer, stixmesh_save_facets
- 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 a StixMtrx
- 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, getFirstVertexFacet
- 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.
- stixmesh_cache_asm_create()
- stixmesh_cache_asm_find_bounds()
- 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 (hundreds) holes.
- Fixed bug where periodic NURBS surfaces were not getting relibaly determined.
- 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 codes.
- 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 getFacetSet
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.
- stixmesh_cache_add()
- stixmesh_cache_delete()
- stixmesh_cache_delete_all()
- stixmesh_cache_find()
- stixmesh_cache_find_finest()
- stixmesh_cache_find_coarsest()
- Updated StixMeshStpBuilder::make to process connected_face_set instances.
- Removed StixMeshFacetSet::addFacet and added StixMeshFacetSet::createFacet.
- 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 class Initial version, based on faceting code split from the stgl package at version 15.10