From: isn Date: Fri, 13 Nov 2015 14:13:58 +0000 (+0300) Subject: SHP export // small correction X-Git-Tag: v1.5~43^2~1 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=20778e5383d60bd38153c48dc1c7ed6dd1788b94;p=modules%2Fhydro.git SHP export // small correction --- diff --git a/src/HYDROData/HYDROData_ShapeFile.cxx b/src/HYDROData/HYDROData_ShapeFile.cxx index ba1fdf44..987b1f3d 100644 --- a/src/HYDROData/HYDROData_ShapeFile.cxx +++ b/src/HYDROData/HYDROData_ShapeFile.cxx @@ -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 );