Skip to content

v19.1.0

Latest

Choose a tag to compare

@geode-ci geode-ci released this 22 Oct 06:46
826ab58

19.1.0 (2026-10-22)

Bug Fixes

  • Color: round and clamp interpolated color channels once (e9b7cf2)
  • Component: bound legacy component name size when loading (9579a3f)
  • ComponentRegistry: do not register a component type when removing a component (d0655be)
  • ComponentsStorage: name the component type and check deletion of unknown ids (b96df52)
  • ComponentsStorage: repair loaded components (35f1e56)
  • ComponentsStorage: single lookup and explicit error for unknown component (56952bf)
  • ComponentsStorage: throw when deleting a component that does not exist (fc75526)
  • GreyscaleColor: compute operator+ without halving each operand (562ffe8)
  • IO: hint at IO libraries when an extension is unknown (e0d9296)
  • IO: keep the failure reason in load/save exceptions (4047a04)
  • IO: only test non-ASCII archive names, not directories (4fff975)
  • IO: use UTF-8 paths in the generic input and output helpers (e4eb903)
  • MeshStorage: throw instead of crashing on missing component mesh (9ac7ea9)
  • ModelBuilder: check collections and relationships before copy (8ac7524)
  • ModelBuilder: do not leave isolated unique vertices after a partial mesh transfer (9245a26)
  • ModelBuilder: give component meshes the requested uuid on creation (d660926)
  • ModelBuilder: support partial mappings in replace_components_meshes_by_others (e5dd2ac)
  • ModelConversion: convert BRep with Blocks into Section (2338f22)
  • ModelConversion: do not merge component vertices without unique vertex (f4d5477)
  • ModelConversion: extrude quadrangles into hexahedra (0c04e13)
  • ModelConversion: reuse vertex identifier copy and throw directly (4b6bb90)
  • ModelConversion: skip empty Corners in Section extrusion (4f8f302)
  • ModelConversion: skip model elements not in converted mesh (4d4b8fb)
  • ModelConversion: throw on unsupported Surface mesh type conversion (8628252)
  • ModelHelpers: guard empty SortedSurfaces in opposite() and next() (b287d3d)
  • ModelHelpers: guard NO_ID unique vertices in component mesh queries (1798dd9)
  • ModelHelpers: handle empty meshes and lines in component mensurations (fbba972)
  • ModelHelpers: merge duplicate private sections in UniqueVerticesComputer (0f10112)
  • ModelHelpers: remove data race in SplitAlongSurfaceMeshBorders (c0b8e8e)
  • ModelHelpers: robust unique vertex counting in compute_model_unique_vertices (154b08d)
  • ModelHelpers: separate private methods and members in UniqueVerticesComputer (615db5f)
  • ModelHelpers: skip degenerate elements in component_mesh_vertex_generic (08040ad)
  • ModelHelpers: skip meshes without elements in model AABB trees and ray tracing (89d214d)
  • ModelHelpers: skip vertices without unique vertex when splitting (7015e74)
  • ModelHelpers: throw on degenerate unique vertices in component_mesh_vertex_generic (f74aca4)
  • ModelIO: check component existence without a qualified fold expression (7f4e620)
  • ModelIO: check output streams and use UTF-8 paths for model files (b2f35b5)
  • ModelIO: load components with a missing mesh file or unknown mesh type (ddf5172)
  • ModelIO: remove relations of components missing from loaded models (2a02b90)
  • ModelIO: restore the Logger level when a model load or save fails (9e565ce)
  • ModelIO: save and load RegularGrid surface and block meshes (547b4be)
  • ModelIO: turn std exceptions into OpenGeodeException when loading (288aecf)
  • OpenGeodeRasterImageOutput: report files that cannot be written (c34dbf0)
  • Python: give a stub-friendly signature to the properties default argument (1042aa4)
  • RasterImage: bound the loaded color count by the number of cells (cbba3ad)
  • RasterImage: check cell indices given from Python (4057e44)
  • RasterImageIO: load and save RasterImage1D in the native format (47eefb9)
  • RasterImageIO: wrap standard exceptions raised while loading or saving (2e85d5c)
  • RasterImage: repair color count and reject overflowing dimensions on load (a028356)
  • Relationships: rebuild component index from vertex ids on load (2917c88)
  • Relationships: reset uuid mapping when copying relationships (c374c70)
  • RGBColor: average both colors in operator+ (7fd4859)
  • SimplicialModelCreator: find Line boundary Corners from unique points (6380431)
  • SimplicialModelCreator: link components to the created unique vertices (666eff7)
  • SimplicialModelCreator: validate component definitions (92f9574)
  • TransferCollections: do not re-add existing items of unchanged components (ece99ef)
  • TransferMetadata: join unique input mesh names without empty parts (d6fd2bd)
  • TransferMetadata: merge component names with homogeneous "__" separator (382b628)
  • VertexIdentifier: repair unique vertices of loaded models (44942f1)

Features

  • Python: add str and repr to printable objects (4cb2e68)
  • Python: bind create_edge(v0, v1) overload (0c09032)
  • Python: create attributes from a name and a default value (fb2db02)
  • Python: expose Logger (c7bd53e)
  • Python: make uuid, ComponentType and ComponentID hashable (30cd353)

Performance Improvements

  • BRepBuilder: do not unregister components of the model whose meshes are transferred (0da13d2)
  • Clone: reserve clone mappings to the number of components (1aaa92b)
  • Color: define RGBColor and GreyscaleColor trivial members inline (ffff701)
  • Graph: update edges around vertices in place after edge or vertex removal (6a34649)
  • ModelComponentFilter: remove filtered components in batch (b69ce2d)
  • Model: compute component meshes bounding boxes in parallel (efe6a39)
  • ModelConversion: avoid hash lookups and builder creations (9f499a5)
  • ModelHelpers: use colocated mapping directly in compute_model_unique_vertices (3f841cc)
  • Model: stop counting boundaries early in is_closed (0f6d8a8)
  • Model: store component and relation range state inline (94c1d16)
  • Relationships: remove several components at once and halve relation lookups (4d50ec0)
  • RGBColor: hash all channels together (50536a4)
  • SplitAlongBlockMeshBorders: avoid useless work in split_all_blocks (00bae26)
  • TransferCollections: look up unchanged components in a hash set (1215004)
  • TransferMeshes: read saved unique vertices from the mesh attribute (fb5b76c)
  • TransferMetadata: find input meshes through a hash map (4594091)
  • VertexIdentifier: keep component registrations in a flat map (7e2b006)
  • VertexIdentifier: only visit the unique vertices of an unregistered component (ae404b2)
  • VertexIdentifier: reduce lookups in set_unique_vertex and delete_isolated_vertices (9bacce2)
  • VertexIdentifier: scan component vertices in parallel before repairing them (c749cd2)