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=376d108653228fc6da3242b2cb1cc8de9ff9fd34;hp=9c97adb9bfde2b7e230db7da3b570bcfd15a6e96;hb=991f4107746ffffd2e5944212fba84ff1b6efc58;hpb=6d66c9caa86eca3fd9a3131fef75630408f13876 diff --git a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx index 9c97adb9b..376d10865 100644 --- a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx +++ b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx @@ -344,8 +344,8 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform() aMeshName = myMeshName; } - // Mesh dimension definition - TInt aMeshDimension; + // Space dimension definition + TInt aSpaceDim; TCoordHelperPtr aCoordHelperPtr; { bool anIsXDimension = false; @@ -376,24 +376,24 @@ 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; + aSpaceDim = anIsXDimension + anIsYDimension + anIsZDimension; + if(!aSpaceDim) + aSpaceDim = 3; // PAL16857(SMESH not conform to the MED convention): - if ( aMeshDimension == 2 && anIsZDimension ) // 2D only if mesh is in XOY plane - aMeshDimension = 3; + if ( aSpaceDim == 2 && anIsZDimension ) // 2D only if mesh is in XOY plane + aSpaceDim = 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 ( aSpaceDim == 1 && !anIsXDimension ) // 1D only if mesh is along OX if ( anIsYDimension ) { - aMeshDimension = 2; + aSpaceDim = 2; anIsXDimension = true; } else { - aMeshDimension = 3; + aSpaceDim = 3; } } SMDS_NodeIteratorPtr aNodesIter = myMesh->nodesIterator(); - switch(aMeshDimension){ + switch(aSpaceDim){ case 3: aCoordHelperPtr.reset(new TCoordHelper(aNodesIter,aXYZGetCoord,aXYZName)); break; @@ -415,9 +415,16 @@ 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,aMeshName); + PMeshInfo aMeshInfo = myMed->CrMeshInfo(aSpaceDim,aMeshName); + aMeshInfo->myMeshDim = aMeshDimension; MESSAGE("Add - aMeshName : "<GetName()); myMed->SetMeshInfo(aMeshInfo); @@ -494,7 +501,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 < aSpaceDim; iCoord++){ aTCoordSlice[iCoord] = aCoordHelperPtr->GetCoord(iCoord); } // node number @@ -511,7 +518,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 < aSpaceDim; iCoord++) { aNodeInfo->SetCoordName( iCoord, aCoordHelperPtr->GetName(iCoord)); aNodeInfo->SetCoordUnit( iCoord, aCoordHelperPtr->GetUnit(iCoord)); }