]> OCCT Git - occt-copy.git/commitdiff
0032448: Modeling Algorithms - Provide exact validating (as option) using GeomLib_Che... CR32448_2
authorasuraven <andrey.suravenkov@opencascade.com>
Wed, 28 Jul 2021 10:19:22 +0000 (13:19 +0300)
committerasuraven <andrey.suravenkov@opencascade.com>
Mon, 30 Aug 2021 09:05:03 +0000 (12:05 +0300)
Add '-exact' option to checkshape command to use exact method to validate edges using BRepLib_ValidateEdge class. Default mode is calculating in finite number of points.

20 files changed:
dox/user_guides/draw_test_harness/draw_test_harness.md
src/BRepCheck/BRepCheck_Analyzer.cxx
src/BRepCheck/BRepCheck_Analyzer.hxx
src/BRepCheck/BRepCheck_Edge.cxx
src/BRepCheck/BRepCheck_Edge.hxx
src/BRepLib/BRepLib_ValidateEdge.cxx
src/BRepLib/BRepLib_ValidateEdge.hxx
src/BRepTest/BRepTest_CheckCommands.cxx
tests/heal/checkshape/bug27814_10
tests/heal/checkshape/bug27814_11
tests/heal/checkshape/bug32448_1 [new file with mode: 0644]
tests/heal/checkshape/bug32448_10 [new file with mode: 0644]
tests/heal/checkshape/bug32448_2 [new file with mode: 0644]
tests/heal/checkshape/bug32448_3 [new file with mode: 0644]
tests/heal/checkshape/bug32448_4 [new file with mode: 0644]
tests/heal/checkshape/bug32448_5 [new file with mode: 0644]
tests/heal/checkshape/bug32448_6 [new file with mode: 0644]
tests/heal/checkshape/bug32448_7 [new file with mode: 0644]
tests/heal/checkshape/bug32448_8 [new file with mode: 0644]
tests/heal/checkshape/bug32448_9 [new file with mode: 0644]

index f86168f4f1321b443f6a20cadc19bc92b4361d10..5d1f868527ab6d6c35f5269f3ab107560ba595a6 100644 (file)
@@ -7627,6 +7627,7 @@ Where:
 * *result* -- optional parameter, defines custom prefix for the output shape names.
 * *short* -- a short description of the check. 
 * *parallel* -- run check in multithread mode.
+* *exact*    -- run check using exact method.
 
 **checkshape** examines the selected object for topological and geometric coherence. The object should be a three dimensional shape. 
 
index 1e777665ce7d04ed977177f595bff465e4a891bc..9ecf090002c9fd59de17d25a4afeba225f36c6bc 100644 (file)
@@ -347,7 +347,8 @@ private:
 //=======================================================================
 void BRepCheck_Analyzer::Init (const TopoDS_Shape& theShape,
                                const Standard_Boolean B,
-                               const Standard_Boolean theIsParallel)
+                               const Standard_Boolean theIsParallel,
+                               const Standard_Boolean theIsExact)
 {
   if (theShape.IsNull())
   {
@@ -356,7 +357,7 @@ void BRepCheck_Analyzer::Init (const TopoDS_Shape& theShape,
 
   myShape = theShape;
   myMap.Clear();
-  Put (theShape, B, theIsParallel);
+  Put (theShape, B, theIsParallel, theIsExact);
   Perform (theIsParallel);
 }
 
@@ -366,7 +367,8 @@ void BRepCheck_Analyzer::Init (const TopoDS_Shape& theShape,
 //=======================================================================
 void BRepCheck_Analyzer::Put (const TopoDS_Shape& theShape,
                               const Standard_Boolean B,
-                              const Standard_Boolean theIsParallel)
+                              const Standard_Boolean theIsParallel,
+                              const Standard_Boolean theIsExact)
 {
   if (myMap.Contains (theShape))
   {
@@ -382,6 +384,7 @@ void BRepCheck_Analyzer::Put (const TopoDS_Shape& theShape,
     case TopAbs_EDGE:
       HR = new BRepCheck_Edge (TopoDS::Edge (theShape));
       Handle(BRepCheck_Edge)::DownCast(HR)->GeometricControls (B);
+      Handle(BRepCheck_Edge)::DownCast(HR)->SetExactMethod(theIsExact);
       break;
     case TopAbs_WIRE:
       HR = new BRepCheck_Wire (TopoDS::Wire (theShape));
@@ -412,7 +415,7 @@ void BRepCheck_Analyzer::Put (const TopoDS_Shape& theShape,
 
   for (TopoDS_Iterator theIterator (theShape); theIterator.More(); theIterator.Next())
   {
-    Put (theIterator.Value(), B, theIsParallel); // performs minimum on each shape
+    Put (theIterator.Value(), B, theIsParallel, theIsExact); // performs minimum on each shape
   }
 }
 
@@ -420,7 +423,7 @@ void BRepCheck_Analyzer::Put (const TopoDS_Shape& theShape,
 //function : Perform
 //purpose  :
 //=======================================================================
-void BRepCheck_Analyzer::Perform (Standard_Boolean theIsParallel)
+void BRepCheck_Analyzer::Perform (const Standard_Boolean theIsParallel)
 {
   const Standard_Integer aMapSize = myMap.Size();
   const Standard_Integer aMinTaskSize = 10;
index d921efdc64c44ff2f7b6f4d205b9c35122ab355a..2e55832545ea8e0a5436e45030e2ac4ab7c090e8 100644 (file)
@@ -62,9 +62,10 @@ public:
   //! BRepCheck_SelfIntersectingWire
   BRepCheck_Analyzer (const TopoDS_Shape& S,
                       const Standard_Boolean GeomControls = Standard_True,
-                      const Standard_Boolean theIsParallel = Standard_False)
+                      const Standard_Boolean theIsParallel = Standard_False,
+                      const Standard_Boolean theIsExact = Standard_False)
   {
-    Init (S, GeomControls, theIsParallel);
+    Init (S, GeomControls, theIsParallel, theIsExact);
   }
 
   //! <S> is the  shape  to control.  <GeomControls>  If
@@ -85,7 +86,8 @@ public:
   //! BRepCheck_SelfIntersectingWire
   Standard_EXPORT void Init (const TopoDS_Shape& S,
                              const Standard_Boolean GeomControls = Standard_True,
-                             const Standard_Boolean theIsParallel = Standard_False);
+                             const Standard_Boolean theIsParallel = Standard_False,
+                             const Standard_Boolean theIsExact = Standard_False);
 
   //! <S> is a  subshape of the  original shape. Returns
   //! <STandard_True> if no default has been detected on
@@ -145,9 +147,10 @@ private:
 
   Standard_EXPORT void Put (const TopoDS_Shape& S,
                             const Standard_Boolean Gctrl,
-                            const Standard_Boolean theIsParallel);
+                            const Standard_Boolean theIsParallel,
+                            const Standard_Boolean theIsExact);
 
-  Standard_EXPORT void Perform (Standard_Boolean theIsParallel);
+  Standard_EXPORT void Perform (const Standard_Boolean theIsParallel);
 
   Standard_EXPORT Standard_Boolean ValidSub (const TopoDS_Shape& S, const TopAbs_ShapeEnum SubType) const;
 
index 48c3b8c56e4eaf74ce24d81823657aed592e3eb4..2ea87f4afb10e4c6ea70f8fda38fabe5268aa90a 100644 (file)
@@ -75,6 +75,7 @@ BRepCheck_Edge::BRepCheck_Edge(const TopoDS_Edge& E)
 {
   Init(E);
   myGctrl = Standard_True;
+  myIsExactMethod = Standard_False;
 }
 
 //=======================================================================
@@ -321,6 +322,7 @@ void BRepCheck_Edge::InContext(const TopoDS_Shape& S)
 
       BRep_ListIteratorOfListOfCurveRepresentation itcr(TE->Curves());
       Standard_Real eps = Precision::PConfusion();
+      Standard_Boolean aRunParallel = !myMutex.IsNull();
       while (itcr.More()) {
         const Handle(BRep_CurveRepresentation)& cr = itcr.Value();
         if (cr != myCref && cr->IsCurveOnSurface(Su,L)) {
@@ -385,7 +387,8 @@ void BRepCheck_Edge::InContext(const TopoDS_Shape& S)
 
             BRepLib_ValidateEdge aValidateEdge(myHCurve, ACS, SameParameter);
             aValidateEdge.SetExitIfToleranceExceeded(Tol);
-            aValidateEdge.Process();
+            aValidateEdge.SetExactMethod(myIsExactMethod);
+            aValidateEdge.Process(aRunParallel);
             if (!aValidateEdge.IsDone() || !aValidateEdge.CheckTolerance(Tol))
             {
               if (cr->IsCurveOnClosedSurface()) {
@@ -407,7 +410,8 @@ void BRepCheck_Edge::InContext(const TopoDS_Shape& S)
 
               BRepLib_ValidateEdge aValidateEdgeOnClosedSurf(myHCurve, ACS, SameParameter);
               aValidateEdgeOnClosedSurf.SetExitIfToleranceExceeded(Tol);
-              aValidateEdgeOnClosedSurf.Process();
+              aValidateEdgeOnClosedSurf.SetExactMethod(myIsExactMethod);
+              aValidateEdgeOnClosedSurf.Process(aRunParallel);
               if (!aValidateEdgeOnClosedSurf.IsDone() || !aValidateEdgeOnClosedSurf.CheckTolerance(Tol))
               {
                 BRepCheck::Add(lst,BRepCheck_InvalidCurveOnClosedSurface);
@@ -466,7 +470,8 @@ void BRepCheck_Edge::InContext(const TopoDS_Shape& S)
 
             BRepLib_ValidateEdge aValidateEdgeProj(myHCurve, ACS, SameParameter);
             aValidateEdgeProj.SetExitIfToleranceExceeded(Tol);
-            aValidateEdgeProj.Process();
+            aValidateEdgeProj.SetExactMethod(myIsExactMethod);
+            aValidateEdgeProj.Process(aRunParallel);
             if (!aValidateEdgeProj.IsDone() || !aValidateEdgeProj.CheckTolerance(Tol))
             {
               BRepCheck::Add(lst,BRepCheck_InvalidCurveOnSurface);
index 3051c1767387a07418ce78a758b00c6542126e7b..002e17322f7619f54ffb3a5a384932cf7a48dfc4 100644 (file)
@@ -51,6 +51,12 @@ public:
   
   //! Sets status of Edge;
   Standard_EXPORT void SetStatus (const BRepCheck_Status theStatus);
+
+  //! Sets validate edge method
+  void SetExactMethod(Standard_Boolean theIsExact)
+  {
+    myIsExactMethod = theIsExact;
+  }
   
   //! Checks, if polygon on triangulation of heEdge
   //! is out of 3D-curve of this edge.
@@ -64,7 +70,7 @@ private:
   Handle(BRep_CurveRepresentation) myCref;
   Handle(Adaptor3d_Curve) myHCurve;
   Standard_Boolean myGctrl;
-
+  Standard_Boolean myIsExactMethod;
 };
 
 #endif // _BRepCheck_Edge_HeaderFile
index f97a13640e22378d4f160e40d823ff93b9ce33ba..6117637f43fb63c879c3a1f85d8639448fd977c3 100644 (file)
@@ -17,6 +17,7 @@
 #include <Adaptor3d_CurveOnSurface.hxx>
 #include <BRepCheck.hxx>
 #include <Extrema_LocateExtPC.hxx>
+#include <GeomLib_CheckCurveOnSurface.hxx>
 
 //=============================================================================
 //function : BRepLib_ValidateEdge
@@ -32,7 +33,8 @@ BRepLib_ValidateEdge::BRepLib_ValidateEdge(Handle(Adaptor3d_Curve) theReferenceC
   myToleranceForChecking(0),
   myCalculatedDistance(0),
   myExitIfToleranceExceeded(Standard_False),
-  myIsDone(Standard_False)
+  myIsDone(Standard_False),
+  myIsExactMethod(Standard_False)
 { }
 
 //=============================================================================
@@ -95,7 +97,23 @@ void BRepLib_ValidateEdge::SetExitIfToleranceExceeded(Standard_Real theTolerance
 //function : Process
 //purpose  : 
 //=============================================================================
-void BRepLib_ValidateEdge::Process()
+void BRepLib_ValidateEdge::Process(Standard_Boolean theIsMultiThread)
+{
+  if (myIsExactMethod && mySameParameter)
+  {
+    ProcessExact(theIsMultiThread);
+  }
+  else
+  {
+    ProcessApprox();
+  }
+}
+
+//=============================================================================
+//function : ProcessApprox
+//purpose  : 
+//=============================================================================
+void BRepLib_ValidateEdge::ProcessApprox()
 {
   myIsDone = Standard_True;
   Standard_Real aSquareToleranceForChecking = myToleranceForChecking * myToleranceForChecking;
@@ -212,3 +230,19 @@ void BRepLib_ValidateEdge::Process()
   }
   myCalculatedDistance = Sqrt(aMaxSquareDistance);
 }
+
+//=============================================================================
+//function : ProcessExact
+//purpose  : 
+//=============================================================================
+void BRepLib_ValidateEdge::ProcessExact(Standard_Boolean theIsMultiThread)
+{
+  GeomLib_CheckCurveOnSurface aCheckCurveOnSurface(myReferenceCurve);
+  aCheckCurveOnSurface.Perform(myOtherCurve, theIsMultiThread);
+  myIsDone = aCheckCurveOnSurface.IsDone();
+  if (myIsDone)
+  {
+    myCalculatedDistance = aCheckCurveOnSurface.MaxDistance();
+  }
+}
+
index 48fc25c7f2543f06024fbe0a32c8753ab28d60ce..170b8989b75f0799ad6c1fee08fb400ed93aca23 100644 (file)
@@ -21,8 +21,9 @@
 class Adaptor3d_Curve;
 class Adaptor3d_CurveOnSurface;
 
-//! Computes the max distance between 3D-curve and curve on 
-//! surface in fixed points number
+//! Computes the max distance between 3D-curve and curve on surface.
+//! This class uses 2 methods: approximate using finite
+//! number of points (default) and exact 
 class BRepLib_ValidateEdge
 {
 public:
@@ -37,19 +38,30 @@ public:
     myControlPointsNumber = theControlPointsNumber;
   }
 
-  //! Sets the maximal allowed distance in the Process() function. If the distance greater than 
-  //! theToleranceForChecking the Process() function stops. Use this for best performance 
-  //! in case of checking of tolerance.
-  Standard_EXPORT void SetExitIfToleranceExceeded(Standard_Real theToleranceForChecking);
+  //! Sets method to calculate distance: Calculating in finite number of points (if theIsExact
+  //! is false, faster, but possible not correct result) or exact calculating by using 
+  //! BRepLib_CheckCurveOnSurface class (if theIsExact is true, slowly, but more correctly).
+  //! Exact method is used only when edge is SameParameter.
+  //! Default method is calculating in finite number of points
+  void SetExactMethod(Standard_Boolean theIsExact)
+  {
+    myIsExactMethod = theIsExact;
+  }
+
+  //! Sets limit to compute a distance in the Process() function. If the distance greater than 
+  //! theToleranceForChecking the Process() function stopped. Use this in case checking of 
+  //! tolerance for best performcnce. Has no effect in case using exact method.
+  void SetExitIfToleranceExceeded(Standard_Real theToleranceForChecking);
 
   //! Computes the max distance for the 3d curve <myReferenceCurve>
   //! and curve on surface <myOtherCurve>. If the SetExitIfToleranceExceeded()
   //!  function was called before <myCalculatedDistance> contains first 
-  //! greater than SetExitIfToleranceExceeded() parameter value
-  Standard_EXPORT void Process();
+  //! greater than SetExitIfToleranceExceeded() parameter value. In case 
+  //! using exact method always computes real max distance.
+  Standard_EXPORT void Process(Standard_Boolean theIsMultiThread = Standard_False);
 
   //! Returns true if the distance has been found for all points
-  Standard_Boolean IsDone()
+  Standard_Boolean IsDone() const
   {
     return myIsDone;
   }
@@ -67,7 +79,12 @@ private:
   //! Adds some margin for distance checking
   Standard_Real correctTolerance(Standard_Real theTolerance);
 
-private:
+  //! Calculating in finite number of points
+  void ProcessApprox();
+
+  //! Calculating by using BRepLib_CheckCurveOnSurface class
+  void ProcessExact(Standard_Boolean theIsMultiThread);
+
   Handle(Adaptor3d_Curve) myReferenceCurve;
   Handle(Adaptor3d_CurveOnSurface) myOtherCurve;
   Standard_Boolean mySameParameter;
@@ -76,6 +93,7 @@ private:
   Standard_Real myCalculatedDistance;
   Standard_Boolean myExitIfToleranceExceeded;
   Standard_Boolean myIsDone;
+  Standard_Boolean myIsExactMethod;
 };
 
-#endif  // _BRepLib_ValidateEdge_HeaderFile
\ No newline at end of file
+#endif // _BRepLib_ValidateEdge_HeaderFile
index 5f52c7a267879858c8f57f14304b61fdb23ea585..2217258179808b263b6458b568ce9bf4e1864052 100644 (file)
@@ -858,16 +858,17 @@ static Standard_Integer checkshape (Draw_Interpretor& theCommands,
     theCommands << "Usage : checkshape [-top] shape [result] [-short] [-parallel]\n";
     theCommands << "\n";
     theCommands << "Where :\n";
-    theCommands << "   -top   - check topology only.\n";
-    theCommands << "   shape  - the name of the shape to test.\n";
-    theCommands << "   result - the prefix of the output shape names. If it is used, structural\n";
-    theCommands << "            output style will be used. Otherwise - contextual one.\n";
-    theCommands << "   -short - short description of check.\n";
+    theCommands << "   -top      - check topology only.\n";
+    theCommands << "   shape     - the name of the shape to test.\n";
+    theCommands << "   result    - the prefix of the output shape names. If it is used, structural\n";
+    theCommands << "               output style will be used. Otherwise - contextual one.\n";
+    theCommands << "   -short    - short description of check.\n";
     theCommands << "   -parallel - run check in parallel.\n";
+    theCommands << "   -exact    - run check using exact method.\n";
     return 0;
   }
 
-  if (narg > 6)
+  if (narg > 7)
   {
     theCommands << "Invalid number of args!!!\n";
     theCommands << "No args to have help.\n";
@@ -901,6 +902,7 @@ static Standard_Integer checkshape (Draw_Interpretor& theCommands,
   Standard_Boolean IsShortDump = Standard_False;
   Standard_Boolean IsContextDump = Standard_True;
   Standard_Boolean IsParallel = Standard_False;
+  Standard_Boolean IsExact = Standard_False;
   Standard_CString aPref(NULL);
   if (aCurInd < narg && strncmp(a[aCurInd], "-", 1))
   {
@@ -921,6 +923,10 @@ static Standard_Integer checkshape (Draw_Interpretor& theCommands,
     {
       IsParallel = Standard_True;
     }
+    else if (anArg == "-exact")
+    {
+      IsExact = Standard_True;
+    }
     else
     {
       theCommands << "Syntax error at '" << anArg << "'";
@@ -931,7 +937,7 @@ static Standard_Integer checkshape (Draw_Interpretor& theCommands,
   try 
   {
     OCC_CATCH_SIGNALS
-    BRepCheck_Analyzer anAna (aShape, aGeomCtrl, IsParallel);
+    BRepCheck_Analyzer anAna (aShape, aGeomCtrl, IsParallel, IsExact);
     Standard_Boolean   isValid = anAna.IsValid();
 
     if (isValid)
index c1862aa347943865bae7218afbe0c2af4fefb044..71374563112ee0c3aca80f5e23d7911915a29115 100644 (file)
@@ -1,7 +1,7 @@
-puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_51"
+puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_31"
 puts "=========="
 puts "0027814: Parallelize BRepCheck_Analyzer"
 puts "=========="
 puts ""
 
-CheckPerform [locate_data_file OCC394.brep]
\ No newline at end of file
+CheckPerform [locate_data_file OCC396.brep]
\ No newline at end of file
index 71374563112ee0c3aca80f5e23d7911915a29115..09fdb8611fc7acbc8b6bcfe64d056b2068692dba 100644 (file)
@@ -1,7 +1,7 @@
-puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_31"
+puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_287"
 puts "=========="
 puts "0027814: Parallelize BRepCheck_Analyzer"
 puts "=========="
 puts ""
 
-CheckPerform [locate_data_file OCC396.brep]
\ No newline at end of file
+CheckPerform [locate_data_file OCC54.brep]
\ No newline at end of file
diff --git a/tests/heal/checkshape/bug32448_1 b/tests/heal/checkshape/bug32448_1
new file mode 100644 (file)
index 0000000..a6f8cd3
--- /dev/null
@@ -0,0 +1,8 @@
+puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_88"
+puts "=========="
+puts "0032448: Provide exact validating (as option) using GeomLib_CheckCurveOnSurface"
+puts "=========="
+puts ""
+
+restore [locate_data_file bug27814.brep] b
+checkshape b -exact -parallel
diff --git a/tests/heal/checkshape/bug32448_10 b/tests/heal/checkshape/bug32448_10
new file mode 100644 (file)
index 0000000..0984113
--- /dev/null
@@ -0,0 +1,8 @@
+puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_6101"
+puts "=========="
+puts "0032448: Provide exact validating (as option) using GeomLib_CheckCurveOnSurface"
+puts "=========="
+puts ""
+
+restore [locate_data_file OCC54.brep] b
+checkshape b -exact -parallel
diff --git a/tests/heal/checkshape/bug32448_2 b/tests/heal/checkshape/bug32448_2
new file mode 100644 (file)
index 0000000..6e59a84
--- /dev/null
@@ -0,0 +1,7 @@
+puts "=========="
+puts "0032448: Provide exact validating (as option) using GeomLib_CheckCurveOnSurface"
+puts "=========="
+puts ""
+
+restore [locate_data_file 5000-12.brep] b
+checkshape b -exact -parallel
diff --git a/tests/heal/checkshape/bug32448_3 b/tests/heal/checkshape/bug32448_3
new file mode 100644 (file)
index 0000000..713da3b
--- /dev/null
@@ -0,0 +1,8 @@
+puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_3675"
+puts "=========="
+puts "0032448: Provide exact validating (as option) using GeomLib_CheckCurveOnSurface"
+puts "=========="
+puts ""
+
+restore [locate_data_file BPLSEITLI.brep] b
+checkshape b -exact -parallel
diff --git a/tests/heal/checkshape/bug32448_4 b/tests/heal/checkshape/bug32448_4
new file mode 100644 (file)
index 0000000..7308858
--- /dev/null
@@ -0,0 +1,7 @@
+puts "=========="
+puts "0032448: Provide exact validating (as option) using GeomLib_CheckCurveOnSurface"
+puts "=========="
+puts ""
+
+restore [locate_data_file bug24525_License.brep] b
+checkshape b -exact -parallel
diff --git a/tests/heal/checkshape/bug32448_5 b/tests/heal/checkshape/bug32448_5
new file mode 100644 (file)
index 0000000..dc6652c
--- /dev/null
@@ -0,0 +1,8 @@
+puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_8234"
+puts "=========="
+puts "0032448: Provide exact validating (as option) using GeomLib_CheckCurveOnSurface"
+puts "=========="
+puts ""
+
+restore [locate_data_file bug26278_E01754_000000_P00_01_0_VS3_1_20070102_sewed_fixed.brep] b
+checkshape b -exact -parallel
diff --git a/tests/heal/checkshape/bug32448_6 b/tests/heal/checkshape/bug32448_6
new file mode 100644 (file)
index 0000000..a1599c0
--- /dev/null
@@ -0,0 +1,8 @@
+puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_7656"
+puts "=========="
+puts "0032448: Provide exact validating (as option) using GeomLib_CheckCurveOnSurface"
+puts "=========="
+puts ""
+
+restore [locate_data_file bug30360_GES-13500-000.brep] b
+checkshape b -exact -parallel
diff --git a/tests/heal/checkshape/bug32448_7 b/tests/heal/checkshape/bug32448_7
new file mode 100644 (file)
index 0000000..954d6bd
--- /dev/null
@@ -0,0 +1,8 @@
+puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_1943"
+puts "=========="
+puts "0032448: Provide exact validating (as option) using GeomLib_CheckCurveOnSurface"
+puts "=========="
+puts ""
+
+restore [locate_data_file OCC187_from_bug_description.brep] b
+checkshape b -exact -parallel
diff --git a/tests/heal/checkshape/bug32448_8 b/tests/heal/checkshape/bug32448_8
new file mode 100644 (file)
index 0000000..b5befa2
--- /dev/null
@@ -0,0 +1,8 @@
+puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_502"
+puts "=========="
+puts "0032448: Provide exact validating (as option) using GeomLib_CheckCurveOnSurface"
+puts "=========="
+puts ""
+
+restore [locate_data_file OCC394.brep] b
+checkshape b -exact -parallel
diff --git a/tests/heal/checkshape/bug32448_9 b/tests/heal/checkshape/bug32448_9
new file mode 100644 (file)
index 0000000..a3b978b
--- /dev/null
@@ -0,0 +1,8 @@
+puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_467"
+puts "=========="
+puts "0032448: Provide exact validating (as option) using GeomLib_CheckCurveOnSurface"
+puts "=========="
+puts ""
+
+restore [locate_data_file OCC396.brep] b
+checkshape b -exact -parallel