0,
NULL
);
- if ( msgLen > 0 )
- error = (char*) cstr;
-
- LocalFree(cstr);
+ if ( msgLen > 0 ) {
+# if defined( UNICODE )
+ error = Kernel_Utils::encode_s((wchar_t*)cstr);
+# else
+ error = (char*)cstr;
+# endif
+ LocalFree(cstr);
+ }
- return msgLen;
+ return (bool)msgLen;
#endif
}
#ifdef WIN32
- std::string outFile = tmpDir + "libMeshGemsKeyGenerator.dll";
+ std::string outFile = tmpDir + "MeshGemsKeyGenerator.dll";
// use wget (== Invoke-WebRequest) PowerShell command available since Windows 7
std::string psCmd = "wget -Uri " + url + " -OutFile " + outFile;
- std::string cmd = "start powershell.exe " + psCmd;
+ std::string cmd = "powershell.exe " + psCmd;
#else
if ( ok )
libraryFile._name = outFile;
+ else
+ error = "Can't download file " + url;
return ok;
}
if ( !loadLibrary( error, libraryFile ))
return false;
+ bool ok = false;
typedef bool (*SignFun)(void* );
- SignFun signFun = (SignFun) GetProc( theLibraryHandle, "SignCAD" );
+ SignFun signFun = (SignFun) GetProc( theLibraryHandle, "SignCAD" );
if ( !signFun )
{
if ( ! getLastError( error ))
error = SMESH_Comment( "Can't find symbol 'SignCAD' in '") << getenv( theEnvVar ) << "'";
}
+ else
+ {
+ SMESH_TRY;
- bool ok;
-
- SMESH_TRY;
-
- ok = signFun( meshgems_cad );
-
- SMESH_CATCH( SMESH::returnError );
+ ok = signFun( meshgems_cad );
- if ( !error.empty() )
- ok = false;
- else if ( !ok )
- error = "SignCAD() failed (located in '" + libraryFile._name + "')";
+ SMESH_CATCH( SMESH::returnError );
+ if ( !error.empty() )
+ ok = false;
+ else if ( !ok )
+ error = "SignCAD() failed (located in '" + libraryFile._name + "')";
+ }
return ok;
}
if ( !loadLibrary( error, libraryFile ))
return false;
+ bool ok = false;
typedef bool (*SignFun)(void* );
SignFun signFun = (SignFun) GetProc( theLibraryHandle, "SignMesh" );
if ( !signFun )
if ( ! getLastError( error ))
error = SMESH_Comment( "Can't find symbol 'SignMesh' in '") << getenv( theEnvVar ) << "'";
}
- bool ok;
-
- SMESH_TRY;
-
- ok = signFun( meshgems_mesh );
+ else
+ {
+ SMESH_TRY;
- SMESH_CATCH( SMESH::returnError );
+ ok = signFun( meshgems_mesh );
- if ( !error.empty() )
- ok = false;
- else if ( !ok )
- error = "SignMesh() failed (located in '" + libraryFile._name + "')";
+ SMESH_CATCH( SMESH::returnError );
+ if ( !error.empty() )
+ ok = false;
+ else if ( !ok )
+ error = "SignMesh() failed (located in '" + libraryFile._name + "')";
+ }
return ok;
}
if ( ! getLastError( error ))
error = SMESH_Comment( "Can't find symbol 'GetKey' in '") << getenv( theEnvVar ) << "'";
}
- key = keyFun( gmfFile, nbVertex, nbEdge, nbFace, nbVol );
-
+ else
+ {
+ key = keyFun( gmfFile, nbVertex, nbEdge, nbFace, nbVol );
+ }
if ( key.empty() )
error = "GetKey() failed (located in '" + libraryFile._name + "')";
int nbVol,
std::string& error);
- SMESHUtils_EXPORT bool CheckKeyGeLibrary( std::string& error );
+ SMESHUtils_EXPORT bool CheckKeyGenLibrary( std::string& error );
SMESHUtils_EXPORT std::string GetLibraryName();
}
${PROJECT_SOURCE_DIR}/src/SMDS
${PROJECT_SOURCE_DIR}/src/SMESH
${PROJECT_SOURCE_DIR}/src/SMESH_I
+ ${PROJECT_SOURCE_DIR}/src/Driver
+ ${PROJECT_SOURCE_DIR}/src/DriverGMF
${CMAKE_CURRENT_SOURCE_DIR}
${PROJECT_BINARY_DIR}/idl
)
ELSE()
SWIG_ADD_LIBRARY(SMeshHelper LANGUAGE python SOURCES ${SMeshHelper_SOURCES})
ENDIF()
-SWIG_LINK_LIBRARIES(SMeshHelper ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} SMESHEngine )
+SWIG_LINK_LIBRARIES(SMeshHelper ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} SMESHEngine MeshDriverGMF )
SWIG_CHECK_GENERATION(SMeshHelper)
IF(WIN32)
SET_TARGET_PROPERTIES(_SMeshHelper PROPERTIES DEBUG_OUTPUT_NAME _SMeshHelper_d)
#include <cstring>
+#include <DriverGMF_Read.hxx>
+#include <SMESH_MGLicenseKeyGen.hxx>
+
+
std::string BuildSMESHInstanceInternal()
{
Engines::EngineComponent_var zeRef = RetrieveSMESHInstance();
CORBA::String_var ior = KERNEL::getORB()->object_to_string(zeRef);
return std::string(ior.in());
}
+
+std::string GetMGLicenseKeyImpl(const char* gmfFile)
+{
+ smIdType nbVertex, nbEdge, nbFace, nbVol;
+ DriverGMF_Read gmfReader;
+ gmfReader.SetFile( gmfFile );
+ gmfReader.GetMeshInfo( nbVertex, nbEdge, nbFace, nbVol );
+
+ std::string errorTxt;
+ std::string key = SMESHUtils_MGLicenseKeyGen::GetKey( gmfFile,
+ FromSmIdType<int>( nbVertex ),
+ FromSmIdType<int>( nbEdge ),
+ FromSmIdType<int>( nbFace ),
+ FromSmIdType<int>( nbVol ),
+ errorTxt );
+ if ( !errorTxt.empty() )
+ {
+ std::cerr << "Error: Pb with MeshGems license: " << errorTxt << std::endl;
+ key = "<" + errorTxt + ">";
+ }
+ return key;
+}
#include <string>
std::string BuildSMESHInstanceInternal();
+
+std::string GetMGLicenseKeyImpl(const char* gmfFile);
{
return BuildSMESHInstanceInternal();
}
+
+ std::string GetMGLicenseKey(const char* gmfFile)
+ {
+ return GetMGLicenseKeyImpl( gmfFile );
+ }
}
def PrepareLigneCommande(self):
"""
- #use doc examples of mg-cleaner:
- ls -al /data/tmplgls/salome/prerequis/install/COMMON_64/MeshGems-1.0/bin
- source /data/tmplgls/salome/prerequis/install/LICENSE/dlim8.var.sh
- export PATH=/data/tmplgls/salome/prerequis/install/COMMON_64/MeshGems-1.0/bin/Linux_64:$PATH
- cp -r /data/tmplgls/salome/prerequis/install/COMMON_64/MeshGems-1.0/examples .
- cd examples
- mg-cleaner.exe --help
- mg-cleaner.exe --in case7.mesh --out case7-test.mesh --check
- mg-cleaner.exe case7.mesh case7-fix.mesh --fix
- mg-cleaner.exe --in Porsche.mesh --out Porsche-test.mesh --check
- mg-cleaner.exe --in Porsche.mesh --out Porschefix.mesh --fix
- mg-cleaner.exe --in Porsche.mesh --out PorscheNewfix.mesh --fix --resolution_length 0.03
"""
#self.commande="mg-cleaner.exe --in " + self.fichierIn + " --out " + self.fichierOut + " --fix2pass"
if not self.CB_ComputedOverlapDistance.isChecked(): #computed default
self.commande+=" --overlap_distance " + self.SP_toStr(self.SP_OverlapDistance)
self.commande+=" --overlap_angle " + str(self.SP_OverlapAngle.value())
+
+ import SMeshHelper
+ key = SMeshHelper.GetMGLicenseKey( self.fichierIn )
+ self.commande+=' --key ' + key
+
if verbose: print(("INFO: MGCCleaner command:\n %s" % self.commande))
return True
verbose = True
-force = os.getenv("FORCE_DISTENE_LICENSE_FILE")
-if force != None:
- os.environ["DISTENE_LICENSE_FILE"] = force
- os.environ["DLIM8VAR"] = "NOTHING"
-
class MGCleanerMonViewText(Ui_ViewExe, QDialog):
"""
Classe permettant la visualisation de texte
import tempfile
from qtsalome import QFileDialog, QMessageBox
- #prior test to avoid unnecessary user GUI work with ending crash
- try :
- os.environ['DISTENE_LICENSE_FILE']
- except:
- QMessageBox.warning(None, "Products", """\
-Distene's product MeshGem Cleaner is not installed.
-required environment variable:
-DISTENE_LICENSE_FILE='.../dlim8.var.sh'""")
- return
import MGCleanerMonPlugDialog
window = MGCleanerMonPlugDialog.getDialog()
window.show()
verbose = True
-force = os.getenv("FORCE_DISTENE_LICENSE_FILE")
-if force != None:
- os.environ["DISTENE_LICENSE_FILE"] = force
- os.environ["DLIM8VAR"] = "NOTHING"
-
class MonViewText(Ui_ViewExe, QDialog):
"""
Classe permettant la visualisation de texte
self.commande+=' --in "' + self.fichierIn +'"'
self.commande+=' --out "' + self.fichierOut +'"'
+
+ import SMeshHelper
+ key = SMeshHelper.GetMGLicenseKey( self.fichierIn )
+ self.commande+=' --key ' + key
print(self.commande)
return True
import tempfile
from qtsalome import QFileDialog, QMessageBox
- #prior test to avoid unnecessary user GUI work with ending crash
- try :
- os.environ['DISTENE_LICENSE_FILE']
- except:
- QMessageBox.warning(None,"Products","""\
-Distene's product MeshGem SurfOpt is not installed.
-required environment variable:
-DISTENE_LICENSE_FILE='.../dlim8.var.sh'""")
- return
import monYamsPlugDialog
window = monYamsPlugDialog.getDialog()
window.show()