- else
- if ( myObject->IsKind( STANDARD_TYPE(HYDROData_PolylineXY) ) ||
- myObject->IsKind( STANDARD_TYPE(HYDROData_Polyline3D)) ||
- myObject->IsKind( STANDARD_TYPE(HYDROData_Profile) ))
- return new HYDROGUI_Polyline(myTopoShape);
- else
- return new AIS_Shape( myTopoShape );
+ }
+
+ TopAbs_ShapeEnum aShapeType = myTopoShape.ShapeType();
+ 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 );
+ }