From 6f5fd35e49b3c1e209a65548ff3358cdbb795398 Mon Sep 17 00:00:00 2001
From: eap <eap@opencascade.com>
Date: Fri, 29 Jan 2016 18:03:18 +0300
Subject: [PATCH] 23221: EDF - all edges are not meshed

 an internal EDGE in a SOLID to be meshed
---
 src/SMESH/SMESH_subMesh.cxx | 8 +++++---
 src/SMESH/SMESH_subMesh.hxx | 4 +++-
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/SMESH/SMESH_subMesh.cxx b/src/SMESH/SMESH_subMesh.cxx
index 57a401df9..38a445708 100644
--- a/src/SMESH/SMESH_subMesh.cxx
+++ b/src/SMESH/SMESH_subMesh.cxx
@@ -438,7 +438,8 @@ const map < int, SMESH_subMesh * >& SMESH_subMesh::DependsOn()
   }
   break;
   case TopAbs_COMPSOLID: insertDependence( _subShape, TopAbs_SOLID ); break;
-  case TopAbs_SOLID:     insertDependence( _subShape, TopAbs_FACE ); break;
+  case TopAbs_SOLID:     insertDependence( _subShape, TopAbs_FACE );
+  { /*internal EDGE*/    insertDependence( _subShape, TopAbs_EDGE, TopAbs_WIRE ); break; }
   case TopAbs_SHELL:     insertDependence( _subShape, TopAbs_FACE ); break;
   case TopAbs_FACE:      insertDependence( _subShape, TopAbs_EDGE ); break;
   case TopAbs_WIRE:      insertDependence( _subShape, TopAbs_EDGE ); break;
@@ -477,9 +478,10 @@ namespace
 //=============================================================================
 
 void SMESH_subMesh::insertDependence(const TopoDS_Shape aShape,
-                                     TopAbs_ShapeEnum   aSubType)
+                                     TopAbs_ShapeEnum   aSubType,
+                                     TopAbs_ShapeEnum   avoidType)
 {
-  TopExp_Explorer sub( aShape, aSubType );
+  TopExp_Explorer sub( aShape, aSubType, avoidType );
   for ( ; sub.More(); sub.Next() )
   {
     SMESH_subMesh *aSubMesh = _father->GetSubMesh( sub.Current() );
diff --git a/src/SMESH/SMESH_subMesh.hxx b/src/SMESH/SMESH_subMesh.hxx
index 24152268d..8f9f83c2c 100644
--- a/src/SMESH/SMESH_subMesh.hxx
+++ b/src/SMESH/SMESH_subMesh.hxx
@@ -281,7 +281,9 @@ public:
 
 protected:
   // ==================================================================
-  void insertDependence(const TopoDS_Shape aShape, TopAbs_ShapeEnum aSubType );
+  void insertDependence(const TopoDS_Shape aShape,
+                        TopAbs_ShapeEnum   aSubType,
+                        TopAbs_ShapeEnum   avoidType=TopAbs_SHAPE);
 
   void removeSubMeshElementsAndNodes();
   void updateDependantsState(const compute_event theEvent);