+
+bool HYDROData_PolylineOperator::Extract( const Handle(HYDROData_Document)& theDocument,
+ const Handle(HYDROData_Object)& theObject )
+{
+ if( theObject.IsNull() || theDocument.IsNull() )
+ return false;
+
+ QList<TopoDS_Shape> aBoundShapes;
+ QStringList aBoundNames;
+
+ theObject->GetBoundaries( aBoundShapes, aBoundNames );
+
+ for( int i=0, n=aBoundShapes.size(); i<n; i++ )
+ {
+ TopoDS_Shape aShape = aBoundShapes[i];
+ if( aShape.IsNull() )
+ continue;
+
+ QString aBoundName = i<aBoundNames.size() ? aBoundNames[i] : "";
+
+ Handle( HYDROData_PolylineXY ) aPolyline =
+ Handle( HYDROData_PolylineXY )::DownCast( theDocument->CreateObject( KIND_POLYLINEXY ) );
+
+ if( aPolyline.IsNull() )
+ return false;
+
+ aPolyline->SetShape( aShape );
+
+ int anIndex = 0;
+ QString aName = aBoundName;
+ while( !theDocument->FindObjectByName( aName ).IsNull() )
+ {
+ anIndex++;
+ aName = aBoundName + "_" + QString::number( anIndex );
+ }
+ aPolyline->SetName( aName );
+ }
+
+ return true;
+}