]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Import of profiles corrected.
authoradv <adv@opencascade.com>
Mon, 2 Dec 2013 04:44:05 +0000 (04:44 +0000)
committeradv <adv@opencascade.com>
Mon, 2 Dec 2013 04:44:05 +0000 (04:44 +0000)
src/HYDROData/HYDROData_Profile.cxx

index ec2348e64ea6b0110ebd91d966acf2f2221436bb..b32809b3d53da99396d8274ba5e90911659cbbfa 100755 (executable)
@@ -339,40 +339,38 @@ bool HYDROData_Profile::ImportFromFile( const Handle(HYDROData_Document)& theDoc
   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 )
@@ -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 );