1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-08 14:17:06 +03:00

0026644: ShapeUpgrade_UnifySameDomain - strange behavior

Made modification to get valid shape after operation ShapeUpgrade_UnifySameDomain for non-manifold input shape

Test case for issue CR26644
This commit is contained in:
gka
2015-09-10 17:11:05 +03:00
committed by bugmaster
parent 6e66a3fa15
commit 598f4391a8
2 changed files with 50 additions and 10 deletions

View File

@@ -1072,23 +1072,17 @@ static void putIntWires(TopoDS_Shape& theFace, TopTools_SequenceOfShape& theWire
void ShapeUpgrade_UnifySameDomain::UnifyFaces()
{
//Handle(ShapeBuild_ReShape) myContext = new ShapeBuild_ReShape;
TopoDS_Shape aResShape = myContext->Apply(myShape);
// creating map of edge faces
TopTools_IndexedDataMapOfShapeListOfShape aMapEdgeFaces;
TopExp::MapShapesAndAncestors(myShape, TopAbs_EDGE, TopAbs_FACE, aMapEdgeFaces);
// processing each shell
TopExp_Explorer exps;
for (exps.Init(myShape, TopAbs_SHELL); exps.More(); exps.Next()) {
TopoDS_Shell aShell = TopoDS::Shell(exps.Current());
// creating map of edge faces
TopTools_IndexedDataMapOfShapeListOfShape aMapEdgeFaces;
TopExp::MapShapesAndAncestors(aShell, TopAbs_EDGE, TopAbs_FACE, aMapEdgeFaces);
// map of processed shapes
TopTools_MapOfShape aProcessed;
//Handle(ShapeBuild_ReShape) aContext = new ShapeBuild_ReShape;
Standard_Integer NbModif = 0;
Standard_Boolean hasFailed = Standard_False;
Standard_Real tol = Precision::Confusion();