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:
@@ -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;
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user