} // namespace
+
+
//=============================================================================
/*!
*
//================================================================================
NETGENPlugin_NetgenLibWrapper::NETGENPlugin_NetgenLibWrapper():
- _ngMesh(0)
+ _ngMesh(0),_tmpDir(SALOMEDS_Tool::GetTmpDir())
{
if ( instanceCounter() == 0 )
{
#include <SMDS_MeshElement.hxx>
#include <SMESH_Algo.hxx>
#include <SMESH_ProxyMesh.hxx>
+#include <SALOMEDS_Tool.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
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
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;