if ( !aFile.IsOpen() )
return false;
- bool aRes = true;
-
NCollection_Sequence<Handle(HYDROData_Profile)> aCreatedProfiles;
- while ( aRes && !aFile.IsAtEnd() )
+ Handle(HYDROData_Profile) aNewProfile;
+ while ( !aFile.IsAtEnd() )
{
- Handle(HYDROData_Profile) aNewProfile =
- Handle(HYDROData_Profile)::DownCast( theDoc->CreateObject( KIND_PROFILE ) );
+ if ( aNewProfile.IsNull() )
+ aNewProfile = Handle(HYDROData_Profile)::DownCast( theDoc->CreateObject( KIND_PROFILE ) );
- aRes = aNewProfile->ImportFromFile( aFile );
-
- aCreatedProfiles.Append( aNewProfile );
+ if ( aNewProfile->ImportFromFile( aFile ) )
+ {
+ aCreatedProfiles.Append( aNewProfile );
+ aNewProfile.Nullify();
+ }
}
+ if ( !aNewProfile.IsNull() )
+ aNewProfile->Remove();
+
// Close the file
aFile.Close();
for ( int i = 1, n = aCreatedProfiles.Length(); i <= n ; ++i )
{
Handle(HYDROData_Profile) aProfile = aCreatedProfiles.Value( i );
- if ( aRes )
- {
- QString aProfileName = HYDROData_Tool::GenerateObjectName( theDoc, "Profile" );
- aProfile->SetName( aProfileName );
- aProfile->SetFilePath( theFileName );
- }
- else
- {
- aProfile->Remove();
- }
+ QString aProfileName = HYDROData_Tool::GenerateObjectName( theDoc, "Profile" );
+ aProfile->SetName( aProfileName );
+
+ aProfile->SetFilePath( theFileName );
}
- return aRes;
+ return !aCreatedProfiles.IsEmpty();
}
bool HYDROData_Profile::ImportFromFile( const TCollection_AsciiString& theFileName )
aLine.LeftAdjust(); aLine.RightAdjust();
if ( aLine.IsEmpty() )
- continue;
+ {
+ if ( !anIsParametric && !anIsGeoref )
+ continue; // Definition is not started yet
+
+ break; // Next profile started
+ }
TCollection_AsciiString aValX = aLine.Token( " \t", 1 );
TCollection_AsciiString aValY = aLine.Token( " \t", 2 );