]> OCCT Git - occt-copy.git/commitdiff
0029369: ShapeFix_Face algorithm does not heal properly the face lying on a surface...
authorjgv <jgv@opencascade.com>
Mon, 11 Dec 2017 15:28:07 +0000 (18:28 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 22 Mar 2018 17:23:27 +0000 (20:23 +0300)
Add field of class <myCheckMissingEdges> to ShapeFix_Wire to be able not to take into account possibility of missing edges.

src/ShapeFix/ShapeFix_Wire.cxx
src/ShapeFix/ShapeFix_Wire.hxx
src/ShapeFix/ShapeFix_Wire.lxx

index e5b273da3e56d8c9371168d59ded940b992d5251..5966d91a5a73b977517f15703c0374d7bbf97175 100644 (file)
@@ -207,6 +207,7 @@ void ShapeFix_Wire::ClearModes()
   myFixAddCurve3dMode = -1;
   myFixSeamMode = -1;
   myFixShiftedMode = -1;
+  myCheckMissingEdges = Standard_True;
   myFixSameParameterMode = -1;
   myFixVertexToleranceMode = -1;
 
@@ -1460,7 +1461,8 @@ Standard_Boolean ShapeFix_Wire::FixShifted()
 
     // abv 23 Feb 00: UKI60107-6 210: additional check for near-degenerated case
     //smh#15 PRO19800. Check if the surface is surface of revolution.
-    if (surf->Surface()->IsKind (STANDARD_TYPE(Geom_SurfaceOfRevolution))) {
+    if (myCheckMissingEdges &&
+        surf->Surface()->IsKind (STANDARD_TYPE(Geom_SurfaceOfRevolution))) {
       if ( ! isDeg && ! vclosed ) {
        if ( c2d1.IsNull() && ! sae.PCurve ( E1, Face(), c2d1, a1, b1, Standard_True ) ) continue;
        gp_Pnt2d p1 ( SUF, c2d1->Value(b1).Y() );
index a266bc218b8d0d7029decf6a053d903adf87e37d..19b8bf69dff41ae4b47b45b6eabc71feacf5f6c4 100644 (file)
@@ -230,6 +230,8 @@ public:
   
     Standard_Integer& FixShiftedMode();
   
+    Standard_Boolean& CheckMissingEdgesMode();
+  
     Standard_Integer& FixSameParameterMode();
   
     Standard_Integer& FixVertexToleranceMode();
@@ -478,6 +480,7 @@ protected:
   Standard_Integer myFixAddCurve3dMode;
   Standard_Integer myFixSeamMode;
   Standard_Integer myFixShiftedMode;
+  Standard_Boolean myCheckMissingEdges;
   Standard_Integer myFixSameParameterMode;
   Standard_Integer myFixVertexToleranceMode;
   Standard_Integer myFixNotchedEdgesMode;
index 2ba6455f1ccb3128db2976a9faa9468be510a308..ae139489f5f5e071b4c035ef72ff101cf8762c10 100644 (file)
@@ -305,6 +305,16 @@ inline  Standard_Integer& ShapeFix_Wire::FixShiftedMode()
   return myFixShiftedMode;
 }
  
+//=======================================================================
+//function : CheckMissingEdgesMode
+//purpose  : 
+//=======================================================================
+
+inline  Standard_Boolean& ShapeFix_Wire::CheckMissingEdgesMode()
+{
+  return myCheckMissingEdges;
+}
 //=======================================================================
 //function : FixSameParameterMode
 //purpose  :