X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FDriverMED%2FDriverMED_W_SMESHDS_Mesh.cxx;h=a4774fe23b778595dce82f295a990c69d2755ce5;hp=c33517ca0c009f8f13e9f290388df08dad7d73c3;hb=59fe51ff7f83a733aee46ecad7adb391bc4323bf;hpb=4c16067d4281f56bd07d3f92fb63fff9c0c1d169 diff --git a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx index c33517ca0..a4774fe23 100644 --- a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx +++ b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -35,6 +35,8 @@ #include "SMDS_SetIterator.hxx" #include "SMESHDS_Mesh.hxx" +#include + #include #include #include @@ -50,7 +52,6 @@ using namespace MED; DriverMED_W_SMESHDS_Mesh::DriverMED_W_SMESHDS_Mesh(): - myMedVersion(MED::eV2_2), myAllSubMeshes (false), myDoGroupOfNodes (false), myDoGroupOfEdges (false), @@ -60,19 +61,14 @@ DriverMED_W_SMESHDS_Mesh::DriverMED_W_SMESHDS_Mesh(): myDoGroupOfBalls(false), myAutoDimension(false), myAddODOnVertices(false), - myDoAllInGroups(false) + myDoAllInGroups(false), + myVersion(-1), + myZTolerance(-1.) {} -void DriverMED_W_SMESHDS_Mesh::SetFile(const std::string& theFileName, - MED::EVersion theId) -{ - Driver_SMESHDS_Mesh::SetFile(theFileName); - myMedVersion = theId; - //MESSAGE("myMedVersion:"<(majeur, mineur, release); + majeur=MED_MAJOR_NUM; + mineur=MED_MINOR_NUM; + release=MED_RELEASE_NUM; TInt imposedMineur = mineur; - switch( theVersion ) { - case MED::eV2_1 : - case MED::eV2_2 : - case MED::eLATEST : break; - case MED::eMINOR_0 : imposedMineur = 0; break; - case MED::eMINOR_1 : imposedMineur = 1; break; - case MED::eMINOR_2 : imposedMineur = 2; break; - case MED::eMINOR_3 : imposedMineur = 3; break; - case MED::eMINOR_4 : imposedMineur = 4; break; - case MED::eMINOR_5 : imposedMineur = 5; break; - case MED::eMINOR_6 : imposedMineur = 6; break; - case MED::eMINOR_7 : imposedMineur = 7; break; - case MED::eMINOR_8 : imposedMineur = 8; break; - case MED::eMINOR_9 : imposedMineur = 9; break; - case MED::eVUnknown : imposedMineur = mineur; break; - } - if (imposedMineur > mineur) + + if (theMinor < 0) + imposedMineur = mineur; + else if (theMinor > MED_MINOR_NUM) imposedMineur = mineur; + else + imposedMineur = theMinor; + ostringstream name; if ( theNbDigits > 0 ) name << majeur; @@ -431,6 +418,8 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform() anIsXDimension = (aBounds[1] - aBounds[0]) + abs(aBounds[1]) + abs(aBounds[0]) > EPS; anIsYDimension = (aBounds[3] - aBounds[2]) + abs(aBounds[3]) + abs(aBounds[2]) > EPS; anIsZDimension = (aBounds[5] - aBounds[4]) + abs(aBounds[5]) + abs(aBounds[4]) > EPS; + if ( myZTolerance > 0 && anIsZDimension ) + anIsZDimension = (aBounds[5] > myZTolerance || aBounds[4] < -myZTolerance ); aSpaceDimension = Max( aMeshDimension, anIsXDimension + anIsYDimension + anIsZDimension ); if ( !aSpaceDimension ) aSpaceDimension = 3; @@ -471,8 +460,8 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform() break; } } - //MESSAGE("myMedVersion:"<CrMeshInfo(aMeshDimension,aSpaceDimension,aMeshName); //MESSAGE("Add - aMeshName : "<GetName()); myMed->SetMeshInfo(aMeshInfo); @@ -564,6 +553,10 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform() for(TInt iCoord = 0; iCoord < aSpaceDimension; iCoord++){ aTCoordSlice[iCoord] = aCoordHelperPtr->GetCoord(iCoord); } + if ( aSpaceDimension == 3 && + -myZTolerance < aTCoordSlice[2] && aTCoordSlice[2] < myZTolerance ) + aTCoordSlice[2] = 0.; + // node number int aNodeID = aCoordHelperPtr->GetID(); aNodeInfo->SetElemNum( iNode, aNodeID );