From: gka Date: Wed, 17 Oct 2018 13:31:43 +0000 (+0300) Subject: 0030250: Obtained shape is invalid due to presence of the loop containing two separat... X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=6916477205e404d478a0b8e8fd32ca86e67be41a;p=occt-copy.git 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. --- 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 ); } }