Salome HOME
Import of shapefile - bug fixes; #refs 614
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Shape.cxx
index 60962d74b4c78ad4418c94c0adfa31cfce3f8b1c..7e7f3314dd378a8886e00c3015d736df8c996b85 100644 (file)
@@ -18,6 +18,8 @@
 
 #include <HYDROGUI_Shape.h>
 #include <HYDROGUI_Tool.h>
+#include <HYDROGUI_Polyline.h>
+
 #include <HYDROData_Channel.h>
 #include <HYDROData_Document.h>
 #include <HYDROData_DummyObject3D.h>
@@ -29,7 +31,7 @@
 #include <HYDROData_ShapesGroup.h>
 #include <HYDROData_Stream.h>
 #include <HYDROData_Zone.h>
-#include <HYDROGUI_Polyline.h>
+#include <HYDROData_LandCover.h>
 
 #include <AIS_Shape.hxx>
 #include <BRep_Builder.hxx>
@@ -481,7 +483,17 @@ Handle_AIS_InteractiveObject HYDROGUI_Shape::createShape() const
   }
 
   TopAbs_ShapeEnum aShapeType = myTopoShape.ShapeType();
-  if ( aShapeType==TopAbs_EDGE || aShapeType==TopAbs_WIRE ) {
+  bool IsWireEdgeCompound = aShapeType==TopAbs_COMPOUND;
+  if (IsWireEdgeCompound) {
+    TopoDS_Iterator itr(myTopoShape);
+    while (itr.More() && IsWireEdgeCompound) {
+      if (itr.Value().ShapeType() != TopAbs_WIRE && itr.Value().ShapeType() != TopAbs_EDGE)
+        IsWireEdgeCompound = false;
+      itr.Next();
+    }
+  }
+
+  if ( aShapeType==TopAbs_EDGE || aShapeType==TopAbs_WIRE || IsWireEdgeCompound) {
     return new HYDROGUI_Polyline( myTopoShape );
   } else {
     return new AIS_Shape( myTopoShape );