X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FMEDWrapper%2FV2_2%2FMED_V2_2_Wrapper.cxx;h=934839742e4bb013a7fb8fb5854f2fa98d9a792a;hb=d115566909d97a312ee7794c7c55add3f0328f9d;hp=7222232044f7141f99f79907c79d7c8302c37696;hpb=513a8ebdac590b2e23d81adcb2fc1de76df90eef;p=modules%2Fsmesh.git diff --git a/src/MEDWrapper/V2_2/MED_V2_2_Wrapper.cxx b/src/MEDWrapper/V2_2/MED_V2_2_Wrapper.cxx index 722223204..934839742 100644 --- a/src/MEDWrapper/V2_2/MED_V2_2_Wrapper.cxx +++ b/src/MEDWrapper/V2_2/MED_V2_2_Wrapper.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 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 @@ -163,11 +163,26 @@ namespace MED //--------------------------------------------------------------- - TVWrapper::TVWrapper(const std::string& theFileName): + TVWrapper::TVWrapper(const std::string& theFileName): myFile(new TFile(theFileName)) - {} - - + { + TErr aRet; + myFile->Open( eLECTURE_ECRITURE, &aRet ); + // if(aRet < 0) + // myFile->Close(); + // myFile->Open( eLECTURE_AJOUT, &aRet ); + // } + if(aRet < 0) { + myFile->Close(); + myFile->Open( eLECTURE, &aRet ); + } + if(aRet < 0) { + myFile->Close(); + myFile->Open( eCREATION, &aRet ); + } + } + + //---------------------------------------------------------------------------- TInt TVWrapper @@ -945,22 +960,19 @@ namespace MED MED::TMeshInfo& aMeshInfo = *theInfo.myMeshInfo; - TValueHolder aMeshName(aMeshInfo.myName); - TValueHolder anIndex(theInfo.myIndex); - TInt aNbElem = (TInt)theInfo.myElemNum->size(); - TValueHolder aConn(theInfo.myConn); - TValueHolder anEntity(theInfo.myEntity); + TValueHolder aMeshName(aMeshInfo.myName); + TValueHolder anIndex (theInfo.myIndex); + TValueHolder aConn (theInfo.myConn); + TValueHolder anEntity (theInfo.myEntity); + TValueHolder aGeom (theInfo.myGeom); TValueHolder aConnMode(theInfo.myConnMode); + TInt aNbElem = (TInt)theInfo.myElemNum->size(); TErr aRet; - aRet = MEDmeshPolygonRd(myFile->Id(), - &aMeshName, - MED_NO_DT, - MED_NO_IT, - anEntity, - aConnMode, - &anIndex, - &aConn); + aRet = MEDmeshPolygon2Rd(myFile->Id(), &aMeshName, + MED_NO_DT, MED_NO_IT, + anEntity, aGeom, + aConnMode, &anIndex, &aConn); if(theErr) *theErr = aRet; @@ -968,18 +980,18 @@ namespace MED EXCEPTION(std::runtime_error,"GetPolygoneInfo - MEDmeshPolygonRd(...)"); if(theInfo.myIsElemNames){ - GetNames(theInfo,aNbElem,theInfo.myEntity,ePOLYGONE,&aRet); + GetNames(theInfo,aNbElem,theInfo.myEntity,theInfo.myGeom,&aRet); if(theErr) *theErr = aRet; } if(theInfo.myIsElemNum){ - GetNumeration(theInfo,aNbElem,theInfo.myEntity,ePOLYGONE,&aRet); + GetNumeration(theInfo,aNbElem,theInfo.myEntity,theInfo.myGeom,&aRet); if(theErr) *theErr = aRet; } - GetFamilies(theInfo,aNbElem,theInfo.myEntity,ePOLYGONE,&aRet); + GetFamilies(theInfo,aNbElem,theInfo.myEntity,theInfo.myGeom,&aRet); if(theErr) *theErr = aRet; } @@ -1008,37 +1020,32 @@ namespace MED MED::TPolygoneInfo& anInfo = const_cast(theInfo); MED::TMeshInfo& aMeshInfo = *anInfo.myMeshInfo; - TValueHolder aMeshName(aMeshInfo.myName); - TValueHolder anIndex(anInfo.myIndex); - TValueHolder aConn(anInfo.myConn); - TValueHolder anEntity(anInfo.myEntity); + TValueHolder aMeshName(aMeshInfo.myName); + TValueHolder anIndex (anInfo.myIndex); + TValueHolder aConn (anInfo.myConn); + TValueHolder anEntity (anInfo.myEntity); + TValueHolder aGeom (anInfo.myGeom); TValueHolder aConnMode(anInfo.myConnMode); - TErr aRet = MEDmeshPolygonWr(myFile->Id(), - &aMeshName, - MED_NO_DT, - MED_NO_IT, - MED_UNDEF_DT, - anEntity, - aConnMode, - anInfo.myNbElem + 1, - &anIndex, - &aConn); - - if(theErr) + TErr aRet = MEDmeshPolygon2Wr(myFile->Id(), &aMeshName, + MED_NO_DT, MED_NO_IT, MED_UNDEF_DT, + anEntity, aGeom, + aConnMode, anInfo.myNbElem + 1, + &anIndex, &aConn); + if(theErr) *theErr = aRet; else if(aRet < 0) EXCEPTION(std::runtime_error,"SetPolygoneInfo - MEDmeshPolygonWr(...)"); - SetNames(anInfo,theInfo.myEntity,ePOLYGONE,&aRet); + SetNames(anInfo,theInfo.myEntity,anInfo.myGeom,&aRet); if(theErr) *theErr = aRet; - SetNumeration(anInfo,theInfo.myEntity,ePOLYGONE,&aRet); + SetNumeration(anInfo,theInfo.myEntity,anInfo.myGeom,&aRet); if(theErr) *theErr = aRet; - SetFamilies(anInfo,theInfo.myEntity,ePOLYGONE,&aRet); + SetFamilies(anInfo,theInfo.myEntity,anInfo.myGeom,&aRet); if(theErr) *theErr = aRet; } @@ -1079,7 +1086,7 @@ namespace MED MED_NO_DT, MED_NO_IT, med_entity_type(theEntity), - MED_POLYGON, + med_geometry_type(theGeom), MED_CONNECTIVITY, med_connectivity_mode(theConnMode), &chgt, @@ -1415,16 +1422,14 @@ namespace MED } return anInfo; } - - + + //----------------------------------------------------------------- - TInt - TVWrapper - ::GetNbCells(const MED::TMeshInfo& theMeshInfo, - EEntiteMaillage theEntity, - EGeometrieElement theGeom, - EConnectivite theConnMode, - TErr* theErr) + TInt TVWrapper::GetNbCells(const MED::TMeshInfo& theMeshInfo, + EEntiteMaillage theEntity, + EGeometrieElement theGeom, + EConnectivite theConnMode, + TErr* theErr) { TFileWrapper aFileWrapper(myFile,eLECTURE,theErr); @@ -1434,48 +1439,50 @@ namespace MED MED::TMeshInfo& aMeshInfo = const_cast(theMeshInfo); TValueHolder aMeshName(aMeshInfo.myName); med_bool chgt,trsf; - if(theGeom!=MED::ePOLYGONE && theGeom!=MED::ePOLYEDRE && theGeom != MED::eBALL) + switch ( theGeom ) { - return MEDmeshnEntity(myFile->Id(), - &aMeshName, - MED_NO_DT, - MED_NO_IT, - med_entity_type(theEntity), - med_geometry_type(theGeom), - MED_CONNECTIVITY, - med_connectivity_mode(theConnMode), - &chgt, - &trsf); - } - else if(theGeom==MED::ePOLYGONE) + case MED::ePOLYGONE: + case MED::ePOLYGON2: { - return MEDmeshnEntity(myFile->Id(),&aMeshName,MED_NO_DT,MED_NO_IT,med_entity_type(theEntity), - MED_POLYGON,MED_INDEX_NODE,med_connectivity_mode(theConnMode),&chgt,&trsf)-1; + return MEDmeshnEntity(myFile->Id(),&aMeshName, + MED_NO_DT,MED_NO_IT, + med_entity_type(theEntity),med_geometry_type(theGeom), + MED_INDEX_NODE,med_connectivity_mode(theConnMode), + &chgt,&trsf)-1; } - else if ( theGeom==MED::ePOLYEDRE ) + case MED::ePOLYEDRE: { - return MEDmeshnEntity(myFile->Id(),&aMeshName,MED_NO_DT,MED_NO_IT,med_entity_type(theEntity), - MED_POLYHEDRON,MED_INDEX_FACE,med_connectivity_mode(theConnMode),&chgt,&trsf)-1; + return MEDmeshnEntity(myFile->Id(),&aMeshName, + MED_NO_DT,MED_NO_IT, + med_entity_type(theEntity),MED_POLYHEDRON, + MED_INDEX_FACE,med_connectivity_mode(theConnMode), + &chgt,&trsf)-1; } - else if ( theGeom==MED::eBALL ) + case MED::eBALL: { return GetNbBalls( theMeshInfo ); } + default: + { + return MEDmeshnEntity(myFile->Id(),&aMeshName, + MED_NO_DT,MED_NO_IT, + med_entity_type(theEntity),med_geometry_type(theGeom), + MED_CONNECTIVITY,med_connectivity_mode(theConnMode), + &chgt,&trsf); + } + } return 0; } //---------------------------------------------------------------------------- - void - TVWrapper - ::GetCellInfo(MED::TCellInfo& theInfo, - TErr* theErr) + void TVWrapper::GetCellInfo(MED::TCellInfo& theInfo, TErr* theErr) { TFileWrapper aFileWrapper(myFile,eLECTURE,theErr); if(theErr && *theErr < 0) return; - + MED::TMeshInfo& aMeshInfo = *theInfo.myMeshInfo; TValueHolder aMeshName (aMeshInfo.myName); @@ -2732,7 +2739,7 @@ namespace MED } if(aMaillageType == eSTRUCTURE && aGrilleType != eGRILLE_STANDARD){ - ETable aTable; + ETable aTable = eCOOR_IND1; for(med_int anAxis = 1; anAxis <= aMeshInfo.myDim; anAxis++){ switch(anAxis){ case 1 : @@ -2871,5 +2878,5 @@ namespace MED EXCEPTION(std::runtime_error,"GetGrilleInfo - MEDmeshGridStructRd(...)"); } - } + } }