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

0021317: Face cannot be fixed by Shape Healing

Fix that face, in which only wire was reordered during shape healing, was not replaced.
Add test case for this fix
Add status for shifted wires in reordering.
Modified test case de/step_1/E3 according to new reference data
This commit is contained in:
ika
2013-08-01 12:34:52 +04:00
parent 773f53f1ec
commit 673693f1cf
6 changed files with 61 additions and 9 deletions

View File

@@ -443,7 +443,7 @@ Standard_Boolean ShapeFix_Face::Perform()
}
if ( theAdvFixWire->Perform() ) {
//fixed = Standard_True;
isfixReorder = (theAdvFixWire->StatusReorder(ShapeExtend_DONE) || isfixReorder);
isfixReorder = ((theAdvFixWire->StatusReorder(ShapeExtend_DONE) && !theAdvFixWire->StatusReorder(ShapeExtend_DONE5)) || isfixReorder);
fixed = (theAdvFixWire->StatusSmall(ShapeExtend_DONE) ||
theAdvFixWire->StatusConnected(ShapeExtend_DONE) ||
theAdvFixWire->StatusEdgeCurves(ShapeExtend_DONE) ||
@@ -477,11 +477,11 @@ Standard_Boolean ShapeFix_Face::Perform()
if ( ! Context().IsNull() ) Context()->Replace ( S, tmpFace );
//myFace = tmpFace;
isReplaced = Standard_True;
myStatus |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE1 );
}
if(fixed || isfixReorder)
if(fixed || isfixReorder) {
myFace = tmpFace;
myStatus |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE1 );
}
}
myResult = myFace;

View File

@@ -441,6 +441,8 @@ Standard_Boolean ShapeFix_Wire::FixReorder()
myStatusReorder |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE2 );
if ( sawo.Status() <0 )
myStatusReorder |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE3 );
if ( sawo.Status() == 3)
myStatusReorder |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE5 );//only shifted
return Standard_True;
}