+Handle_HYDROData_PolylineXY 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 aResult;
+
+ //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();
+
+ AltitudePoints::Iterator anIter( aPoints );
+ for ( ; anIter.More(); anIter.Next() )
+ {
+ const AltitudePoint& aPoint = anIter.Value();
+
+ double x = aPoint.X(), y = aPoint.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 aResult;
+}