0025408: Wrong result obtained by General Fuse operator.
authorpkv <pkv@opencascade.com>
Thu, 30 Oct 2014 08:42:32 +0000 (11:42 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 30 Oct 2014 08:43:34 +0000 (11:43 +0300)
Changes:

class BOPTools_AlgoTools2D
        method:
    void BOPTools_AlgoTools2D::AdjustPCurveOnFace
      (const TopoDS_Face& aF,
       const Standard_Real aFirst,
       const Standard_Real aLast,
       const Handle(Geom2d_Curve)& aC2D,
       Handle(Geom2d_Curve)& aC2DA)

The location of 2D-curve is adjusted to face boubaries if necessary
using the precision value in parametric space

Unnecessary comments are removed

Test case for issue CR25408

src/BOPTools/BOPTools_AlgoTools2D.cxx
tests/bugs/modalg_5/bug25408 [new file with mode: 0755]

index 2c700a9..712caa7 100644 (file)
@@ -323,21 +323,17 @@ void BOPTools_AlgoTools2D::AdjustPCurveOnFace
   // du
   du = 0.;
   if (aBAS.IsUPeriodic()) {
-    Standard_Real u2x;
     aUPeriod = aBAS.UPeriod(); 
     //
-    // A. drive u2 into the stall [Umin, Umin+aUPeriod] -> u2x
-    GeomInt::AdjustPeriodic(u2, UMin, UMax, aUPeriod, u2x, du, 0.);
-    //
-    // b. try to clarify u2 using the precision (aDelta)
-    if (fabs(u2x-UMin) < aDelta) {
-        u2=UMin;
-      }
-    else if (fabs(u2x-UMin-aUPeriod) < aDelta) {
+    // a. try to clarify u2 using the precision (aDelta)
+    if (fabs(u2-UMin) < aDelta) {
+      u2=UMin;
+    }
+    else if (fabs(u2-UMin-aUPeriod) < aDelta) {
       u2=UMin+aUPeriod;
     }
-    // C. compute du again using clarified value of u2
-    GeomInt::AdjustPeriodic(u2, UMin, UMax, aUPeriod, u2x, du, 0.);
+    // b. compute du again using clarified value of u2
+    GeomInt::AdjustPeriodic(u2, UMin, UMax, aUPeriod, u2, du, 0.);
     //
     if (du==0.) {
       if (aBAS.GetType()==GeomAbs_Cylinder) {
diff --git a/tests/bugs/modalg_5/bug25408 b/tests/bugs/modalg_5/bug25408
new file mode 100755 (executable)
index 0000000..142edd7
--- /dev/null
@@ -0,0 +1,40 @@
+puts "================"
+puts "OCC25408"
+puts "================"
+puts ""
+#######################################################################
+# Wrong result obtained by General Fuse operator.
+#######################################################################
+
+restore [locate_data_file bug25408_bride_cut.brep] b1
+restore [locate_data_file bug25408_goujon_part_tool2_cut.brep] b4
+restore [locate_data_file bug25408_RevolPart.brep] b5
+
+#
+explode b4 f
+copy b4_1 b4
+#
+explode b5 f
+copy b5_1 b5
+#
+
+bclearobjects
+bcleartools
+baddobjects b1 b4 b5
+
+bfillds
+bbuild result
+
+set square 57200.9
+
+set nb_v_good 54
+set nb_e_good 129
+set nb_w_good 95
+set nb_f_good 95
+set nb_sh_good 22
+set nb_sol_good 22
+set nb_compsol_good 0
+set nb_compound_good 2
+set nb_shape_good 419
+
+set 3dviewer 1