From: jfa Date: Wed, 19 Jul 2023 15:12:36 +0000 (+0100) Subject: Merge branch 'V9_11_BR' X-Git-Tag: V9_12_0a1~4 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=8c9a6bc255efb506c3daa676f937af5b7fada5c1;hp=ab749f8f58fd82c99134f77f8f7e9a9a3f895fd1;p=plugins%2Fnetgenplugin.git Merge branch 'V9_11_BR' --- diff --git a/src/NETGENPlugin/NETGENPlugin_Mesher.cxx b/src/NETGENPlugin/NETGENPlugin_Mesher.cxx index 331192c..3021587 100644 --- a/src/NETGENPlugin/NETGENPlugin_Mesher.cxx +++ b/src/NETGENPlugin/NETGENPlugin_Mesher.cxx @@ -504,6 +504,8 @@ namespace } // namespace + + //============================================================================= /*! * @@ -4440,7 +4442,7 @@ int& NETGENPlugin_NetgenLibWrapper::instanceCounter() //================================================================================ NETGENPlugin_NetgenLibWrapper::NETGENPlugin_NetgenLibWrapper(): - _ngMesh(0) + _ngMesh(0),_tmpDir(SALOMEDS_Tool::GetTmpDir()) { if ( instanceCounter() == 0 ) { diff --git a/src/NETGENPlugin/NETGENPlugin_Mesher.hxx b/src/NETGENPlugin/NETGENPlugin_Mesher.hxx index 7f028cb..fe66ad2 100644 --- a/src/NETGENPlugin/NETGENPlugin_Mesher.hxx +++ b/src/NETGENPlugin/NETGENPlugin_Mesher.hxx @@ -35,7 +35,9 @@ #include #include #include - +#include +#include "Basics_Utils.hxx" +#include "SALOME_Basics.hxx" #include namespace nglib { @@ -59,6 +61,32 @@ namespace netgen { class OCCGeometry; class Mesh; } + +// Class for temporary folder switching +class ChdirRAII +{ + public: +#ifndef WIN32 + ChdirRAII(const std::string& wd):_wd(wd) { if(_wd.empty()) return ; char *pwd(get_current_dir_name()); _od = pwd; free(pwd); chdir(_wd.c_str()); } + ~ChdirRAII() { if(_od.empty()) return ; chdir(_od.c_str()); } +#else + ChdirRAII(const std::string& wd) : _wd(wd) { + if (_wd.empty()) + return; + TCHAR pwd[MAX_PATH]; + GetCurrentDirectory(sizeof(pwd), pwd); + _od = Kernel_Utils::utf8_encode_s(pwd); + SetCurrentDirectory(Kernel_Utils::utf8_decode_s(_wd).c_str()); + } + ~ChdirRAII() { + if (_od.empty()) return; + SetCurrentDirectory(Kernel_Utils::utf8_decode_s(_od).c_str()); + } +#endif + private: + std::string _wd; + std::string _od; +}; //============================================================================= /*! * \brief Struct storing nb of entities in netgen mesh @@ -111,6 +139,9 @@ struct NETGENPLUGIN_EXPORT NETGENPlugin_NetgenLibWrapper std::string getOutputFileName(); void removeOutputFile(); std::string _outputFileName; + // This will change current directory when the class is instanciated and switch + ChdirRAII _tmpDir; + ostream * _ngcout; ostream * _ngcerr;