1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-04 13:13:25 +03:00

0024385: Shape fix shape does not correct closed flag for shell

Modified test cases de/step_4/C9 and de/step_4/D1 regarding to new reference data
This commit is contained in:
pdn
2013-11-28 10:45:18 +04:00
committed by bugmaster
parent 941a7a240c
commit c4edd925fd
3 changed files with 20 additions and 7 deletions

View File

@@ -871,12 +871,19 @@ Standard_Boolean ShapeFix_Shell::FixFaceOrientation(const TopoDS_Shell& shell,co
TopTools_IndexedDataMapOfShapeListOfShape aMapEdgeFaces;
TopExp::MapShapesAndAncestors(myShell,TopAbs_EDGE,TopAbs_FACE,aMapEdgeFaces);
TopTools_MapOfShape aMapMultiConnectEdges;
if(isAccountMultiConex) {
Standard_Boolean isFreeBoundaries = Standard_False;
for(Standard_Integer k = 1; k <= aMapEdgeFaces.Extent(); k++) {
Standard_Integer aFaceCount = aMapEdgeFaces.FindFromIndex(k).Extent();
//Finds multishared edges
for(Standard_Integer k = 1; k <= aMapEdgeFaces.Extent(); k++) {
if(aMapEdgeFaces.FindFromIndex(k).Extent() >2)
aMapMultiConnectEdges.Add(aMapEdgeFaces.FindKey(k));
}
if (isAccountMultiConex && aFaceCount > 2)
aMapMultiConnectEdges.Add(aMapEdgeFaces.FindKey(k));
if (aFaceCount == 1)
isFreeBoundaries = Standard_True;
}
if (BRep_Tool::IsClosed (myShell) == isFreeBoundaries)
{
myShell.Closed (!isFreeBoundaries);
SendWarning (Message_Msg ("FixAdvShell.FixClosedFlag.MSG0"));//Shell has incorrect flag isClosed
}
Standard_Boolean isGetShells = Standard_True;
//Gets possible shells with taking in account of multiconnexity.