#include "HYDROData_Document.h"
#include "HYDROData_Polyline3D.h"
#include "HYDROData_Profile.h"
+#include "HYDROData_PolylineXY.h"
+#include "HYDROData_Projection.h"
#include <TopoDS.hxx>
#include <TopoDS_Wire.hxx>
#include <BRepOffsetAPI_MakePipeShell.hxx>
+#include <BRepOffsetAPI_MakePipe.hxx>
#include <BRepCheck_Analyzer.hxx>
+#include <TopoDS_Vertex.hxx>
+#include <TopoDS_Face.hxx>
+#include <TopExp.hxx>
//#define DEB_CHANNEL 1
#ifdef DEB_CHANNEL
#include <BRepTools.hxx>
#endif
+#include <QColor>
#include <QStringList>
#define PYTHON_CHANNEL_ID "KIND_CHANNEL"
if ( aGuideLine.IsNull() || aProfile.IsNull() )
return;
- // TODO
- TopoDS_Wire aPathWire = TopoDS::Wire(aGuideLine->GetShape3D());
+ // build 3d shape
+ TopoDS_Wire aPathWire = TopoDS::Wire(aGuideLine->GetShape3D());
if(aPathWire.IsNull())
return;
TopoDS_Wire aProfileWire = TopoDS::Wire( aProfile->GetShape3D() );
BRepOffsetAPI_MakePipeShell aMkSweep(aPathWire);
aMkSweep.Add(aProfileWire,Standard_True, Standard_True);
aMkSweep.SetTransitionMode(BRepBuilderAPI_RightCorner);
- aMkSweep.SetMode(Standard_True);
+ //aMkSweep.SetMode(Standard_True);
aMkSweep.Build();
if(aMkSweep.IsDone()) {
const TopoDS_Shape& aChannel = aMkSweep.Shape();
#endif
}
}
+
+ // build 2d shape -- temporary solution!!
+ TopoDS_Face aProj = HYDROData_Projection::MakeProjection( GetShape3D() );
+ SetTopShape( aProj );
+
+ /*
+ //aMkSweep.Generated() - it seems doesn't work
+ //TopoDS_Vertex aV1,aV2;
+ //TopExp::Vertices (aProfileWire, aV1, aV2);
+ //const TopTools_ListOfShape& aList1 = aMkSweep.Generated(aV1);
+ //const TopTools_ListOfShape& aList2 = aMkSweep.Generated(aV2);
+ //cout <<"List1 = " << aList1.Extent() <<endl;
+ //cout <<"List2 = " << aList2.Extent() <<endl;
+ TopoDS_Wire aPathWire2d = TopoDS::Wire(aGuideLine->GetPolylineXY()->GetShape());
+ if(aPathWire2d.IsNull())
+ return;
+ TopoDS_Wire aProfileWire2d = TopoDS::Wire( aProfile->GetTopShape() );
+ if(aProfileWire2d.IsNull())
+ return;
+ //BRepTools::Write(aPathWire2d, "PathWire2.brep");
+ //BRepTools::Write(aProfileWire2d, "ProfileWire2.brep");
+ //BRepOffsetAPI_MakePipeShell aMkSweep2d(aPathWire2d);
+ //aMkSweep2d.Add(aProfileWire2d,Standard_True, Standard_True);
+ //aMkSweep2d.SetTransitionMode(BRepBuilderAPI_RightCorner);
+ //aMkSweep2d.SetMode(Standard_True);
+ //aMkSweep2d.Build();
+ BRepOffsetAPI_MakePipe aMkSweep2d(aPathWire2d, aProfileWire2d);
+ aMkSweep2d.Build();
+ if(aMkSweep2d.IsDone()) {
+ const TopoDS_Shape& aChannel2d = aMkSweep2d.Shape();
+ BRepCheck_Analyzer aCheck(aChannel2d);
+ if(aCheck.IsValid())
+ {
+ //BRepTools::Write(aChannel2d, "Chan2dV.brep");
+ SetTopShape( aChannel2d);
+ }
+#ifdef DEB_CHANNEL
+ else {
+ cout <<"NOT VALID" <<endl;
+ BRepTools::Write(aChannel2d, "Chan2dNV.brep");
+ }
+#endif
+ }*/
+}
+
+QColor HYDROData_Channel::DefaultFillingColor()
+{
+ return QColor( Qt::blue );
+}
+
+QColor HYDROData_Channel::DefaultBorderColor()
+{
+ return QColor( Qt::transparent );
+}
+
+QColor HYDROData_Channel::getDefaultFillingColor() const
+{
+ return DefaultFillingColor();
+}
+
+QColor HYDROData_Channel::getDefaultBorderColor() const
+{
+ return DefaultBorderColor();
}
bool HYDROData_Channel::SetGuideLine( const Handle(HYDROData_Polyline3D)& theGuideLine )