0024266: Wrong result obtained by 'bopargcheck'
authorpkv <pkv@opencascade.com>
Thu, 24 Oct 2013 09:12:25 +0000 (13:12 +0400)
committerabv <abv@opencascade.com>
Thu, 24 Oct 2013 12:03:27 +0000 (16:03 +0400)
   - method:IntTools_EdgeFace has been changed
Standard_Boolean IntTools_EdgeFace::IsProjectable(const Standard_Real aT) const
The checking the distance between the point on the curve projected point has been added.

IntTools packages were modified

Test cases for issue CR24266

src/IntTools/IntTools_EdgeFace.cxx
tests/bugs/modalg_5/bug24266 [new file with mode: 0755]

index 58fa4d6..c653fc4 100755 (executable)
@@ -413,53 +413,21 @@ void IntTools_EdgeFace::CheckData()
 //function : IsProjectable
 //purpose  : 
 //=======================================================================
-  Standard_Boolean IntTools_EdgeFace::IsProjectable(const Standard_Real t) const
+Standard_Boolean IntTools_EdgeFace::IsProjectable(const Standard_Real aT) const
 {
-  Standard_Boolean bFlag;
-  Standard_Real Umin, Usup, Vmin, Vsup;
-
-  Umin=myS.FirstUParameter();
-  Usup=myS.LastUParameter();
-  Vmin=myS.FirstVParameter();
-  Vsup=myS.LastVParameter ();
-  
-  gp_Pnt P;
-  myC.D0(t, P);
-  GeomAPI_ProjectPointOnSurf aProjector;
+  Standard_Boolean bFlag; 
+  gp_Pnt aPC;
   //
-  Standard_Real ULD = 0., VLD = 0.;
-
-  GeomAPI_ProjectPointOnSurf& aLocProj = myContext->ProjPS(myFace);
-  aLocProj.Perform(P);
-  bFlag = aLocProj.IsDone();
-  
-  if(bFlag) {
-    aLocProj.LowerDistanceParameters(ULD, VLD);
-  }
+  myC.D0(aT, aPC);
+  bFlag=myContext->IsValidPointForFace(aPC, myFace, myCriteria);
   //
-
-  if (bFlag) {
-    bFlag=Standard_False;
-
-    // 
-    TopAbs_State aState;
-    gp_Pnt2d aP2d(ULD, VLD);
-
-    aState = myContext->FClass2d(myFace).Perform(aP2d);
-    //
-    
-    if (aState==TopAbs_IN || aState==TopAbs_ON) {
-      bFlag=Standard_True;
-    }
-  }
   return bFlag;
 }
-
 //=======================================================================
 //function : DistanceFunction
 //purpose  : 
 //=======================================================================
-  Standard_Real IntTools_EdgeFace::DistanceFunction(const Standard_Real t)
+Standard_Real IntTools_EdgeFace::DistanceFunction(const Standard_Real t)
 {
   Standard_Real Umin, Usup, Vmin, Vsup, aD;
   //
diff --git a/tests/bugs/modalg_5/bug24266 b/tests/bugs/modalg_5/bug24266
new file mode 100755 (executable)
index 0000000..398d1c1
--- /dev/null
@@ -0,0 +1,19 @@
+puts "============"
+puts "OCC24266"
+puts "============"
+puts ""
+######################################################
+# Wrong result obtained by 'bopargcheck'
+######################################################
+
+restore [locate_data_file bug24266_qx.brep] result
+
+set info [bopargcheck result]
+
+if { [regexp "Faulties, that can not be treated by BOP, are detected" ${info}] == 1 } {
+    puts "Error : Wrong result"
+} else {
+    puts "OK : Good result"
+}
+
+set 3dviewer 1