X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FDriverMED%2FDriverMED_R_SMESHDS_Mesh.cxx;h=b3c91db53016b0149fc8870e29f6c4201a26d41e;hp=74c3e6da8b73f060b0de531b9d2a06d2c29093aa;hb=30ce546b0c5099ad1112929e2db94810e683e54b;hpb=831ca6c828271732e46fba73b196d423482535ae diff --git a/src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx b/src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx index 74c3e6da8..b3c91db53 100644 --- a/src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx +++ b/src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 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 @@ -42,7 +42,7 @@ //#include #ifdef _DEBUG_ -static int MYDEBUG = 1; +static int MYDEBUG = 0; //#define _DEXCEPT_ #else static int MYDEBUG = 0; @@ -155,7 +155,8 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform() aFamily->SetGroupAttributVal(anAttrVal); } if(MYDEBUG) MESSAGE(aGroupName); - aFamily->AddGroupName(aGroupName); + if ( strncmp( aGroupName.c_str(), NIG_GROUP_PREFIX, strlen(NIG_GROUP_PREFIX) ) != 0 ) + aFamily->AddGroupName(aGroupName); } aFamily->SetId( aFamId ); myFamilies[aFamId] = aFamily; @@ -172,7 +173,7 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform() //------------------------------------------------------ PNodeInfo aNodeInfo = aMed->GetPNodeInfo(aMeshInfo); if (!aNodeInfo) { - aResult = DRS_FAIL; + aResult = addMessage("No nodes", /*isFatal=*/true ); continue; } aMeshInfo->myDim=aMeshInfo->mySpaceDim;// ignore meshdim in MEDFile because it can be false @@ -365,9 +366,9 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform() } #ifndef _DEXCEPT_ } catch(const std::exception& exc) { - aResult = DRS_FAIL; + aResult = addMessage( exc.what(), /*isFatal=*/true ); } catch (...) { - aResult = DRS_FAIL; + aResult = addMessage( "Unknown exception", /*isFatal=*/true ); } #endif if ( !anElement ) { @@ -492,6 +493,7 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform() case ePYRA13: aNbNodes = 13; break; case ePENTA6: aNbNodes = 6; break; case ePENTA15: aNbNodes = 15; break; + case ePENTA18: aNbNodes = 18; break; case eHEXA8: aNbNodes = 8; break; case eHEXA20: aNbNodes = 20; break; case eHEXA27: aNbNodes = 27; break; @@ -522,10 +524,10 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform() #ifndef _DEXCEPT_ }catch(const std::exception& exc){ INFOS("Following exception was caught:\n\t"<AddVolumeWithID(aNodeIds[0], aNodeIds[1], + aNodeIds[2], aNodeIds[3], + aNodeIds[4], aNodeIds[5], + aNodeIds[6], aNodeIds[7], + aNodeIds[8], aNodeIds[9], + aNodeIds[10], aNodeIds[11], + aNodeIds[12], aNodeIds[13], + aNodeIds[14], aNodeIds[15], + aNodeIds[16], aNodeIds[17], + aCellInfo->GetElemNum(iElem)); + if (!anElement) { + anElement = myMesh->AddVolume(FindNode(myMesh,aNodeIds[0]), + FindNode(myMesh,aNodeIds[1]), + FindNode(myMesh,aNodeIds[2]), + FindNode(myMesh,aNodeIds[3]), + FindNode(myMesh,aNodeIds[4]), + FindNode(myMesh,aNodeIds[5]), + FindNode(myMesh,aNodeIds[6]), + FindNode(myMesh,aNodeIds[7]), + FindNode(myMesh,aNodeIds[8]), + FindNode(myMesh,aNodeIds[9]), + FindNode(myMesh,aNodeIds[10]), + FindNode(myMesh,aNodeIds[11]), + FindNode(myMesh,aNodeIds[12]), + FindNode(myMesh,aNodeIds[13]), + FindNode(myMesh,aNodeIds[14]), + FindNode(myMesh,aNodeIds[15]), + FindNode(myMesh,aNodeIds[16]), + FindNode(myMesh,aNodeIds[17])); + isRenum = anIsElemNum; + } + break; case eHEXA8: aNbNodes = 8; if(anIsElemNum) @@ -958,10 +995,10 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform() #ifndef _DEXCEPT_ } catch(const std::exception& exc) { INFOS("The following exception was caught:\n\t"<AddElement(anElement); - myFamilies[aFamNum]->SetType(anElement->GetType()); + aFamily->AddElement(anElement); + aFamily->SetType(anElement->GetType()); } } } // loop on aNbElems @@ -993,12 +1030,12 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform() catch(const std::exception& exc) { INFOS("The following exception was caught:\n\t"<GetTypes().count( theGroup->GetType() ) && aFamily->MemberOf(aGroupName)) { - const set& anElements = aFamily->GetElements(); - set::const_iterator anElemsIter = anElements.begin(); + const ElementsSet& anElements = aFamily->GetElements(); + ElementsSet::const_iterator anElemsIter = anElements.begin(); for (; anElemsIter != anElements.end(); anElemsIter++) { const SMDS_MeshElement * element = *anElemsIter; @@ -1110,8 +1147,8 @@ void DriverMED_R_SMESHDS_Mesh::GetSubMesh (SMESHDS_SubMesh* theSubMesh, DriverMED_FamilyPtr aFamily = (*aFamsIter).second; if (aFamily->MemberOf(aName)) { - const set& anElements = aFamily->GetElements(); - set::const_iterator anElemsIter = anElements.begin(); + const ElementsSet& anElements = aFamily->GetElements(); + ElementsSet::const_iterator anElemsIter = anElements.begin(); if (aFamily->GetType() == SMDSAbs_Node) { for (; anElemsIter != anElements.end(); anElemsIter++) @@ -1146,14 +1183,13 @@ void DriverMED_R_SMESHDS_Mesh::CreateAllSubMeshes () if (aName.substr(0, 7) == string("SubMesh")) { int Id = atoi(string(aName).substr(7).c_str()); - set anElements = aFamily->GetElements(); - set::iterator anElemsIter = anElements.begin(); + const ElementsSet& anElements = aFamily->GetElements(); + ElementsSet::const_iterator anElemsIter = anElements.begin(); if (aFamily->GetType() == SMDSAbs_Node) { for (; anElemsIter != anElements.end(); anElemsIter++) { - SMDS_MeshNode* node = const_cast - ( static_cast( *anElemsIter )); + const SMDS_MeshNode* node = static_cast( *anElemsIter ); // find out a shape type TopoDS_Shape aShape = myMesh->IndexToShape( Id ); int aShapeType = ( aShape.IsNull() ? -1 : aShape.ShapeType() );