]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
Integrate patch for 0021149: [CEA 445] Wrong mesh dimension V5_1_6_BR V5_1_6 V5_1_6_patch01 V5_1_6rc1 V5_1_6rc2
authorvsr <vsr@opencascade.com>
Mon, 1 Aug 2011 11:11:14 +0000 (11:11 +0000)
committervsr <vsr@opencascade.com>
Mon, 1 Aug 2011 11:11:14 +0000 (11:11 +0000)
src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx

index b52daf70ac3d48e34e4b8911641aab6f6c55d989..74475380dcfcdabafc6b776675f6ecf474f05274 100644 (file)
@@ -345,8 +345,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;
@@ -377,24 +377,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(/*idInceasingOrder=*/true);
-      switch(aMeshDimension){
+      switch(aSpaceDim){
       case 3:
         aCoordHelperPtr.reset(new TCoordHelper(aNodesIter,aXYZGetCoord,aXYZName));
         break;
@@ -416,9 +416,17 @@ 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 : "<<aMeshName<<"; "<<aMeshInfo->GetName());
     myMed->SetMeshInfo(aMeshInfo);
 
@@ -495,7 +503,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
@@ -512,7 +520,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));
     }