X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Profile.cxx;h=85f5fd72f07ae74bf124245c180134735e364f2b;hb=424f8230c9003d00fb27499b2441c4b3a2a28292;hp=9832cadb3a4a47fa95a35795a1d2ec5da90c2af5;hpb=deed826b2d6c39ba2ed410108cdf54d64cded321;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Profile.cxx b/src/HYDROData/HYDROData_Profile.cxx index 9832cadb..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 @@ -175,6 +181,19 @@ bool HYDROData_Profile::GetLastPoint( gp_XY& thePoint ) const return true; } +void HYDROData_Profile::Invalidate() +{ + TDF_Label aFirstLabel = myLab.FindChild( DataTag_FirstPoint, false ); + if ( !aFirstLabel.IsNull() ) + aFirstLabel.ForgetAllAttributes(); + + 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 { Handle(HYDROData_ProfileUZ) aProfileUZ; @@ -203,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 ) @@ -216,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 @@ -328,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 ) + 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 ) @@ -411,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 ); @@ -474,6 +501,7 @@ bool HYDROData_Profile::ImportFromFile( OSD_File& theFile ) else if ( anIsGeoref ) { SetProfilePoints( aPointsXYZ ); + Update(); } }