-void HYDROData_Channel::findEdges( const TopTools_SequenceOfShape& theInShapes,
- const TopTools_ListOfShape& theEdges3D,
- TopTools_SequenceOfShape& theOutShapes ) const
-{
- theOutShapes.Clear();
- if ( theEdges3D.IsEmpty() || theInShapes.IsEmpty() )
- return;
-
- const TopoDS_Shape& aFirstShape3D = theEdges3D.First();
- const TopoDS_Shape& aLastShape3D = theEdges3D.Last();
-
- TopoDS_Vertex aFirstVert, aLastVert, aDummyVert;
- if ( !HYDROData_ShapesTool::Vertices( aFirstShape3D, aFirstVert, aDummyVert ) ||
- !HYDROData_ShapesTool::Vertices( aLastShape3D, aDummyVert, aLastVert ) )
- return;
-
- bool isStarted = false;
- for ( int i = 1, n = theInShapes.Length(); i <= n; ++i )
- {
- const TopoDS_Shape& anInShape = theInShapes.Value( i );
-
- TopoDS_Vertex aShapeFirstVert, aShapeLastVert;
- if ( !HYDROData_ShapesTool::Vertices( anInShape, aShapeFirstVert, aShapeLastVert ) )
- continue;
-
- if ( !isStarted )
- {
- isStarted = HYDROData_ShapesTool::IsVerticesEquals( aFirstVert, aShapeFirstVert, true );
- }
-
- if ( isStarted )
- {
- theOutShapes.Append( anInShape );
-
- if ( HYDROData_ShapesTool::IsVerticesEquals( aLastVert, aShapeLastVert, true ) )
- break;
- }
- }
-}
-
-void HYDROData_Channel::findEdges( const TopTools_SequenceOfShape& theProjShapes,
- const TopoDS_Shape& theEdge3D,
- TopTools_SequenceOfShape& theOutShapes ) const
-{
- TopTools_ListOfShape aTmpList;
- aTmpList.Append( theEdge3D );
- findEdges( theProjShapes, aTmpList, theOutShapes );
-}
-