From 9951c43b35cc7088888afb135b0cdfcfd8d840c6 Mon Sep 17 00:00:00 2001 From: adv Date: Mon, 2 Dec 2013 04:44:05 +0000 Subject: [PATCH] Import of profiles corrected. --- src/HYDROData/HYDROData_Profile.cxx | 43 +++++++++++++++-------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/src/HYDROData/HYDROData_Profile.cxx b/src/HYDROData/HYDROData_Profile.cxx index ec2348e6..b32809b3 100755 --- a/src/HYDROData/HYDROData_Profile.cxx +++ b/src/HYDROData/HYDROData_Profile.cxx @@ -339,40 +339,38 @@ bool HYDROData_Profile::ImportFromFile( const Handle(HYDROData_Document)& theDoc if ( !aFile.IsOpen() ) return false; - bool aRes = true; - NCollection_Sequence 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 ) @@ -422,7 +420,12 @@ bool HYDROData_Profile::ImportFromFile( OSD_File& theFile ) 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 ); -- 2.39.2