X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_Gen_i.cxx;h=b55ed358bd435e495cc3ccc3d447b8254b031c0d;hp=1594966efb61da268bfc80a222ec7869c8211730;hb=253bd8edea0f44d01e65f1fb085d04428544bd14;hpb=cae755c4b270cbfbe061312428ac77a564aa9607 diff --git a/src/SMESH_I/SMESH_Gen_i.cxx b/src/SMESH_I/SMESH_Gen_i.cxx index 1594966ef..b55ed358b 100644 --- a/src/SMESH_I/SMESH_Gen_i.cxx +++ b/src/SMESH_I/SMESH_Gen_i.cxx @@ -53,6 +53,7 @@ using namespace std; #include "SMESH_LocalLength_i.hxx" #include "SMESH_NumberOfSegments_i.hxx" #include "SMESH_MaxElementArea_i.hxx" +#include "SMESH_MaxElementVolume_i.hxx" #include "SMESHDS_Document.hxx" @@ -424,13 +425,13 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent, SALOMEDS::ListOfFileNames_var aFileSeq = new SALOMEDS::ListOfFileNames; aFileSeq->length(NUM_TMP_FILES); - TCollection_AsciiString aStudyName(SALOMEDS_Tool::GetNameFromPath(theComponent->GetStudy()->URL())); + TCollection_AsciiString aStudyName(""); // Set names of temporary files - TCollection_AsciiString filename = aStudyName + TCollection_AsciiString("SMESH.hdf"); - TCollection_AsciiString hypofile = aStudyName + TCollection_AsciiString("SMESH_Hypo.txt"); - TCollection_AsciiString algofile = aStudyName + TCollection_AsciiString("SMESH_Algo.txt"); - TCollection_AsciiString meshfile = aStudyName + TCollection_AsciiString("SMESH_Mesh.med"); + TCollection_AsciiString filename = aStudyName + TCollection_AsciiString("_SMESH.hdf"); + TCollection_AsciiString hypofile = aStudyName + TCollection_AsciiString("_SMESH_Hypo.txt"); + TCollection_AsciiString algofile = aStudyName + TCollection_AsciiString("_SMESH_Algo.txt"); + TCollection_AsciiString meshfile = aStudyName + TCollection_AsciiString("_SMESH_Mesh.med"); aFileSeq[0] = CORBA::string_dup(filename.ToCString()); aFileSeq[1] = CORBA::string_dup(hypofile.ToCString()); aFileSeq[2] = CORBA::string_dup(algofile.ToCString()); @@ -465,7 +466,7 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent, //************branch 1 : hypothesis if (gotBranch->Tag()==Tag_HypothesisRoot) { //hypothesis = tag 1 - double length,maxElementsArea; + double length,maxElementsArea,maxElementsVolume; int numberOfSegments; destFile = fopen( hypofile.ToCString() ,"w"); @@ -495,6 +496,11 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent, maxElementsArea = MEA->GetMaxElementArea(); fprintf(destFile,"%f\n",maxElementsArea); } + else if (strcmp(myHyp->GetName(),"MaxElementVolume")==0) { + SMESH::SMESH_MaxElementVolume_var MEV = SMESH::SMESH_MaxElementVolume::_narrow( myHyp ); + maxElementsVolume = MEV->GetMaxElementVolume(); + fprintf(destFile,"%f\n",maxElementsVolume); + } } } fclose(destFile); @@ -571,7 +577,7 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent, int meshId = myMesh->GetId(); SMESH_Mesh_i* meshServant = myStudyContext->mapMesh_i[meshId]; ::SMESH_Mesh& myLocMesh = meshServant->GetImpl(); - Handle(SMESHDS_Mesh) mySMESHDSMesh = myLocMesh.GetMeshDS(); + SMESHDS_Mesh* mySMESHDSMesh = myLocMesh.GetMeshDS(); SCRUTE(mySMESHDSMesh->NbNodes()); if (mySMESHDSMesh->NbNodes()>0) {//checks if the mesh is not empty @@ -842,7 +848,7 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent, aStreamFile = SALOMEDS_Tool::PutFilesToStream(tmpDir.ToCString(), aFileSeq.in(), isMultiFile); // Remove temporary files and directory - if (isMultiFile) SALOMEDS_Tool::RemoveTemporaryFiles(tmpDir.ToCString(), aFileSeq.in(), true); + if (!isMultiFile) SALOMEDS_Tool::RemoveTemporaryFiles(tmpDir.ToCString(), aFileSeq.in(), true); MESSAGE("End SMESH_Gen_i::Save"); @@ -877,11 +883,14 @@ bool SMESH_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, tmpDir.ToCString(), isMultiFile); + TCollection_AsciiString aStudyName(""); + if (isMultiFile) aStudyName = (SALOMEDS_Tool::GetNameFromPath(theComponent->GetStudy()->URL())); + // Set names of temporary files - TCollection_AsciiString filename = tmpDir + aFileSeq[0];//"SMESH.hdf"; - TCollection_AsciiString hypofile = tmpDir + aFileSeq[1];//"SMESH_Hypo.txt"; - TCollection_AsciiString algofile = tmpDir + aFileSeq[2];//"SMESH_Algo.txt"; - TCollection_AsciiString meshfile = tmpDir + aFileSeq[3];//"SMESH_Mesh.med"; + TCollection_AsciiString filename = tmpDir + aStudyName + TCollection_AsciiString("_SMESH.hdf"); + TCollection_AsciiString hypofile = tmpDir + aStudyName + TCollection_AsciiString("_SMESH_Hypo.txt"); + TCollection_AsciiString algofile = tmpDir + aStudyName + TCollection_AsciiString("_SMESH_Algo.txt"); + TCollection_AsciiString meshfile = tmpDir + aStudyName + TCollection_AsciiString("_SMESH_Mesh.med"); SALOMEDS::Study_var Study = theComponent->GetStudy(); int studyId = Study->StudyId(); @@ -945,7 +954,7 @@ bool SMESH_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, //*************** if (strcmp(name,"Hypothesis")==0) { - double length,maxElementsArea; + double length,maxElementsArea,maxElementsVolume; int numberOfSegments; hdf_group[Tag_HypothesisRoot] = new HDFgroup(name,hdf_file); @@ -1000,6 +1009,16 @@ bool SMESH_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, sprintf(objectId,"%d",MEA->GetId()); _SMESHCorbaObj[string("Hypo_")+string(objectId)] = iorString; } + else if (strcmp(aLine,"MaxElementVolume")==0) { + SMESH::SMESH_Hypothesis_var myHyp = this->CreateHypothesis(aLine,studyId); + SMESH::SMESH_MaxElementVolume_var MEV = SMESH::SMESH_MaxElementVolume::_narrow( myHyp ); + fscanf(loadedFile,"%s",aLine); + maxElementsVolume = atof(aLine); + MEV->SetMaxElementVolume(maxElementsVolume); + string iorString = _orb->object_to_string(MEV); + sprintf(objectId,"%d",MEV->GetId()); + _SMESHCorbaObj[string("Hypo_")+string(objectId)] = iorString; + } } @@ -1136,7 +1155,7 @@ bool SMESH_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, int meshId = myNewMesh->GetId(); SMESH_Mesh_i* meshServant = myStudyContext->mapMesh_i[meshId]; ::SMESH_Mesh& myLocMesh = meshServant->GetImpl(); - Handle(SMESHDS_Mesh) mySMESHDSMesh = myLocMesh.GetMeshDS(); + SMESHDS_Mesh* mySMESHDSMesh = myLocMesh.GetMeshDS(); DriverMED_R_SMESHDS_Mesh* myReader = new DriverMED_R_SMESHDS_Mesh;