#include "HYDROData_Bathymetry.h"
#include "HYDROData_Document.h"
#include "HYDROData_Tool.h"
+#include "HYDROData_PolylineXY.h"
#include <gp_XY.hxx>
#include <gp_XYZ.hxx>
}
+bool HYDROData_Bathymetry::CreateBoundaryPolyline() const
+{
+ Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
+ Handle_HYDROData_PolylineXY aResult =
+ Handle_HYDROData_PolylineXY::DownCast( aDocument->CreateObject( KIND_POLYLINEXY ) );
+
+ if( aResult.IsNull() )
+ return false;
+
+ //search free name
+ QString aPolylinePref = GetName() + "_Boundary";
+ QString aPolylineName = HYDROData_Tool::GenerateObjectName( aDocument, aPolylinePref );
+ aResult->SetName( aPolylineName );
+ double Xmin = 0.0, Xmax = 0.0, Ymin = 0.0, Ymax = 0.0;
+ bool isFirst = true;
+ AltitudePoints aPoints = GetAltitudePoints();
+ foreach( AltitudePoint aPnt, aPoints )
+ {
+ double x = aPnt.X(), y = aPnt.Y();
+ if( isFirst || x<Xmin )
+ Xmin = x;
+ if( isFirst || x>Xmax )
+ Xmax = x;
+ if( isFirst || y<Ymin )
+ Ymin = y;
+ if( isFirst || y>Ymax )
+ Ymax = y;
+ isFirst = false;
+ }
+
+ aResult->AddSection( "bound", HYDROData_IPolyline::SECTION_POLYLINE, true );
+ aResult->AddPoint( 0, HYDROData_IPolyline::Point( Xmin, Ymin ) );
+ aResult->AddPoint( 0, HYDROData_IPolyline::Point( Xmin, Ymax ) );
+ aResult->AddPoint( 0, HYDROData_IPolyline::Point( Xmax, Ymax ) );
+ aResult->AddPoint( 0, HYDROData_IPolyline::Point( Xmax, Ymin ) );
+ aResult->Update();
+ return true;
+}