From bab67ddbc81236f836227f26fb7b869a75af49a3 Mon Sep 17 00:00:00 2001 From: eap Date: Thu, 5 Aug 2021 17:10:04 +0300 Subject: [PATCH] bos #24596 [CEA] New MeshGems license --- src/HexoticPlugin/MG_Hexotic_API.cxx | 60 +++++++++++++++++++++++----- src/HexoticPlugin/MG_Hexotic_API.hxx | 7 ++++ 2 files changed, 56 insertions(+), 11 deletions(-) diff --git a/src/HexoticPlugin/MG_Hexotic_API.cxx b/src/HexoticPlugin/MG_Hexotic_API.cxx index ca19e8a..6dcf7f8 100644 --- a/src/HexoticPlugin/MG_Hexotic_API.cxx +++ b/src/HexoticPlugin/MG_Hexotic_API.cxx @@ -25,11 +25,13 @@ #include #include +#include #include -#include -#include #include +#include +#include +#include #ifdef USE_MG_LIBS @@ -667,6 +669,14 @@ void MG_Hexotic_API::LibData::Init() bool MG_Hexotic_API::LibData::Compute() { + // MG license + std::string errorTxt; + if ( !SMESHUtils_MGLicenseKeyGen::SignMesh( _tria_mesh, errorTxt )) + { + AddError( SMESH_Comment( "Problem with library SalomeMeshGemsKeyGenerator: ") << errorTxt ); + return false; + } + // Set surface mesh status_t ret = hexa_set_surface_mesh( _session, _tria_mesh ); if ( ret != STATUS_OK ) MG_Error( "unable to set surface mesh"); @@ -719,7 +729,8 @@ struct MG_Hexotic_API::LibData // to avoid compiler warnings */ //================================================================================ -MG_Hexotic_API::MG_Hexotic_API(volatile bool& cancelled_flag, double& progress) +MG_Hexotic_API::MG_Hexotic_API(volatile bool& cancelled_flag, double& progress): + _isMesh(true), _nbNodes(0), _nbEdges(0), _nbFaces(0), _nbVolumes(0) { _useLib = false; _libData = new LibData( cancelled_flag, progress ); @@ -813,7 +824,7 @@ bool MG_Hexotic_API::Compute( const std::string& cmdLine, std::string& errStr ) } // compute - bool ok = _libData->Compute(); + bool ok = _libData->Compute(); GetLog(); // write a log file _logFile = ""; // not to write it again @@ -821,6 +832,20 @@ bool MG_Hexotic_API::Compute( const std::string& cmdLine, std::string& errStr ) return ok; #endif } + // add MG license key + { + std::string errorTxt, meshIn; + std::string key = SMESHUtils_MGLicenseKeyGen::GetKey( meshIn, + _nbNodes, _nbEdges, _nbFaces, _nbVolumes, + errorTxt ); + if ( key.empty() ) + { + errStr = "Problem with library SalomeMeshGemsKeyGenerator: " + errorTxt; + return false; + } + + const_cast< std::string& >( cmdLine ) += " --key " + key; + } int err = system( cmdLine.c_str() ); // run @@ -927,7 +952,7 @@ void MG_Hexotic_API::GmfGetLin( int iMesh, GmfKwdCod what, int* nbNodes, int* fa //================================================================================ void MG_Hexotic_API::GmfGetLin(int iMesh, GmfKwdCod what, - double* x, double* y, double *z, int* domain ) + double* x, double* y, double *z, int* domain ) { if ( _useLib ) { #ifdef USE_MG_LIBS @@ -945,7 +970,7 @@ void MG_Hexotic_API::GmfGetLin(int iMesh, GmfKwdCod what, //================================================================================ void MG_Hexotic_API::GmfGetLin(int iMesh, GmfKwdCod what, - float* x, float* y, float *z, int* domain ) + float* x, float* y, float *z, int* domain ) { if ( _useLib ) { #ifdef USE_MG_LIBS @@ -1001,7 +1026,7 @@ void MG_Hexotic_API::GmfGetLin(int iMesh, GmfKwdCod what, int* node1, int* node2 //================================================================================ void MG_Hexotic_API::GmfGetLin(int iMesh, GmfKwdCod what, - int* node1, int* node2, int* node3, int* domain ) + int* node1, int* node2, int* node3, int* domain ) { if ( _useLib ) { #ifdef USE_MG_LIBS @@ -1019,7 +1044,7 @@ void MG_Hexotic_API::GmfGetLin(int iMesh, GmfKwdCod what, //================================================================================ void MG_Hexotic_API::GmfGetLin(int iMesh, GmfKwdCod what, - int* node1, int* node2, int* node3, int* node4, int* domain ) + int* node1, int* node2, int* node3, int* node4, int* domain ) { if ( _useLib ) { #ifdef USE_MG_LIBS @@ -1040,9 +1065,9 @@ void MG_Hexotic_API::GmfGetLin(int iMesh, GmfKwdCod what, //================================================================================ void MG_Hexotic_API::GmfGetLin(int iMesh, GmfKwdCod what, - int* node1, int* node2, int* node3, int* node4, - int* node5, int* node6, int* node7, int* node8, - int* domain ) + int* node1, int* node2, int* node3, int* node4, + int* node5, int* node6, int* node7, int* node8, + int* domain ) { if ( _useLib ) { #ifdef USE_MG_LIBS @@ -1080,6 +1105,16 @@ int MG_Hexotic_API::GmfOpenMesh(const char* theFile, int rdOrWr, int ver, int d void MG_Hexotic_API::GmfSetKwd(int iMesh, GmfKwdCod what, int nb ) { + if ( iMesh == 1 && _isMesh ) + { + switch ( what ) { + case GmfVertices: _nbNodes = nb; break; + case GmfEdges: _nbEdges = nb; break; + case GmfTriangles: _nbFaces = nb; break; + default:; + } + } + if ( _useLib ) { #ifdef USE_MG_LIBS switch ( what ) { @@ -1212,6 +1247,9 @@ void MG_Hexotic_API::GmfSetLin(int iMesh, GmfKwdCod what, int node1, int node2, void MG_Hexotic_API::GmfCloseMesh( int iMesh ) { + if ( iMesh == 1 ) + _isMesh = false; + if ( _useLib ) { #ifdef USE_MG_LIBS return; diff --git a/src/HexoticPlugin/MG_Hexotic_API.hxx b/src/HexoticPlugin/MG_Hexotic_API.hxx index 1fd8401..bb91d35 100644 --- a/src/HexoticPlugin/MG_Hexotic_API.hxx +++ b/src/HexoticPlugin/MG_Hexotic_API.hxx @@ -81,6 +81,13 @@ private: LibData* _libData; std::set _openFiles; std::string _logFile; + + // count mesh entities for MG license key generation + bool _isMesh; + int _nbNodes; + int _nbEdges; + int _nbFaces; + int _nbVolumes; }; #endif -- 2.39.2