From 6916477205e404d478a0b8e8fd32ca86e67be41a Mon Sep 17 00:00:00 2001 From: gka Date: Wed, 17 Oct 2018 16:31:43 +0300 Subject: [PATCH] 0030250: Obtained shape is invalid due to presence of the loop containing two separate edges lying on the seam of the closed surface. In the class ShapeFix_Face::Perform FixSmallAreaWire() method call was inserted before method FixMissingSeam to remove hole having null area. --- src/ShapeFix/ShapeFix_Face.cxx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/ShapeFix/ShapeFix_Face.cxx b/src/ShapeFix/ShapeFix_Face.cxx index 9ebadf5504..e5843ab6fe 100644 --- a/src/ShapeFix/ShapeFix_Face.cxx +++ b/src/ShapeFix/ShapeFix_Face.cxx @@ -499,17 +499,25 @@ Standard_Boolean ShapeFix_Face::Perform() } } - myResult = myFace; - TopoDS_Shape savShape = myFace; //gka BUG 6555 + // Specific case for conic surfaces if ( NeedFix(myFixPeriodicDegenerated) ) this->FixPeriodicDegenerated(); - // fix missing seam - if ( NeedFix ( myFixMissingSeamMode ) ) { + + if ( NeedFix ( myFixSmallAreaWireMode ) ) + { + if (FixSmallAreaWire(Standard_False)) + myStatus |= ShapeExtend::EncodeStatus(ShapeExtend_DONE4); + } + + myResult = myFace; + TopoDS_Shape savShape = myFace; //gka BUG 6555 + // fix missing seam + if ( NeedFix ( myFixMissingSeamMode )) { if ( FixMissingSeam() ) { - myStatus |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE3 ); + myStatus |= ShapeExtend::EncodeStatus( ShapeExtend_DONE3 ); } } -- 2.39.5