- // Get/create the edited object
- if( myIsEdit ) {
- myEditedObject = Handle(HYDROData_Stream)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
- } else {
- myEditedObject = Handle(HYDROData_Stream)::DownCast( doc()->CreateObject( KIND_STREAM ) );
- }
-
- // Get the edited object name
- QString anObjectName;
- if ( !myIsEdit ) {
- anObjectName = HYDROGUI_Tool::GenerateObjectName( module(), tr( "DEFAULT_STREAM_NAME" ) );
- } else if ( !myEditedObject.IsNull() ) {
- anObjectName = myEditedObject->GetName();
+ QString anObjectName = HYDROGUI_Tool::GenerateObjectName( module(), tr( "DEFAULT_STREAM_NAME" ) );
+ if ( myIsEdit )
+ {
+ if ( isApplyAndClose() )
+ myEditedObject =
+ Handle(HYDROData_Stream)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
+ if ( !myEditedObject.IsNull() )
+ {
+ anObjectName = myEditedObject->GetName();
+
+ // Hydraulic axis
+ Handle(HYDROData_PolylineXY) aHydraulicAxis = myEditedObject->GetHydraulicAxis();
+ if ( !aHydraulicAxis.IsNull() )
+ {
+ myHydAxis = aHydraulicAxis->GetName();
+
+ TopoDS_Face aPlane;
+ if ( HYDROData_Stream::BuildFace( aHydraulicAxis, aPlane ) )
+ {
+ // Stream profiles
+ HYDROData_SequenceOfObjects aStreamProfiles = myEditedObject->GetProfiles();
+ for ( int i = 1, n = aStreamProfiles.Length(); i <= n; ++i )
+ {
+ Handle(HYDROData_Profile) aProfile =
+ Handle(HYDROData_Profile)::DownCast( aStreamProfiles.Value( i ) );
+ if ( aProfile.IsNull() )
+ continue;
+
+ QString aProfileName = aProfile->GetName();
+
+ Standard_Real aProfilePar = 0.0;
+ HYDROData_Stream::HasIntersection( aHydraulicAxis, aProfile, aPlane, aProfilePar );
+
+ myProfiles << aProfileName;
+ myProfileParams << aProfilePar;
+ }
+ }
+ }
+ }