- SMESH_Mesh& srcMesh2 = srcMesh_i->GetImpl();
-
- // TODO: Get it
- CORBA::String_var mesh_ior=GetORB()->object_to_string(mesh);
- std::string mesh_id = mesh_ior.in();
- std::string dual_mesh_file="/tmp/test_dual.med";
- std::string mesh_name = "MESH";
-
- std::string python_code;
- python_code += "import sys\n";
- python_code += "import salome\n";
- python_code += "import medcoupling as mc\n";
- python_code += "from math import pi\n";
- python_code += "salome.salome_init()\n";
- python_code += "import GEOM\n";
- python_code += "from salome.geom import geomBuilder\n";
- python_code += "geompy = geomBuilder.New()\n";
- python_code += "import SMESH, SALOMEDS\n";
- python_code += "from salome.smesh import smeshBuilder\n";
- python_code += "smesh = smeshBuilder.New()\n";
- python_code += "def create_dual_mesh(mesh_ior, output_file):\n";
- python_code += " mesh = salome.orb.string_to_object(mesh_ior)\n";
- python_code += " shape = mesh.GetShapeToMesh()\n";
- python_code += " if not mesh:\n";
- python_code += " raise Exception(\"Could not find mesh using id: \", mesh_id)\n";
- python_code += " int_ptr = mesh.ExportMEDCoupling(True, True)\n";
- python_code += " dab = mc.FromPyIntPtrToDataArrayByte(int_ptr)\n";
- python_code += " tetras = mc.MEDFileMesh.New(dab)[0]\n";
- python_code += " tetras = mc.MEDCoupling1SGTUMesh(tetras)\n";
- python_code += " polyh = tetras.computeDualMesh()\n";
- python_code += " skin = tetras.buildUnstructured().computeSkin()\n";
- python_code += " skin_polyh = polyh.buildUnstructured().computeSkin()\n";
- python_code += " allNodesOnSkinPolyh = skin_polyh.computeFetchedNodeIds()\n";
- python_code += " allNodesOnSkin = skin.computeFetchedNodeIds()\n";
- python_code += " ptsAdded = allNodesOnSkinPolyh.buildSubstraction(allNodesOnSkin)\n";
- python_code += " ptsAddedMesh = mc.MEDCouplingUMesh.Build0DMeshFromCoords( skin_polyh.getCoords()[ptsAdded] )\n";
- python_code += " ptsAddedCoo = ptsAddedMesh.getCoords()\n";
- python_code += " ptsAddedCooModified = ptsAddedCoo[:]\n";
- python_code += " polyh.setName(\"MESH\")\n";
- python_code += " polyh.write(output_file)\n";
+ CORBA::String_var mesh_var=GetORB()->object_to_string(mesh);
+ std::string mesh_ior = mesh_var.in();
+
+ //temporary folder for the generation of the med file
+ fs::path tmp_folder = fs::temp_directory_path() / fs::unique_path(fs::path("dual_mesh-%%%%"));
+ fs::create_directories(tmp_folder);
+ fs::path dual_mesh_file = tmp_folder / fs::path("tmp_dual_mesh.med");
+ std::string mesh_name = meshName;
+ MESSAGE("Working in folder" + tmp_folder.string());