X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_PreMeshInfo.cxx;h=130330c1ca12d76a3a172b01ad19222489389003;hb=0921263864977d53ebb778e3d1c9d88d61a4912f;hp=db4a1779073d950e25d43722324a598494b46ca3;hpb=bd8f1aee7c78f7d2eb82bd4fec5e08c9e3d280ce;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_PreMeshInfo.cxx b/src/SMESH_I/SMESH_PreMeshInfo.cxx index db4a17790..130330c1c 100644 --- a/src/SMESH_I/SMESH_PreMeshInfo.cxx +++ b/src/SMESH_I/SMESH_PreMeshInfo.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 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 @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -26,7 +26,9 @@ #include "SMESH_PreMeshInfo.hxx" +#include "DriverMED.hxx" #include "DriverMED_R_SMESHDS_Mesh.h" +#include "MED_Factory.hxx" #include "SMDS_EdgePosition.hxx" #include "SMDS_FacePosition.hxx" #include "SMDS_SpacePosition.hxx" @@ -38,8 +40,6 @@ #include "SMESH_Mesh_i.hxx" #include "SMESH_subMesh_i.hxx" -#include - #include #include #include @@ -228,53 +228,17 @@ namespace static map< MED::EGeometrieElement, SMDSAbs_EntityType> med2smeshTypes; if ( med2smeshTypes.empty() ) { - med2smeshTypes[ MED::ePOINT1 ] = SMDSEntity_0D ; - med2smeshTypes[ MED::eSEG2 ] = SMDSEntity_Edge ; - med2smeshTypes[ MED::eSEG3 ] = SMDSEntity_Quad_Edge ; - med2smeshTypes[ MED::eTRIA3 ] = SMDSEntity_Triangle ; - med2smeshTypes[ MED::eTRIA6 ] = SMDSEntity_Quad_Triangle ; - med2smeshTypes[ MED::eQUAD4 ] = SMDSEntity_Quadrangle ; - med2smeshTypes[ MED::eQUAD8 ] = SMDSEntity_Quad_Quadrangle ; - med2smeshTypes[ MED::eQUAD9 ] = SMDSEntity_BiQuad_Quadrangle ; - med2smeshTypes[ MED::eTETRA4 ] = SMDSEntity_Tetra ; - med2smeshTypes[ MED::ePYRA5 ] = SMDSEntity_Pyramid ; - med2smeshTypes[ MED::ePENTA6 ] = SMDSEntity_Penta ; - med2smeshTypes[ MED::eHEXA8 ] = SMDSEntity_Hexa ; - med2smeshTypes[ MED::eOCTA12 ] = SMDSEntity_Hexagonal_Prism ; - med2smeshTypes[ MED::eTETRA10 ] = SMDSEntity_Quad_Tetra ; - med2smeshTypes[ MED::ePYRA13 ] = SMDSEntity_Quad_Pyramid ; - med2smeshTypes[ MED::ePENTA15 ] = SMDSEntity_Quad_Penta ; - med2smeshTypes[ MED::eHEXA20 ] = SMDSEntity_Quad_Hexa ; - med2smeshTypes[ MED::eHEXA27 ] = SMDSEntity_TriQuad_Hexa ; - med2smeshTypes[ MED::ePOLYGONE ] = SMDSEntity_Polygon ; - med2smeshTypes[ MED::ePOLYEDRE ] = SMDSEntity_Polyhedra ; - med2smeshTypes[ MED::eNONE ] = SMDSEntity_Node ; - med2smeshTypes[ MED::eBALL ] = SMDSEntity_Ball ; + for ( int iG = 0; iG < SMDSEntity_Last; ++iG ) + { + SMDSAbs_EntityType smdsType = (SMDSAbs_EntityType) iG; + MED::EGeometrieElement medType = + (MED::EGeometrieElement) DriverMED::GetMedGeoType( smdsType ); + med2smeshTypes.insert( make_pair( medType, smdsType )); + } } return med2smeshTypes; } - //================================================================================ - /*! - * \brief Return a vector intended to retrieve - * MED::EGeometrieElement by SMDSAbs_EntityType - */ - //================================================================================ - - const vector& mesh2medElemType() - { - static vector mesh2medElemTypes; - if ( mesh2medElemTypes.empty() ) - { - mesh2medElemTypes.resize( SMDSEntity_Last + 1 ); - Tmed2smeshElemTypeMap::const_iterator me2sme = med2smeshElemTypeMap().begin(); - Tmed2smeshElemTypeMap::const_iterator me2smeEnd = med2smeshElemTypeMap().end(); - for ( ; me2sme != me2smeEnd; ++me2sme ) - mesh2medElemTypes[ me2sme->second ] = me2sme->first; - } - return mesh2medElemTypes; - } - //================================================================================ /*! * \brief Writes meshInfo into a HDF file @@ -285,17 +249,17 @@ namespace const std::string& name, HDFgroup* hdfGroup) { - // we use med identification of element (MED::EGeometrieElement>) types + // we use med identification of element (MED::EGeometrieElement) types // but not enum SMDSAbs_EntityType because values of SMDSAbs_EntityType may // change at insertion of new items in the middle. - const vector& medTypes = mesh2medElemType(); + //const vector& medTypes = mesh2medElemType(); vector data; for ( size_t i = 0; i < meshInfo->length(); ++i ) if ( meshInfo[i] > 0 ) { - data.push_back( medTypes[ i ] ); + data.push_back( DriverMED::GetMedGeoType( SMDSAbs_EntityType( i ))); //medTypes[ i ] ); data.push_back( meshInfo[ i ] ); }