0024851: Extra vertex is in the result of Boolean Fuse Operation
authorpkv <pkv@opencascade.com>
Thu, 17 Apr 2014 12:22:10 +0000 (16:22 +0400)
committerapn <apn@opencascade.com>
Thu, 17 Apr 2014 12:22:56 +0000 (16:22 +0400)
class IntTools_FaceFace
   - statc function:
void CorrectSurfaceBoundaries(const TopoDS_Face&  theFace,
                              const Standard_Real theTolerance,
                              Standard_Real&      theumin,
                              Standard_Real&      theumax,
                              Standard_Real&      thevmin,
                              Standard_Real&      thevmax)
The faces based on cylidrical surface has been added to the list of candidates to extend the boundaries

Test case for issue CR24851

src/IntTools/IntTools_FaceFace.cxx
tests/bugs/modalg_5/bug24851 [new file with mode: 0644]

index 0b5694e..ad4a922 100644 (file)
@@ -519,8 +519,8 @@ static Standard_Boolean isTreatAnalityc(const TopoDS_Face& theF1,
 //function : Perform
 //purpose  : intersect surfaces of the faces
 //=======================================================================
-  void IntTools_FaceFace::Perform(const TopoDS_Face& aF1,
-                                  const TopoDS_Face& aF2)
+void IntTools_FaceFace::Perform(const TopoDS_Face& aF1,
+                                const TopoDS_Face& aF2)
 {
   Standard_Boolean RestrictLine = Standard_False, hasCone = Standard_False;
   
@@ -2616,12 +2616,12 @@ Handle(Geom2d_BSplineCurve) MakeBSpline2d(const Handle(IntPatch_WLine)& theWLine
 //function : CorrectSurfaceBoundaries
 //purpose  : 
 //=======================================================================
- void CorrectSurfaceBoundaries(const TopoDS_Face&  theFace,
-                               const Standard_Real theTolerance,
-                               Standard_Real&      theumin,
-                               Standard_Real&      theumax, 
-                               Standard_Real&      thevmin, 
-                               Standard_Real&      thevmax) 
+void CorrectSurfaceBoundaries(const TopoDS_Face&  theFace,
+                              const Standard_Real theTolerance,
+                              Standard_Real&      theumin,
+                              Standard_Real&      theumax, 
+                              Standard_Real&      thevmin, 
+                              Standard_Real&      thevmax) 
 {
   Standard_Boolean enlarge, isuperiodic, isvperiodic;
   Standard_Real uinf, usup, vinf, vsup, delta;
@@ -2662,7 +2662,8 @@ Handle(Geom2d_BSplineCurve) MakeBSpline2d(const Handle(IntPatch_WLine)& theWLine
   if((aType==GeomAbs_BezierSurface) ||
      (aType==GeomAbs_BSplineSurface) ||
      (aType==GeomAbs_SurfaceOfExtrusion) ||
-     (aType==GeomAbs_SurfaceOfRevolution)) {
+     (aType==GeomAbs_SurfaceOfRevolution) ||
+     (aType==GeomAbs_Cylinder)) {
     enlarge=Standard_True;
   }
   //
diff --git a/tests/bugs/modalg_5/bug24851 b/tests/bugs/modalg_5/bug24851
new file mode 100644 (file)
index 0000000..51ea4ef
--- /dev/null
@@ -0,0 +1,27 @@
+puts "============"
+puts "OCC24851"
+puts "============"
+puts ""
+######################################################
+# Extra vertex is in the result of Boolean Fuse Operation
+######################################################
+
+restore [locate_data_file bug24851_q_b1_1.brep] b1
+restore [locate_data_file bug24851_fz712.brep] b2
+
+bop b1 b2
+bopfuse result
+
+set square 9.56837e-05
+
+set nb_v_good 6
+set nb_e_good 8
+set nb_w_good 2
+set nb_f_good 2
+set nb_sh_good 2
+set nb_sol_good 0
+set nb_compsol_good 0
+set nb_compound_good 1
+set nb_shape_good 21
+
+set 2dviewer 1