#include "HYDROData_Tool.h"
#include "HYDROData_PolylineXY.h"
-#include <boost/math/special_functions/fpclassify.hpp>
-
#include <gp_XY.hxx>
#include <gp_XYZ.hxx>
// myListOfNodes.clear();
}
-QStringList HYDROData_Bathymetry::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const
+QStringList HYDROData_Bathymetry::DumpToPython( const QString& thePyScriptPath,
+ MapOfTreatedObjects& theTreatedObjects ) const
{
QStringList aResList = dumpObjectCreation( theTreatedObjects );
QString aBathymetryName = GetObjPyName();
- aResList << QString( "%1.SetAltitudesInverted( %2 );" )
+ aResList << QString( "%1.SetAltitudesInverted( %2 )" )
.arg( aBathymetryName ).arg( IsAltitudesInverted() );
TCollection_AsciiString aFilePath = GetFilePath();
- aResList << QString( "%1.ImportFromFile( \"%2\" );" )
+ aResList << QString( "%1.ImportFromFile( \"%2\" )" )
.arg( aBathymetryName ).arg( aFilePath.ToCString() );
aResList << QString( "" );
- aResList << QString( "%1.Update();" ).arg( aBathymetryName );
+ aResList << QString( "%1.Update()" ).arg( aBathymetryName );
aResList << QString( "" );
return aResList;
aCoordsArray->SetValue( i * 3 + 2, aPoint.Z() );
}
- SetToUpdate( true );
+ Changed( Geom_Z );
}
-HYDROData_Bathymetry::AltitudePoints HYDROData_Bathymetry::GetAltitudePoints() const
+HYDROData_Bathymetry::AltitudePoints HYDROData_Bathymetry::GetAltitudePoints(bool IsConvertToGlobal) const
{
AltitudePoints aPoints;
if ( !aLabel.FindAttribute( TDataStd_RealArray::GetID(), aCoordsArray ) )
return aPoints;
+ Handle(HYDROData_Document) aDoc = HYDROData_Document::Document( myLab );
for ( int i = aCoordsArray->Lower(), n = aCoordsArray->Upper(); i <= n; )
{
if ( i + 3 > n + 1 )
aPoint.SetY( aCoordsArray->Value( i++ ) );
aPoint.SetZ( aCoordsArray->Value( i++ ) );
+ if( IsConvertToGlobal )
+ aDoc->Transform( aPoint, false );
aPoints.Append( aPoint );
}
void HYDROData_Bathymetry::RemoveAltitudePoints()
{
- TDF_Label aLabel = myLab.FindChild(DataTag_AltitudePoints, false);
- if (!aLabel.IsNull())
- {
- aLabel.ForgetAllAttributes();
- SetToUpdate(true);
- }
+ TDF_Label aLabel = myLab.FindChild( DataTag_AltitudePoints, false );
+ if ( !aLabel.IsNull() )
+ {
+ aLabel.ForgetAllAttributes();
+ Changed( Geom_Z );
+ }
}
void interpolateAltitudeForPoints( const gp_XY& thePoint,
double HYDROData_Bathymetry::GetAltitudeForPoint(const gp_XY& thePoint) const
{
- //DEBTRACE("GetAltitudeForPoint p(" << thePoint.X() << ", " << thePoint.Y() << ")");
+ DEBTRACE("GetAltitudeForPoint p(" << thePoint.X() << ", " << thePoint.Y() << ")");
double anInvalidAltitude = GetInvalidAltitude();
double aResAltitude = anInvalidAltitude;
TDataStd_Integer::Set( myLab.FindChild( DataTag_AltitudesInverted ), (Standard_Integer)theIsInverted );
- SetToUpdate( true );
+ Changed( Geom_Z );
if ( !theIsUpdate )
return;
if ( !isXOk || !isYOk || !isZOk )
return false;
- if ( boost::math::isnan( aPoint.X() ) || boost::math::isinf( aPoint.X() ) ||
- boost::math::isnan( aPoint.Y() ) || boost::math::isinf( aPoint.Y() ) ||
- boost::math::isnan( aPoint.Z() ) || boost::math::isinf( aPoint.Z() ) )
+ if ( HYDROData_Tool::IsNan( aPoint.X() ) || HYDROData_Tool::IsInf( aPoint.X() ) ||
+ HYDROData_Tool::IsNan( aPoint.Y() ) || HYDROData_Tool::IsInf( aPoint.Y() ) ||
+ HYDROData_Tool::IsNan( aPoint.Z() ) || HYDROData_Tool::IsInf( aPoint.Z() ) )
return false;
// Invert the z value if requested