]> OCCT Git - occt-copy.git/commitdiff
0030250: Obtained shape is invalid due to presence of the loop containing two separat... CR30250_2
authorgka <gka@opencascade.com>
Thu, 18 Oct 2018 16:50:35 +0000 (19:50 +0300)
committerabv <abv@opencascade.com>
Thu, 26 Sep 2019 11:47:02 +0000 (14:47 +0300)
Holes with null area is excluded from result in the ShapeFix_Face::FixMissingSeam in order to avoid cut by seam of the surface

src/ShapeFix/ShapeFix_Face.cxx

index 0854b5b736ca2522c32250eb06678b8ea0823e57..7581c391c79e8ea1c3032eac6ef232bba82ca423 100644 (file)
@@ -1711,6 +1711,11 @@ Standard_Boolean ShapeFix_Face::FixMissingSeam()
     else if ( wire.IsSame ( w2 ) ) wire = w21;
     else
     {
+      Handle(ShapeAnalysis_Wire) anAnalyzer = new ShapeAnalysis_Wire(wire, myFace, Precision());
+      //To avoid addition of holes with null area (OCCT issue 0030250)
+      if (anAnalyzer->CheckSmallArea(wire))
+        continue;
+     
       // other wires (not boundary) are considered as holes; make sure to have them oriented accordingly
       TopoDS_Shape curface = tmpF.EmptyCopied();
       B.Add(curface,wire);