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=d7d2d0768d83fe01c9b33dce2d76e1c884094e5d;hp=44f8e68f06a67523accc7a99473cdc2cced52ede;hb=2c607013a23bd4e7ba07e72e0c04dee2c1209cff;hpb=7191b0d7359a31f9dee70d1020d8c0c7d8386e31 diff --git a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx index 44f8e68f0..d7d2d0768 100644 --- a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx +++ b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx @@ -1,23 +1,23 @@ -// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2011 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 +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// 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. +// 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. // -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // SMESH DriverMED : driver to read and write 'med' files @@ -346,7 +346,7 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform() } // Mesh dimension definition - TInt aMeshDimension; + TInt aSpaceDimension; TCoordHelperPtr aCoordHelperPtr; { bool anIsXDimension = false; @@ -377,25 +377,25 @@ 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; - aMeshDimension = anIsXDimension + anIsYDimension + anIsZDimension; - if(!aMeshDimension) - aMeshDimension = 3; + aSpaceDimension = anIsXDimension + anIsYDimension + anIsZDimension; + if(!aSpaceDimension) + aSpaceDimension = 3; // PAL16857(SMESH not conform to the MED convention): - if ( aMeshDimension == 2 && anIsZDimension ) // 2D only if mesh is in XOY plane - aMeshDimension = 3; + if ( aSpaceDimension == 2 && anIsZDimension ) // 2D only if mesh is in XOY plane + aSpaceDimension = 3; // PAL18941(a saved study with a mesh belong Z is opened and the mesh is belong X) - if ( aMeshDimension == 1 && !anIsXDimension ) {// 1D only if mesh is along OX + if ( aSpaceDimension == 1 && !anIsXDimension ) {// 1D only if mesh is along OX if ( anIsYDimension ) { - aMeshDimension = 2; + aSpaceDimension = 2; anIsXDimension = true; } else { - aMeshDimension = 3; + aSpaceDimension = 3; } } } SMDS_NodeIteratorPtr aNodesIter = myMesh->nodesIterator(/*idInceasingOrder=*/true); - switch(aMeshDimension){ + switch(aSpaceDimension){ case 3: aCoordHelperPtr.reset(new TCoordHelper(aNodesIter,aXYZGetCoord,aXYZName)); break; @@ -417,9 +417,15 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform() break; } } - + TInt aMeshDimension = 0; + if ( myMesh->NbEdges() > 0 ) + aMeshDimension = 1; + if ( myMesh->NbFaces() > 0 ) + aMeshDimension = 2; + if ( myMesh->NbVolumes() > 0 ) + aMeshDimension = 3; - PMeshInfo aMeshInfo = myMed->CrMeshInfo(aMeshDimension,aMeshDimension,aMeshName); + PMeshInfo aMeshInfo = myMed->CrMeshInfo(aMeshDimension,aSpaceDimension,aMeshName); MESSAGE("Add - aMeshName : "<GetName()); myMed->SetMeshInfo(aMeshInfo); @@ -496,7 +502,7 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform() { // coordinates TCoordSlice aTCoordSlice = aNodeInfo->GetCoordSlice( iNode ); - for(TInt iCoord = 0; iCoord < aMeshDimension; iCoord++){ + for(TInt iCoord = 0; iCoord < aSpaceDimension; iCoord++){ aTCoordSlice[iCoord] = aCoordHelperPtr->GetCoord(iCoord); } // node number @@ -513,7 +519,7 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform() anElemFamMap.Clear(); // coordinate names and units - for (TInt iCoord = 0; iCoord < aMeshDimension; iCoord++) { + for (TInt iCoord = 0; iCoord < aSpaceDimension; iCoord++) { aNodeInfo->SetCoordName( iCoord, aCoordHelperPtr->GetName(iCoord)); aNodeInfo->SetCoordUnit( iCoord, aCoordHelperPtr->GetUnit(iCoord)); }