]> OCCT Git - occt-copy.git/commitdiff
0027557: Unstable HLR tests
authorjgv <jgv@opencascade.com>
Mon, 6 Jun 2016 15:58:40 +0000 (18:58 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 9 Jun 2016 09:38:15 +0000 (12:38 +0300)
The following modifications were done for stability:
- Precision::PConfusion() was set as parameter of Classifier instead of 0.0
- Coinciding vertices of outlines are united to exclude neighborhood of common vertex from curve-curve intersection
- Draw command "hlrin3d" was modified to prevent exception

Minor corrections

Corrections of test cases for issue CR27557

33 files changed:
src/HLRBRep/HLRBRep_Data.cxx
src/HLRTest/HLRTest.cxx
src/HLRTopoBRep/HLRTopoBRep_DSFiller.cxx
tests/bugs/modalg_6/bug25908
tests/bugs/modalg_6/bug27341_102
tests/bugs/modalg_6/bug27341_103
tests/bugs/modalg_6/bug27341_301
tests/bugs/modalg_6/bug27341_302
tests/bugs/modalg_6/bug27341_303
tests/bugs/modalg_6/bug27341_304
tests/bugs/modalg_6/bug27341_305
tests/bugs/modalg_6/bug27341_306
tests/bugs/modalg_6/bug27341_307
tests/bugs/modalg_6/bug27341_308
tests/bugs/modalg_6/bug27341_309
tests/bugs/modalg_6/bug27341_310
tests/bugs/modalg_6/bug27341_311
tests/bugs/modalg_6/bug27341_312
tests/bugs/modalg_6/bug27341_313
tests/bugs/modalg_6/bug27341_314
tests/bugs/modalg_6/bug27341_315
tests/bugs/modalg_6/bug27341_316
tests/bugs/modalg_6/bug27341_317
tests/bugs/modalg_6/bug27341_318
tests/bugs/modalg_6/bug27341_319
tests/bugs/modalg_6/bug27341_320
tests/bugs/modalg_6/bug27341_322
tests/bugs/modalg_6/bug27341_323
tests/bugs/modalg_6/bug27341_324
tests/bugs/modalg_6/bug27341_326
tests/bugs/modalg_6/bug27341_327
tests/bugs/modalg_6/bug27341_328
tests/bugs/modalg_6/bug27341_329

index 4f6ac729c217510a26b5e9943f71496cce5caa0b..63e7ee0ef481890f9d3a478c2570bf51d27fb769 100644 (file)
@@ -1987,7 +1987,7 @@ HLRBRep_Data::Classify (const Standard_Integer E,
     HLRAlgo::EncodeMinMax((Standard_Address)VertMin,
                          (Standard_Address)VertMax,
                          (Standard_Address)MinMaxVert);
-
+    /*
 #ifdef OCCT_DEBUG
        {
          Standard_Integer qwe,qwep8,q,q1,q2;
@@ -2027,6 +2027,7 @@ HLRBRep_Data::Classify (const Standard_Integer E,
          cout<<endl;
        }
  #endif
+    */
 
     if (((MaxFace1 - MinVert1) & 0x80008000) != 0 ||
        ((MaxVert1 - MinFace1) & 0x80008000) != 0 ||
@@ -2109,7 +2110,9 @@ HLRBRep_Data::Classify (const Standard_Integer E,
            
            do {
              gp_Pnt2d pnt2d(u,v);
-             if (myClassifier->Classify(pnt2d,0.0)!=TopAbs_OUT) {
+             if (myClassifier->Classify(pnt2d,Precision::PConfusion())
+                  != TopAbs_OUT)
+              {
                InsideRestriction = Standard_True;
                state = TopAbs_IN;
                Level++;
index 891dc058678905fe4e1edf87314408114493ff19..2af070ded86e76157109404c3f41f5a2b9f05388 100644 (file)
@@ -487,11 +487,14 @@ static Standard_Integer hlrin3d(Draw_Interpretor& , Standard_Integer n, const ch
   BB.MakeCompound(Result);
   
   TopoDS_Shape SharpEdges = Reflector.GetCompoundOf3dEdges(HLRBRep_Sharp, Standard_True, Standard_True);
-  BB.Add(Result, SharpEdges);
+  if (!SharpEdges.IsNull())
+    BB.Add(Result, SharpEdges);
   TopoDS_Shape OutLines = Reflector.GetCompoundOf3dEdges(HLRBRep_OutLine, Standard_True, Standard_True);
-  BB.Add(Result, OutLines);
+  if (!OutLines.IsNull())
+    BB.Add(Result, OutLines);
   TopoDS_Shape SmoothEdges = Reflector.GetCompoundOf3dEdges(HLRBRep_Rg1Line, Standard_True, Standard_True);
-  BB.Add(Result, SmoothEdges);
+  if (!SmoothEdges.IsNull())
+    BB.Add(Result, SmoothEdges);
   
   DBRep::Set(a[1], Result);
 
index 3237d0e24edd09dfdffa0aefc4e14ef4dd180ae9..d451dc829c351bda2154db28ce21662405e12afc 100644 (file)
@@ -454,6 +454,46 @@ void  HLRTopoBRep_DSFiller::InsertFace (const Standard_Integer /*FI*/,
       }
     }
   }
+
+  //Correction of internal outlines: unite coinciding vertices
+  const Standard_Real SqTol = tol*tol;
+  TopTools_ListIteratorOfListOfShape itl1(IntL);
+  for (; itl1.More(); itl1.Next())
+  {
+    TopoDS_Edge anIntLine = TopoDS::Edge(itl1.Value());
+    anIntLine.Orientation(TopAbs_FORWARD);
+    TopoDS_Vertex aVer [2];
+    TopExp::Vertices(anIntLine, aVer[0], aVer[1]);
+    TopTools_ListIteratorOfListOfShape itl2 = itl1;
+    for (; itl2.More(); itl2.Next())
+    {
+      TopoDS_Edge anIntLine2 = TopoDS::Edge(itl2.Value());
+      anIntLine2.Orientation(TopAbs_FORWARD);
+      if (anIntLine2.IsSame(anIntLine))
+        continue;
+      TopoDS_Vertex aVer2 [2];
+      TopExp::Vertices(anIntLine2, aVer2[0], aVer2[1]);
+      for (Standard_Integer i = 0; i < 2; i++)
+      {
+        if (i == 1 && aVer[0].IsSame(aVer[1]))
+          continue;
+        gp_Pnt Pnt1 = BRep_Tool::Pnt(aVer[i]);
+        for (Standard_Integer j = 0; j < 2; j++)
+        {
+          if (aVer[i].IsSame(aVer2[j]))
+            continue;
+          gp_Pnt Pnt2 = BRep_Tool::Pnt(aVer2[j]);
+          if (Pnt1.SquareDistance(Pnt2) <= SqTol)
+          {
+            BRep_Builder aBB;
+            aBB.Remove(anIntLine2, aVer2[j]);
+            aVer[i].Orientation((j==0)? TopAbs_FORWARD : TopAbs_REVERSED);
+            aBB.Add(anIntLine2, aVer[i]);
+          }
+        }
+      }
+    }
+  }
 }
 
 //=======================================================================
index 6e497b36ad2e581464ae457d4d00dc907347de9d..9adc0380812e2442b8b02c1e21f119e7af782834 100755 (executable)
@@ -20,15 +20,15 @@ compound vl v1l vnl vol vil result
 
 set nbshapes_expected "
 Number of shapes in shape
- VERTEX    : 167
- EDGE      : 84
+ VERTEX    : 93
+ EDGE      : 47
  WIRE      : 0
  FACE      : 0
  SHELL     : 0
  SOLID     : 0
  COMPSOLID : 0
  COMPOUND  : 1
- SHAPE     : 252
+ SHAPE     : 141
 "
 
 checknbshapes result -ref ${nbshapes_expected} -t -m "HLRToShape"
index b96ea1bc2060e142c90f3bf55ed8799696da2645..66d389f11abf6f538065fc74b42448a2652f80b5 100644 (file)
@@ -22,6 +22,6 @@ build3d result
 fit
 
 checkprops result -l 291.117
-checknbshapes result -vertex 18 -edge 9
+checknbshapes result -vertex 16 -edge 8
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 88767982a8e4db3be28c0d5a105d334235ba7b8f..1dcb7f0d55bcd4ff4aac372b4430b49f7c65aa57 100644 (file)
@@ -22,12 +22,6 @@ build3d result
 fit
 
 checkprops result -l 334.113
-
-# 0027526: Excess micro-edge in HLR visualization of a torus
-if { [regexp {Windows} [dversion]] } {
-   checknbshapes result -vertex 24 -edge 12
-} else {
-   checknbshapes result -vertex 26 -edge 13
-}
+checknbshapes result -vertex 24 -edge 12
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index c94be6eedd099525118d45a163c24931945ed096..5c48031e798b6f15830987cbc0ac0aa121a74fa6 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 1188.11
-checknbshapes result -vertex 324 -edge 163
+checkprops result -l 1030.62
+checknbshapes result -vertex 236 -edge 119
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index a4efaf481075606e3d8b5a3fa7182a2afa277b2c..c6289f38aca971e4a6a4f7302db722afa8bf7a2b 100644 (file)
@@ -22,13 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 425.969
-
-# 0027526: Excess micro-edge in HLR visualization of a torus
-if { [regexp {Windows} [dversion]] } {
-   checknbshapes result -vertex 198 -edge 99
-} else {
-   checknbshapes result -vertex 200 -edge 100
-}
+checkprops result -l 414.732
+checknbshapes result -vertex 200 -edge 100
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 38d8dc1c782683ac73c855432a7be09d0aa0cc81..0d5fe66e3b70c0b648be12047291f53c9449e258 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 3299.23
-checknbshapes result -vertex 648 -edge 324
+checkprops result -l 3249.9
+checknbshapes result -vertex 634 -edge 317
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index ac74a3ed7105e956fe19cca5679f9b6d01168413..0eb1c3b8c73f903678434930b06a7b3d42317f55 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 3016.59
-checknbshapes result -vertex 1388 -edge 696
+checkprops result -l 2867.9
+checknbshapes result -vertex 1365 -edge 684
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 919c0edbc813967e38af30115a260636c5cdbc68..1cc13388eee4dbd45de0341f94e1a47c0c9e2f78 100644 (file)
@@ -23,6 +23,6 @@ build3d result
 fit
 
 checkprops result -l 1760.66
-checknbshapes result -vertex 508 -edge 254
+checknbshapes result -vertex 500 -edge 250
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index bea0290da54694a667338a6d212004dfad3c88ab..96e3667eeb84dcd77ec17abf50960ddb60d72ebb 100644 (file)
@@ -23,6 +23,6 @@ build3d result
 fit
 
 checkprops result -l 2893.98
-checknbshapes result -vertex 725 -edge 363
+checknbshapes result -vertex 697 -edge 349
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 50e8e2fa1d47a3e2f3cdd3361c803aec253331b6..9981db483911a592b126b0449c9be31789e83125 100644 (file)
@@ -22,13 +22,7 @@ build3d result
 
 fit
 
-# 0027526: Excess micro-edge in HLR visualization of a torus
-if { [regexp {Windows} [dversion]] } {
-   checkprops result -l 2377.14
-   checknbshapes result -vertex 1008 -edge 507
-} else {
-   checkprops result -l 2345.73
-   checknbshapes result -vertex 1007 -edge 506
-}
+checkprops result -l 2282.11
+checknbshapes result -vertex 943 -edge 474
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index ee1ea92858bcefeeb847a5bf38453c9e19a8fc65..86251a44881af0ccad12437d17655219fa411c6d 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 1260.37
-checknbshapes result -vertex 527 -edge 264
+checkprops result -l 1169.48
+checknbshapes result -vertex 482 -edge 241
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 140784c2e702118d316c751f58ae765813b1e8af..b0c072f8a90e51a60eba23f529f4b88a95475a97 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 2040.68
-checknbshapes result -vertex 344 -edge 172
+checkprops result -l 2010.95
+checknbshapes result -vertex 312 -edge 156
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 68b76813135d03b384ad5d5e03c651dadd6274f4..5f3f168411c1a5a257eef9f75854826f3a1ca919 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 808.299
-checknbshapes result -vertex 578 -edge 289
+checkprops result -l 778.117
+checknbshapes result -vertex 550 -edge 275
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index cb19133eb54ac4ed6603120db8534351d93be528..539909aa9268264e666873bd62e41e19b1b5cbc6 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 1124.09
-checknbshapes result -vertex 354 -edge 177
+checkprops result -l 1095.44
+checknbshapes result -vertex 328 -edge 164
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index f9296c62df1fae1221c8d16367cc9f1ebbfded65..6fe0f0822ae833df2662cb89b71bb318c60704d2 100644 (file)
@@ -23,6 +23,6 @@ build3d result
 fit
 
 checkprops result -l 520.703
-checknbshapes result -vertex 310 -edge 155
+checknbshapes result -vertex 306 -edge 153
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 8010ba3ac9028571b3bc81c45baf58df525325c2..f4f64f670924e5f037842985cfbc7f9c333ab456 100644 (file)
@@ -23,6 +23,6 @@ build3d result
 fit
 
 checkprops result -l 9662.5
-checknbshapes result -vertex 4531 -edge 2272
+checknbshapes result -vertex 4417 -edge 2215
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index f85af44e91c39e9ba6364b1489cf7316879e1d30..202779d415ce6cff9caa49679912cba2d4ac38e0 100644 (file)
@@ -23,12 +23,6 @@ build3d result
 fit
 
 checkprops result -l 5910.01
-
-# 0027526: Excess micro-edge in HLR visualization of a torus
-if { [regexp {Windows} [dversion]] } {
-   checknbshapes result -vertex 1461 -edge 731
-} else {
-   checknbshapes result -vertex 1460 -edge 730
-}
+checknbshapes result -vertex 1406 -edge 703
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 371de00d38a6f8c0b1feb7751d2d9c41b395cad6..e2e8168620b28f7540460ed44596927bc8be03b3 100644 (file)
@@ -22,13 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 5343.53
-
-# 0027526: Excess micro-edge in HLR visualization of a torus
-if { [regexp {Windows} [dversion]] } {
-   checknbshapes result -vertex 1813 -edge 909
-} else {
-   checknbshapes result -vertex 1812 -edge 908
-}
+checkprops result -l 5219.21
+checknbshapes result -vertex 1692 -edge 848
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 084b3a5d97e72533e6f96e1e22da85ead95b1ef9..b6fdfd2cfef78632c657d8d74e6704343a68aa87 100644 (file)
@@ -23,6 +23,6 @@ build3d result
 fit
 
 checkprops result -l 1764.64
-checknbshapes result -vertex 353 -edge 177
+checknbshapes result -vertex 345 -edge 173
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index b678670dae6ea096f604eb91330e2fffcb95b019..ba824f05eec73b0d10b4bc20249df1d443bcba3e 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 2647.04
-checknbshapes result -vertex 614 -edge 307
+checkprops result -l 2619.72
+checknbshapes result -vertex 578 -edge 289
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 24fcd64a72e57731e43d1557de9bf12059921bc8..9aa7a7c3bdea58a01ed34c0646a37f685f57847e 100644 (file)
@@ -23,6 +23,6 @@ build3d result
 fit
 
 checkprops result -l 2429.7
-checknbshapes result -vertex 387 -edge 194
+checknbshapes result -vertex 379 -edge 190
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 7b8fbd6d8918dd886c535b50d9e9968dc5d2e400..a03d77fca84decc2678cd667dacfac695cd1836c 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 792.344
-checknbshapes result -vertex 410 -edge 205
+checkprops result -l 755.552
+checknbshapes result -vertex 376 -edge 188
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 798d120395fb3441989c44bf1dbc706b217ed4f9..6f2b240d0287995dc87a54974f85bd991bce90c2 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 1751.95
-checknbshapes result -vertex 867 -edge 434
+checkprops result -l 1726.77
+checknbshapes result -vertex 801 -edge 401
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index abdf1bd70cdd4fdfbff07ac6ad1f103aebd80cad..51cd0119c92d136a1249051676cbbf83d88cb170 100644 (file)
@@ -23,12 +23,6 @@ build3d result
 fit
 
 checkprops result -l 6584.94
-
-# 0027526: Excess micro-edge in HLR visualization of a torus
-if { [regexp {Windows} [dversion]] } {
-   checknbshapes result -vertex 819 -edge 410
-} else {
-   checknbshapes result -vertex 818 -edge 409
-}
+checknbshapes result -vertex 774 -edge 387
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index c04566cded553e420e60c06f9540d11b03ef2abc..c51947875a0c29a7079b09447db1d6926764c06b 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 838.306
-checknbshapes result -vertex 478 -edge 239
+checkprops result -l 813.531
+checknbshapes result -vertex 452 -edge 226
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index edd427bc40ba29666b018610686addd84fcafcb4..dad9044f348b1cdf07bf940f680988e86d3c4576 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 220.507
-checknbshapes result -vertex 110 -edge 55
+checkprops result -l 211.007
+checknbshapes result -vertex 102 -edge 51
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index d760d25d14486faa6705d4bbd8d2a5b47461daf2..dedf13d855590145d03bbe82675d5b42b3b08de6 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 565.837
-checknbshapes result -vertex 324 -edge 162
+checkprops result -l 521.037
+checknbshapes result -vertex 316 -edge 158
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 0656bb67f16a76e1c75f81a1627d8c42575ac7fb..a722999620b1a8d738e0ff7442c3a3394753b2fe 100644 (file)
@@ -11,7 +11,7 @@ pload QAcommands
 
 testreadstep [locate_data_file bug27341_conboom.stp] a
 
-set viewname "right"
+set viewname "back"
 
 smallview
 top
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 23600.7
-checknbshapes result -vertex 174 -edge 87
+checkprops result -l 48596.2
+checknbshapes result -vertex 312 -edge 156
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index cb3a3d99f7ae8e095217827e0fd311b48b5dcef3..4aef17776487d2e28a898fd3ef29967ae12729f1 100644 (file)
@@ -22,7 +22,7 @@ build3d result
 
 fit
 
-checkprops result -l 47.1886
-checknbshapes result -vertex 70 -edge 35
+checkprops result -l 40.3211
+checknbshapes result -vertex 60 -edge 30
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png
index 9c9d9b7330301f91051d8583d2d20375fa8489ab..3313c76201b7d128e438c770332303bb5f2e036f 100644 (file)
@@ -24,7 +24,7 @@ build3d result
 
 fit
 
-checkprops result -l 1147.49
-checknbshapes result -vertex 298 -edge 149
+checkprops result -l 1126.76
+checknbshapes result -vertex 280 -edge 140
 
 checkview -screenshot -2d -path ${imagedir}/${test_image}.png