0027222: Empty result of making volume operation
authoremv <emv@opencascade.com>
Tue, 30 Aug 2016 05:36:48 +0000 (08:36 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 8 Sep 2016 08:28:14 +0000 (11:28 +0300)
1. BOPAlgo_MakerVolume - Taking into account the possibility of Same Domain faces
   while collecting the faces for building the solids;
2. BOPDS_DS - Making the check on coincidence of edges consistent with the intersection
   algorithm which also adds the Precision::Confusion() to the intersection tolerance;
3. Test case for the issue.
4. Adjusting test cases (improvements) to their new behavior.

src/BOPAlgo/BOPAlgo_MakerVolume.cxx
src/BOPDS/BOPDS_DS.cxx
tests/boolean/volumemaker/A3
tests/boolean/volumemaker/A7
tests/boolean/volumemaker/B6
tests/boolean/volumemaker/C2
tests/bugs/modalg_6/bug27222 [new file with mode: 0644]

index b596db0..6980848 100644 (file)
@@ -200,6 +200,7 @@ void BOPAlgo_MakerVolume::CollectFaces()
   //
   Standard_Integer i, aNbShapes;
   BOPCol_ListIteratorOfListOfShape aIt;
+  BOPCol_MapOfShape aMFence;
   //
   aNbShapes = myDS->NbSourceShapes();
   for (i = 0; i < aNbShapes; ++i) {
@@ -217,7 +218,9 @@ void BOPAlgo_MakerVolume::CollectFaces()
       aIt.Initialize(aLFIm);
       for (; aIt.More(); aIt.Next()) {
         const TopoDS_Shape& aFIm = aIt.Value();
-        AddFace(aFIm, myFaces);
+        if (aMFence.Add(aFIm)) {
+          AddFace(aFIm, myFaces);
+        }
       }
     }
     else {
index a89cad8..199487f 100644 (file)
@@ -1734,7 +1734,7 @@ Standard_Boolean BOPDS_DS::CheckCoincidence
     aD=aPPC.LowerDistance();
     //
     aTol=BRep_Tool::Tolerance(aE1);
-    aTol=aTol+BRep_Tool::Tolerance(aE2);
+    aTol=aTol+BRep_Tool::Tolerance(aE2) + Precision::Confusion();
     if (aD<aTol) {
       aT2x=aPPC.LowerDistanceParameter();
       if (aT2x>aT21 && aT2x<aT22) {
index 0ca9e04..e18c15d 100644 (file)
@@ -1,10 +1,6 @@
 # test script on make volume operation
 # plane unstable
 
-puts "TODO OCC26020 ALL: Error: bopcheck failed"
-puts "TODO ?OCC26020 ALL: Faulty shapes in variables faulty_1"
-puts "TODO OCC26020 ALL: Error : The area of result shape is"
-
 # planar face 
 plane pln_f1 0 -870 -1.3877787807814457e-014 0 1 1.1102230246251565e-016
 erase pln_f1
@@ -38,5 +34,5 @@ mkface f6 pln_f6 -1000000 1000000 -1000000 1000000
 # make volume operation 
 mkvolume result f1 f2 f3 f4 f5 f6
 
-checkprops result -s 1183220.
+checkprops result -s 1.00062e+006
 
index 8ddc568..8f2b444 100644 (file)
@@ -1,9 +1,6 @@
 # test script on make volume operation
 # plane unstable
 
-puts "TODO OCC26020 ALL: Error: bopcheck failed"
-puts "TODO OCC26020 ALL: Faulty shapes in variables faulty_1 to"
-
 # planar face 
 plane pln_f1 -1863.18155559 1250 -1538.57262704 1.110223024625157e-016 1 1.1102230246251563e-016
 erase pln_f1
index f3edcef..e55a344 100644 (file)
@@ -1,6 +1,3 @@
-puts "TODO OCC26020 ALL: Faulty shapes in variables faulty_1 to faulty_"
-puts "TODO OCC26020 ALL: Error: bopcheck failed"
-
 # test script on make volume operation
 # plane
 
index 9656230..74406a5 100644 (file)
@@ -1,9 +1,6 @@
 # test script on make volume operation
 # plane
 
-puts "TODO ?OCC26020 ALL: Faulty shapes in variables faulty_1 to faulty_"
-puts "TODO OCC26020 ALL: Error: bopcheck failed"
-
 # planar face 
 plane pln_f1 0 840 1.2212453270876722e-014 0 -1 -1.1102230246251565e-016
 erase pln_f1
diff --git a/tests/bugs/modalg_6/bug27222 b/tests/bugs/modalg_6/bug27222
new file mode 100644 (file)
index 0000000..2861692
--- /dev/null
@@ -0,0 +1,13 @@
+puts "============"
+puts "OCC27222"
+puts "============"
+puts ""
+######################################################
+# Empty result of making volume operation
+######################################################
+
+restore [locate_data_file bug27222.brep] cf
+mkvolume result cf -c
+
+checkprops result -s 838000 -v 3.5068e+007
+checknbshapes result -solid 1
\ No newline at end of file