X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Profile.cxx;h=85f5fd72f07ae74bf124245c180134735e364f2b;hb=424f8230c9003d00fb27499b2441c4b3a2a28292;hp=257dc01eb6387cc9427bc49e26ee2c95797749e7;hpb=1bbabb6a4145a459a6655a3bc18b71ec135bf814;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Profile.cxx b/src/HYDROData/HYDROData_Profile.cxx index 257dc01e..85f5fd72 100755 --- a/src/HYDROData/HYDROData_Profile.cxx +++ b/src/HYDROData/HYDROData_Profile.cxx @@ -62,8 +62,10 @@ TopoDS_Shape HYDROData_Profile::GetShape3D() const return getShape3D(); } -void HYDROData_Profile::UpdateShape3D() +void HYDROData_Profile::Update() { + HYDROData_Object::Update(); + BRepBuilderAPI_MakeWire aMakeWire; ProfilePoints aProfilePoints = GetProfilePoints(); @@ -129,6 +131,8 @@ void HYDROData_Profile::SetFirstPoint( const gp_XY& thePoint ) anArray->SetValue( 0, thePoint.X() ); anArray->SetValue( 1, thePoint.Y() ); + + SetToUpdate( true ); } bool HYDROData_Profile::GetFirstPoint( gp_XY& thePoint ) const @@ -157,6 +161,8 @@ void HYDROData_Profile::SetLastPoint( const gp_XY& thePoint ) anArray->SetValue( 0, thePoint.X() ); anArray->SetValue( 1, thePoint.Y() ); + + SetToUpdate( true ); } bool HYDROData_Profile::GetLastPoint( gp_XY& thePoint ) const @@ -184,6 +190,8 @@ void HYDROData_Profile::Invalidate() TDF_Label aLastLabel = myLab.FindChild( DataTag_LastPoint, false ); if ( !aLastLabel.IsNull() ) aLastLabel.ForgetAllAttributes(); + + SetToUpdate( true ); } Handle(HYDROData_ProfileUZ) HYDROData_Profile::GetProfileUZ( const bool theIsCreate ) const @@ -214,7 +222,10 @@ void HYDROData_Profile::RemovePoints() { Handle(HYDROData_ProfileUZ) aProfileUZ = GetProfileUZ( false ); if ( !aProfileUZ.IsNull() ) + { aProfileUZ->RemoveSections(); + SetToUpdate( true ); + } } void HYDROData_Profile::SetParametricPoints( const HYDROData_ProfileUZ::PointsList& thePoints ) @@ -227,6 +238,8 @@ void HYDROData_Profile::SetParametricPoints( const HYDROData_ProfileUZ::PointsLi const HYDROData_ProfileUZ::Point& aPoint = thePoints.Value( i ); aProfileUZ->AddPoint( 0, aPoint ); } + + SetToUpdate( true ); } HYDROData_ProfileUZ::PointsList HYDROData_Profile::GetParametricPoints() const @@ -339,40 +352,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 +433,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 ); @@ -485,6 +501,7 @@ bool HYDROData_Profile::ImportFromFile( OSD_File& theFile ) else if ( anIsGeoref ) { SetProfilePoints( aPointsXYZ ); + Update(); } }