CM2 MeshTools® SDK /release 5.3.0

by | Nov 16, 2022

  • 5.3.0
  • November, 2022.
  • Major release of the CM2 MeshTools® SDK.
  • All CM2 MeshTools® SDK.
  • Due to changes in the API, client applications must be recompiled against the new headers.

/caveats

  • Major version. Due to changes in the API, client applications must be recompiled against the new headers.
  • Lib names suffix is _53 (Windows®) for this series.
  • Linux and macOS: dynamic libs now follow the conventional version numbering scheme, have compatibility numbers and come with symlinks.
    Examples:

     

    • Linux: libcm2tetramesh_iso.so.5.3.0 (current) with symlinks from libcm2tetramesh_iso.so.5.3 (soname) from libcm2tetramesh_iso.so (base).
    • macOS: libcm2tetramesh_iso.5.3.0.dylib (current) with symlinks from libcm2tetramesh_iso.5.3.dylib (compatibility) from libcm2tetramesh_iso.dylib (base).
  • New specialized tool CM2 Intersect E2 to repair intersections between 2-node edge meshes.
  • CM2 SurfMesh T3 & CM2 SurfMesh Q4 promoted to production-grade (no longer experimental).
  • New macOS arm64 (Apple silicon) and universal (fat libs for both x86-64 and arm64 architectures) builds.
  • New macOS bash script cm2/scripts/install_name_prefix_tool.sh to change the dynamic libs entries (for exemple to @rpath/../lib).
  • Last version with Visual Studio 2013 builds (deprecated and no longer provided in future versions).
  • Last version with Win32 and Linux x86-32 builds (deprecated and no longer provided in future versions).
  • Last version with macOS pure Intel x86-64 builds (deprecated and no longer provided in future versions). Use the universal builds instead.

/new features

CM2 Intersect E2

  • New specialized tool to repair intersections between 2-node edge meshes (plane 2-D or 3-D) similar to CM2 Intersect T3, with tutorial manual and reference manual.

CM2 SurfMesh T3, CM2 SurfMesh Q4

  • Now production-ready (no longer experimental), with tutorial manual and reference manual.
  • Can now merge coincident curves (when within settings_type::fix_tolerance).
    Used to work only on vertices (but still not considered to merge coincident surfaces).
  • New output data_type::merged_vertices to tell which vertices have been merged into which.
  • New output data_type::merged_curves to tell which curves have been merged into which.
  • New output data_type::nbr_vertices for the number of vertices in the CAD model (before any merge).
  • Default to mesh size equal to 1/10 of highest dimension size of the model when settings_type::target_h = 0.

COM wrapper

  • New COM wrapper for CM2 Intersect E2.
  • New COM wrappers for CM2 SurfMesh T3 and CM2 SurfMesh Q4.

Miscellaneous

  • New meshtools2d::boolean_ops to compute the differences, intersection and union between two plane domains defined by their extern contour (2-node edges closed meshes with similar orientation).
    Requires CM2 Intersect E2 and a plane mesh generator (CM2 TriaMesh Iso or CM2 TriaMesh Aniso).
  • New meshtools2d::offset and meshtools2d::copy_with_offset to offset a 3-D surface mesh (T3 and/or Q4) along nodal normals or user-defined nodal directions.
    Offsets can be isotropic (same offset quantity whatever the direction of the normals) or anisotropic (offset quantities depend on the direction of the normals).
  • New meshtools3d::boolean_ops to compute the differences, intersection and union between two solids defined by their extern boundary surface (3-node triangles closed meshes with similar orientation).
    Requires CM2 Intersect T3 and a tetrahedron mesh generator (CM2 TetraMesh Iso or CM2 TetraMesh Aniso).
  • New meshtools3d::extrude_line to extrude (sweep) a surface mesh (T3 and/or Q4) along a specific line to make a structured 3-D mesh (W6 and/or H8).
    Expansion ratios (spherical or anisotropic) perpendicular to the extrusion line can be set.
  • All solid extrusion functions (meshtools3d::extrude_translate, meshtools3d::extrude_rotate, meshtools3d::extrude_spiral, meshtools3d::extrude_line) now have overloads with outputs for side and top surface meshes.

/improvements

All meshers

  • Minor speed-ups (≤ 2%).

CM2 SurfMesh T3, CM2 SurfMesh Q4

  • Port to OCCT 7.6 (Win, Linux and macOS).

CM2 SurfRemesh T3, CM2 SurfRemesh Q4

  • Speed-ups and reduction in memory usage when numerous hard faces.

Miscellaneous

  • As usual, doc clean-ups, update of the manuals.

/fixes

CM2 SurfRemesh Q4

  • Hard quadrangles could be sometimes split into two triangles.

CM2 SurfMesh T3, CM2 SurfMesh Q4

  • More robust on difficult, slender surfaces.

CM2 SurfMesh Q4

  • Meshes weren’t always structured as could be.

COM wrapper

  • Missing data_type::put_colors_in members for COM CM2 SurfRemesh T3/Q4.
  • Missing settings_type::put_num_threads members for COM CM2 SurfRemesh T3/Q4.

/breaking changes

CM2 SurfRemesh T3, CM2 SurfRemesh Q4

  • Edges between two hard faces are no longer reported in data_type::hard_edges, data_type::skeleton_edges, data_type::skeleton_edges_in,
    data_type::skeleton_colors and data_type::skeleton_colors_in.

CM2 SurfMesh T3, CM2 SurfMesh Q4 (source-code licenses only)

  • Class OCC_interface renamed into OCCT_interface.
  • static bool OCC_interface::curve_ref_image (const curve2D_type& C, double u, DoubleVec2& P)‘ renamed into ‘static bool OCCT_interface::curve_image (const curve2D_type& C, double u, DoubleVec2& P)‘.