]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
11.12.2013. Update Channel - 2d Shape.
authorszy <szy@opencascade.com>
Wed, 11 Dec 2013 14:46:21 +0000 (14:46 +0000)
committerszy <szy@opencascade.com>
Wed, 11 Dec 2013 14:46:21 +0000 (14:46 +0000)
src/HYDROData/HYDROData_Channel.cxx
src/HYDROGUI/HYDROGUI_Shape.cxx

index 2640d5ef61a6b1f6d40a9461be583cb01e30d1ff..bb60ed1236e49e67d6cee3f57ea38c22d34608a6 100644 (file)
@@ -4,11 +4,15 @@
 #include "HYDROData_Document.h"
 #include "HYDROData_Polyline3D.h"
 #include "HYDROData_Profile.h"
+#include "HYDROData_PolylineXY.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 <TopExp.hxx>
 //#define DEB_CHANNEL 1
 #ifdef DEB_CHANNEL
 #include <BRepTools.hxx>
@@ -88,8 +92,8 @@ void HYDROData_Channel::Update()
   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() ); 
@@ -115,6 +119,45 @@ void HYDROData_Channel::Update()
 #endif
        }
   }
+
+  // build 2d shape -- temporary solution!!
+  //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()
index 06c4a6f5b1da47f6ce3fc19ae1598d5df2c23951..3e73e5757ce3b0ee04bd90ad6a7273818327a4d6 100644 (file)
@@ -338,7 +338,6 @@ void HYDROGUI_Shape::update( const bool theIsUpdateViewer )
     {
       Handle(HYDROData_DummyObject3D) anObject3D =
         Handle(HYDROData_DummyObject3D)::DownCast( myObject );
-
       TopoDS_Shape aShape3D = anObject3D->GetShape();
 
       setShape( aShape3D, false, false );