#include <BRepCheck_Shell.hxx>
#include <BRepCheck_ListOfStatus.hxx>
#include <TopTools_SequenceOfShape.hxx>
+#include <Handle_Geom_Curve.hxx>
+#include <Handle_Geom_Line.hxx>
+#include <Handle_Geom_TrimmedCurve.hxx>
+#include <Geom_TrimmedCurve.hxx>
#include <QFile>
*/
bool HYDROData_LandCoverMap::Split( const TopoDS_Shape& theShape )
{
- return LocalPartition( theShape, "" );
+ int aNbCL = GetLCCount();
+ bool aResult = LocalPartition( theShape, "" );
+ return aResult && aNbCL != GetLCCount();
}
QString aSType = anIt.StricklerType();
//std::cout << "from " << anIt.Face() << ": " << anIt.StricklerType() << std::endl;
TopTools_ListOfShape aModified = aBuilder.Modified( anIt.Face() );
+
+ //
+ TopTools_ListOfShape aGen = aBuilder.Generated( anIt.Face() );
+ //
if( aModified.Extent() == 0 )
aModified.Append( anIt.Face() );
QString aDbfFileName = thePyScriptPath;
aDbfFileName.replace( ".py", ".dbf" );
- ExportSHP( aShpFileName );
+ ExportSHP( aShpFileName, true, 0.1 );
QString anAttr = "CODE_06"; //TODO: some custom choice
QStringList anAttrValues, aTypes;
return true;
}
-bool HYDROData_LandCoverMap::ExportSHP( const QString& theSHPFileName) const
+bool HYDROData_LandCoverMap::ExportSHP( const QString& theSHPFileName, bool bUseDiscr, double theDefl) const
{
HYDROData_ShapeFile anExporter;
QStringList aList;
- anExporter.Export(theSHPFileName, this, aList);
+ anExporter.Export(theSHPFileName, this, aList, bUseDiscr, theDefl );
if (aList.empty())
return true;
else
return false;
}
+bool HYDROData_LandCoverMap::CheckLinear()
+{
+ TopoDS_Shape InpShape = GetShape();
+ TopExp_Explorer anEdgeEx(InpShape, TopAbs_EDGE);
+ for (; anEdgeEx.More(); anEdgeEx.Next())
+ {
+ TopoDS_Edge E = TopoDS::Edge(anEdgeEx.Current());
+ double aFP, aLP;
+ Handle_Geom_Curve aCur = BRep_Tool::Curve(E, aFP, aLP);
+ Handle(Geom_Line) aLine = Handle(Geom_Line)::DownCast(aCur);
+ if (aLine.IsNull())
+ {
+ Handle(Geom_TrimmedCurve) aTC = Handle(Geom_TrimmedCurve)::DownCast(aCur);
+ if (!aTC.IsNull())
+ {
+ Handle(Geom_Line) aLine = Handle(Geom_Line)::DownCast(aTC->BasisCurve());
+ if (aLine.IsNull())
+ return false;
+ }
+ else
+ return false;
+ }
+ }
+ return true;
+}