0026408: Exception during fixshape procedure.

Attached invalid shape is represented by solid containing one face twice.
Protection from such case was added in ShapeFix_Shell class.
Creation of COMPSOLID was modified for case when shells composing COMPSOLID have the same shared faces in order to prevent hanging.
Small modification.Protection to avoid exception
Test-case for issue #26408
This commit is contained in:
gka
2015-07-21 10:35:52 +03:00
committed by bugmaster
parent c6ad5e5f39
commit cf8096eccb
3 changed files with 41 additions and 4 deletions
+10 -2
View File
@@ -863,8 +863,16 @@ Standard_Boolean ShapeFix_Shell::FixFaceOrientation(const TopoDS_Shell& shell,co
myShell = shell;
myShape = shell;
Standard_Integer aNumMultShell =0;
for (TopoDS_Iterator iter(shell); iter.More(); iter.Next())
Lface.Append(iter.Value());
Standard_Integer nbF = 0;
TopTools_MapOfShape aMapAdded;
for (TopoDS_Iterator iter(shell); iter.More(); iter.Next(),nbF++)
{
if(aMapAdded.Add(iter.Value()))
Lface.Append(iter.Value());
}
if(Lface.Length() < nbF)
done = Standard_True;
TopTools_IndexedDataMapOfShapeListOfShape aMapEdgeFaces;
TopExp::MapShapesAndAncestors(myShell,TopAbs_EDGE,TopAbs_FACE,aMapEdgeFaces);
TopTools_MapOfShape aMapMultiConnectEdges;