#include <TopoDS_Wire.hxx>
#include <TopoDS_Vertex.hxx>
-//#define DEB_CHANNEL 1
+#define DEB_CHANNEL 1
#ifdef DEB_CHANNEL
#include <BRepTools.hxx>
#endif
#include <QColor>
#include <QStringList>
+#define _DEVDEBUG_
+#include "HYDRO_trace.hxx"
+
IMPLEMENT_STANDARD_HANDLE(HYDROData_Channel,HYDROData_ArtificialObject)
IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Channel,HYDROData_ArtificialObject)
{
}
-QStringList HYDROData_Channel::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const
+QStringList HYDROData_Channel::DumpToPython( const QString& thePyScriptPath,
+ MapOfTreatedObjects& theTreatedObjects ) const
{
QStringList aResList = dumpObjectCreation( theTreatedObjects );
QString aName = GetObjPyName();
Handle(HYDROData_Polyline3D) aRefGideLine = GetGuideLine();
- setPythonReferenceObject( theTreatedObjects, aResList, aRefGideLine, "SetGuideLine" );
+ setPythonReferenceObject( thePyScriptPath, theTreatedObjects, aResList, aRefGideLine, "SetGuideLine" );
Handle(HYDROData_Profile) aRefProfile = GetProfile();
- setPythonReferenceObject( theTreatedObjects, aResList, aRefProfile, "SetProfile" );
+ setPythonReferenceObject( thePyScriptPath, theTreatedObjects, aResList, aRefProfile, "SetProfile" );
+
+ aResList << QString( "%1.SetEquiDistance( %2 )" ).arg( aName ).arg( GetEquiDistance() );
aResList << QString( "" );
- aResList << QString( "%1.Update();" ).arg( aName );
+ aResList << QString( "%1.Update()" ).arg( aName );
aResList << QString( "" );
return aResList;
bool HYDROData_Channel::CreatePresentations( const Handle(HYDROData_Polyline3D)& theGuideLine,
const Handle(HYDROData_Profile)& theProfile,
- PrsDefinition& thePrs )
+ PrsDefinition& thePrs,
+ double theEquiDistance )
{
// Check input parameters
if ( theGuideLine.IsNull() || theProfile.IsNull() ) {
}
#ifdef DEB_CHANNEL
- BRepTools::Write( aPathWire, "guideline.brep" );
- BRepTools::Write( aProfileWire, "profile.brep" );
+ std::string brepName = "guideline_";
+ brepName += theGuideLine->GetName().toStdString();
+ brepName += ".brep";
+ BRepTools::Write( aPathWire, brepName.c_str() );
+ brepName = "profile_";
+ brepName += theGuideLine->GetName().toStdString();
+ brepName += ".brep";
+ BRepTools::Write( aProfileWire, brepName.c_str() );
#endif
// Pre-processing
int aNbPoints = aPolylinePoints.Length();
*/
- HYDROData_Polyline3D::Polyline3DPoints aPolylinePoints3D = theGuideLine->GetPoints();
+ HYDROData_Polyline3D::Polyline3DPoints aPolylinePoints3D = theGuideLine->GetPoints( theEquiDistance );
int aNbPoints = aPolylinePoints3D.Length();
- if ( aNbPoints < 2 ) {
+ if ( aNbPoints < 2 )
return false;
- }
// Get tangent in each point of the guide line ( 2D )
TColgp_Array1OfDir aTangents( 1, aNbPoints );
HYDROData_IPolyline::SectionType aSectionType = aPolylineXY->GetSectionType( 0 );
- if ( aSectionType == HYDROData_IPolyline::SECTION_POLYLINE ) {
+ if( aSectionType == HYDROData_IPolyline::SECTION_POLYLINE )
+ {
for ( int i = 1; i <= aNbPoints; ++i ) {
gp_XYZ aPnt = aPolylinePoints3D.Value( i );
aPnt.SetZ( 0. );
Handle(HYDROData_Profile) aProfile = GetProfile();
PrsDefinition aResultPrs;
- if ( !CreatePresentations( aGuideLine, aProfile, aResultPrs ) )
+ double anEquiDistance = GetEquiDistance();
+ if ( !CreatePresentations( aGuideLine, aProfile, aResultPrs, anEquiDistance ) )
return;
SetShape3D( aResultPrs.myPrs3D );
ObjectKind HYDROData_Channel::getAltitudeObjectType() const
{
- return KIND_STREAM_ALTITUDE;
+ DEBTRACE("HYDROData_Channel::getAltitudeObjectType");
+ return KIND_CHANNEL_ALTITUDE;
+ //return KIND_STREAM_ALTITUDE;
}
TopoDS_Shape HYDROData_Channel::GetLeftShape() const
HYDROData_SequenceOfObjects aGroups = GetGroups();
return HYDROData_Tool::getFirstShapeFromGroup( aGroups, 2);
}
+
+void HYDROData_Channel::SetEquiDistance( double theEquiDistance )
+{
+ double anEquiDistance = theEquiDistance > 0 ? theEquiDistance : 1E-3;
+ SetDouble( DataTag_EquiDistance, theEquiDistance );
+}
+
+double HYDROData_Channel::GetEquiDistance() const
+{
+ return GetDouble( DataTag_EquiDistance, 1.0 );
+}