0023676: Intersection between edge and a face produces extra vertex
authorpkv <pkv@opencascade.com>
Fri, 18 Jan 2013 08:10:48 +0000 (12:10 +0400)
committerpkv <pkv@opencascade.com>
Fri, 18 Jan 2013 08:10:48 +0000 (12:10 +0400)
src/IntTools/IntTools_EdgeFace.cxx
tests/bugs/modalg/bug23676 [new file with mode: 0755]

index b0a4912..c8f3872 100755 (executable)
@@ -1415,11 +1415,12 @@ void IntTools_EdgeFace::CheckData()
                                                        Standard_Real& aTx) 
 {
   Standard_Real aTF, aTL, Tol, U1f,U1l,V1f,V1l, af, al,aDist2, aMinDist2, aTm, aDist2New;
+  Standard_Real aEpsT;
   Standard_Boolean theflag=Standard_False;
   Standard_Integer aNbExt, i, iLower ;
 
   aCP.Range1(aTF, aTL);
-
+  aEpsT=8.e-5;
   aTm=0.5*(aTF+aTL);
   aDist2=DistanceFunction(aTm);
   aDist2 *= aDist2;
@@ -1473,15 +1474,15 @@ void IntTools_EdgeFace::CheckData()
   Extrema_POnSurf aPOnS;
   anExtrema.Points(iLower, aPOnC, aPOnS);
 
-  
   aTx=aPOnC.Parameter();
-  
-  if (fabs (aTx-aTF) < myEpsT) {
-    return !theflag;
+  ///
+  if (fabs (aTx-aTF) < aEpsT) {
+    return theflag;
   }
 
-  if (fabs (aTx-aTL) < myEpsT) {
-    return !theflag;
+  if (fabs (aTx-aTL) < aEpsT) {
+    return theflag;
   }
 
   if (aTx>aTF && aTx<aTL) {
diff --git a/tests/bugs/modalg/bug23676 b/tests/bugs/modalg/bug23676
new file mode 100755 (executable)
index 0000000..3e30ef1
--- /dev/null
@@ -0,0 +1,26 @@
+puts "============"
+puts "CR23676"
+puts "============"
+puts ""
+#########################################################
+## Intersection between edge and a face produces extra vertex
+#########################################################
+
+restore [locate_data_file bug23651_q1.brep] b1
+
+explode b1
+copy b1_1 b1
+copy b1_3 b2
+
+bop b1 b2
+bopcut result
+
+set nb_v_good 2
+set nb_e_good 1
+set nb_w_good 1
+set nb_f_good 0
+set nb_sh_good 0
+set nb_sol_good 0
+set nb_compsol_good 0
+set nb_compound_good  1
+set nb_shape_good 5