X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGHS3DPlugin%2FMG_Tetra_API.cxx;fp=src%2FGHS3DPlugin%2FMG_Tetra_API.cxx;h=7e01ab8d96747850d3b269a1291be1cfcbaa77a4;hb=ab1ef9b2604e29e6e853669e33138f06b54d8d6a;hp=2a870eebec33e9c894af679f02997f4cb3f8b24e;hpb=28c36952b5f953bbb3f9f91d4c79ab58d43b1097;p=plugins%2Fghs3dplugin.git diff --git a/src/GHS3DPlugin/MG_Tetra_API.cxx b/src/GHS3DPlugin/MG_Tetra_API.cxx index 2a870ee..7e01ab8 100644 --- a/src/GHS3DPlugin/MG_Tetra_API.cxx +++ b/src/GHS3DPlugin/MG_Tetra_API.cxx @@ -40,6 +40,9 @@ extern "C"{ #include } +#define MESHGEMS_VERSION_HEX (MESHGEMS_VERSION_MAJOR << 16 | MESHGEMS_VERSION_MINOR << 8 | MESHGEMS_VERSION_PATCH) +#define MESHGEMS_215 (2 << 16 | 15 << 8 | 0) + struct MG_Tetra_API::LibData { // MG objects @@ -650,24 +653,45 @@ bool MG_Tetra_API::LibData::Compute() status_t ret; std::string errorTxt; +#if MESHGEMS_VERSION_HEX > MESHGEMS_215 + // need to unlock Tetra license only once + std::string SPATIAL_LICENSE = SMESHUtils_MGLicenseKeyGen::GetKey(errorTxt); + ret = meshgems_tetra_unlock_product(SPATIAL_LICENSE.c_str()); + if STATUS_IS_ERROR( ret ) + { + AddError( SMESH_Comment( "Problem with SPATIAL_LICENSE to unlock Tetra: ") << errorTxt ); + return false; + } + else + MESSAGE("SPATIAL_LICENSE unlock Tetra: " << ret); +#endif + if ( _tetraNodes.empty() ) { +#if MESHGEMS_VERSION_HEX < MESHGEMS_215 + // Sign the surface mesh if ( !SMESHUtils_MGLicenseKeyGen::SignMesh( _tria_mesh, errorTxt )) { AddError( SMESH_Comment( "Problem with library SalomeMeshGemsKeyGenerator: ") << errorTxt ); return false; } +#endif // Set surface mesh ret = tetra_set_surface_mesh( _session, _tria_mesh ); if ( ret != STATUS_OK ) MG_Error( "unable to set surface mesh"); } else { +#if MESHGEMS_VERSION_HEX < MESHGEMS_215 + // Sign the volume mesh + // TOOD: check if there is a typo here. Should be _tetra_mesh ? if ( !SMESHUtils_MGLicenseKeyGen::SignMesh( _tria_mesh, errorTxt )) { AddError( SMESH_Comment( "Problem with library SalomeMeshGemsKeyGenerator: ") << errorTxt ); return false; } +#endif + // TOOD: check if there is a typo here. Should be _tetra_mesh ? ret = tetra_set_volume_mesh( _session, _tria_mesh ); if ( ret != STATUS_OK ) MG_Error( "unable to set volume mesh"); }