X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Profile.cxx;h=257dc01eb6387cc9427bc49e26ee2c95797749e7;hb=e75504ed446bb0bd2f5bf5649c787fe61adc9710;hp=4374e043bdb59cfe61ceb3ad407242bebe7a3fd3;hpb=7e825ec456c9331ef0df1cb59865cc55f0d8516a;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Profile.cxx b/src/HYDROData/HYDROData_Profile.cxx index 4374e043..257dc01e 100755 --- a/src/HYDROData/HYDROData_Profile.cxx +++ b/src/HYDROData/HYDROData_Profile.cxx @@ -175,6 +175,17 @@ 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(); +} + Handle(HYDROData_ProfileUZ) HYDROData_Profile::GetProfileUZ( const bool theIsCreate ) const { Handle(HYDROData_ProfileUZ) aProfileUZ; @@ -196,40 +207,32 @@ Handle(HYDROData_ProfileUZ) HYDROData_Profile::GetProfileUZ( const bool theIsCre int HYDROData_Profile::NbPoints() const { Handle(HYDROData_ProfileUZ) aProfileUZ = GetProfileUZ( false ); - return aProfileUZ.IsNull() ? 0 : aProfileUZ->getNbPoints(); + return aProfileUZ.IsNull() ? 0 : aProfileUZ->NbPoints(); } void HYDROData_Profile::RemovePoints() { Handle(HYDROData_ProfileUZ) aProfileUZ = GetProfileUZ( false ); if ( !aProfileUZ.IsNull() ) - aProfileUZ->clear(); + aProfileUZ->RemoveSections(); } -void HYDROData_Profile::SetParametricPoints( const CurveCreator::Coordinates& theCoords ) +void HYDROData_Profile::SetParametricPoints( const HYDROData_ProfileUZ::PointsList& thePoints ) { RemovePoints(); Handle(HYDROData_ProfileUZ) aProfileUZ = GetProfileUZ(); - - CurveCreator::Coordinates::const_iterator aBegIter = theCoords.begin(); - CurveCreator::Coordinates::const_iterator anEndIter = theCoords.end(); - while ( aBegIter != anEndIter ) + for ( int i = 1, n = thePoints.Length(); i <= n ; ++i ) { - const CurveCreator::TypeCoord& aCoordX = *aBegIter++; - if ( aBegIter == anEndIter ) - break; - - const CurveCreator::TypeCoord& aCoordY = *aBegIter++; - - aProfileUZ->addPoint( aCoordX, aCoordY, 0 ); + const HYDROData_ProfileUZ::Point& aPoint = thePoints.Value( i ); + aProfileUZ->AddPoint( 0, aPoint ); } } -CurveCreator::Coordinates HYDROData_Profile::GetParametricPoints() const +HYDROData_ProfileUZ::PointsList HYDROData_Profile::GetParametricPoints() const { Handle(HYDROData_ProfileUZ) aProfileUZ = GetProfileUZ( false ); - return aProfileUZ.IsNull() ? CurveCreator::Coordinates() : aProfileUZ->getPoints(); + return aProfileUZ.IsNull() ? HYDROData_ProfileUZ::PointsList() : aProfileUZ->GetPoints(); } void HYDROData_Profile::SetProfilePoints( const ProfilePoints& thePoints ) @@ -253,7 +256,8 @@ void HYDROData_Profile::SetProfilePoints( const ProfilePoints& thePoints ) double aDistance = gp_Pnt2d( aFirstPoint ).Distance( aPointXY ); - aProfileUZ->addPoint( 0, aDistance, aPoint.Z() ); + HYDROData_ProfileUZ::Point aParPoint( aDistance, aPoint.Z() ); + aProfileUZ->AddPoint( 0, aParPoint ); } SetFirstPoint( aFirstPoint ); @@ -268,15 +272,12 @@ HYDROData_Profile::ProfilePoints HYDROData_Profile::GetProfilePoints() const if ( !GetFirstPoint( aFirstPoint ) || !GetLastPoint( aLastPoint ) ) return aResPoints; - CurveCreator::Coordinates aParametricPoints = GetParametricPoints(); - if ( aParametricPoints.size() < 4 ) + HYDROData_ProfileUZ::PointsList aParametricPoints = GetParametricPoints(); + if ( aParametricPoints.Length() < 2 ) return aResPoints; - CurveCreator::Coordinates::const_iterator aBegIter = aParametricPoints.begin(); - CurveCreator::Coordinates::const_iterator anEndIter = aParametricPoints.end()--; - - gp_Pnt2d aFirstParPoint( *aBegIter++, *aBegIter++ ); - gp_Pnt2d aLastParPoint( *anEndIter--, *anEndIter ); + const HYDROData_ProfileUZ::Point& aFirstParPoint = aParametricPoints.First(); + const HYDROData_ProfileUZ::Point& aLastParPoint = aParametricPoints.Last(); double aGeoDistance = gp_Pnt2d( aFirstPoint ).Distance( aLastPoint ); double aParCommonDist = gp_Pnt2d( aFirstParPoint.X(), 0 ).Distance( gp_Pnt2d( aLastParPoint.X(), 0 ) ); @@ -285,13 +286,11 @@ HYDROData_Profile::ProfilePoints HYDROData_Profile::GetProfilePoints() const aResPoints.Append( ProfilePoint( aFirstPoint.X(), aFirstPoint.Y(), aFirstParPoint.Y() ) ); // Compute all other points - while ( aBegIter != anEndIter ) + for ( int i = 2, n = aParametricPoints.Length(); i < n ; ++i ) { - const CurveCreator::TypeCoord& aCoordU = *aBegIter++; - if ( aBegIter == anEndIter ) - break; + const HYDROData_ProfileUZ::Point& aParPoint = aParametricPoints.Value( i ); - double aParPointDist = gp_Pnt2d( aFirstParPoint.X(), 0 ).Distance( gp_Pnt2d( aCoordU, 0 ) ); + double aParPointDist = gp_Pnt2d( aFirstParPoint.X(), 0 ).Distance( gp_Pnt2d( aParPoint.X(), 0 ) ); double aParLen = ( aParPointDist / aParCommonDist ) * aGeoDistance; @@ -300,10 +299,7 @@ HYDROData_Profile::ProfilePoints HYDROData_Profile::GetProfilePoints() const double aParX = ( aFirstPoint.X() + aRatio * aLastPoint.X() ) / ( 1 + aRatio ); double aParY = ( aFirstPoint.Y() + aRatio * aLastPoint.Y() ) / ( 1 + aRatio ); - - const CurveCreator::TypeCoord& aCoordZ = *aBegIter++; - - ProfilePoint aCompPoint( aParX, aParY, aCoordZ ); + ProfilePoint aCompPoint( aParX, aParY, aParPoint.Y() ); aResPoints.Append( aCompPoint ); } @@ -360,7 +356,7 @@ bool HYDROData_Profile::ImportFromFile( const Handle(HYDROData_Document)& theDoc // 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 ) @@ -414,8 +410,8 @@ bool HYDROData_Profile::ImportFromFile( OSD_File& theFile ) bool anIsParametric = false; bool anIsGeoref = false; - CurveCreator::Coordinates aPointsUZ; - ProfilePoints aPointsXYZ; + HYDROData_ProfileUZ::PointsList aPointsUZ; + ProfilePoints aPointsXYZ; double aPrevVal = -DBL_MAX; while ( !theFile.IsAtEnd() ) @@ -457,8 +453,8 @@ bool HYDROData_Profile::ImportFromFile( OSD_File& theFile ) break; } - aPointsUZ.push_back( aCoordX ); - aPointsUZ.push_back( aCoordY ); + HYDROData_ProfileUZ::Point aPoint( aCoordX, aCoordY ); + aPointsUZ.Append( aPoint ); aPrevVal = aCoordX; } @@ -477,7 +473,7 @@ bool HYDROData_Profile::ImportFromFile( OSD_File& theFile ) } } - aRes = aRes && ( anIsParametric && !aPointsUZ.empty() || + aRes = aRes && ( anIsParametric && !aPointsUZ.IsEmpty() || anIsGeoref && !aPointsXYZ.IsEmpty() ); if ( aRes ) {