Salome HOME
SHP export // small correction
authorisn <isn@opencascade.com>
Fri, 13 Nov 2015 14:13:58 +0000 (17:13 +0300)
committerisn <isn@opencascade.com>
Fri, 13 Nov 2015 14:15:29 +0000 (17:15 +0300)
src/HYDROData/HYDROData_ShapeFile.cxx

index ba1fdf4456edcbc7057495431d768f7ac491d498..987b1f3d2c42fa3a9dc99ae76d6e6ff3a699fbd8 100644 (file)
@@ -102,7 +102,7 @@ void HYDROData_ShapeFile::Export(const QString& aFileName,
   {
     hSHPHandle = SHPCreate( aFileName.toAscii().data(), SHPT_POLYGON );
     HYDROData_LandCoverMap::Explorer It( aLCM );
-    for( ; It.More(); It.Next() )
+    for( ; It.More(); It.Next())
     {
       TopoDS_Face aFace = It.Face();
       if (WriteObjectPolygon(hSHPHandle, aFace) != 1)
@@ -269,6 +269,8 @@ void HYDROData_ShapeFile::ProcessFace(TopoDS_Face theFace, SHPHandle theShpHandl
       continue; 
     // Try to reorder edges
     Handle(ShapeFix_Wire) aSFW = new ShapeFix_Wire( aW, theFace, Precision::Confusion() );
+    aSFW->ModifyTopologyMode() = Standard_False;
+    aSFW->ModifyGeometryMode() = Standard_False;
     aSFW->FixReorder();
     Handle(ShapeExtend_WireData) aSEWD = aSFW->WireData();
     Standard_Integer nbE = aSEWD->NbEdges();
@@ -294,30 +296,17 @@ void HYDROData_ShapeFile::ProcessFace(TopoDS_Face theFace, SHPHandle theShpHandl
         aNPnts.Append(aPnts(j + 1));
     }
 
-    if (k == 1)
-    {
-      //an outer wire
-      //clockwise direction
-      for (int j = 1; j <= aNPnts.Size(); j++)
-      { 
-        x.push_back( aNPnts(j).X());
-        y.push_back( aNPnts(j).Y()); 
-      }
-      x.push_back( aNPnts(1).X());
-      y.push_back( aNPnts(1).Y()); 
-    }
-    else
-    {
-      //holes
-      //counter-clockwise direction
-      for (int j = aNPnts.Size(); j > 0; j--)
-      { 
-        x.push_back( aNPnts(j).X());
-        y.push_back( aNPnts(j).Y()); 
-      }
-      x.push_back( aNPnts(aNPnts.Size()).X());
-      y.push_back( aNPnts(aNPnts.Size()).Y()); 
+    //assume that the orientation of extrenal wire & internal wires is correct
+    //so just write all points "as-is"
+    //External wire will be written in clockwise direction
+    //any other wires (holes) - in anticlockwise direction
+    for (int j = 1; j <= aNPnts.Size(); j++)
+    { 
+      x.push_back( aNPnts(j).X());
+      y.push_back( aNPnts(j).Y()); 
     }
+    x.push_back( aNPnts(1).X());
+    y.push_back( aNPnts(1).Y()); 
   }
   
   aSHPObj = SHPCreateObject( SHPT_POLYGON, -1, NbWires, &anPartStart[0], NULL, x.size(), &x[0], &y[0], NULL, NULL );