]> OCCT Git - occt-copy.git/commitdiff
Preserving the value of parallelism before parametric branch CR30217
authormaxsson <maxsson9@gmail.com>
Fri, 1 Mar 2019 14:13:53 +0000 (17:13 +0300)
committerazv <azv@opencascade.com>
Wed, 6 Mar 2019 10:55:28 +0000 (13:55 +0300)
src/Extrema/Extrema_ExtCC.cxx
src/GeomliteTest/GeomliteTest_API2dCommands.cxx
tests/bugs/modalg_7/bug30217_1
tests/bugs/modalg_7/bug30217_2
tests/bugs/modalg_7/bug30217_3 [new file with mode: 0644]
tests/bugs/modalg_7/bug30217_4 [new file with mode: 0644]

index 7ee612f23c8c05c45b60052009c83f273dcae8dd..bd3f4686250bb2ac426afbcf33f2a8b1ab74412f 100644 (file)
@@ -249,7 +249,8 @@ void Extrema_ExtCC::Perform()
     }
     default: break;
     }
-    if (mypoints.Size() == 0) {
+    if (mypoints.Size() == 0)
+    {
       myDone = Standard_False;
     }
   } else if (type1 == GeomAbs_Circle && type2 == GeomAbs_Circle) {
@@ -265,8 +266,10 @@ void Extrema_ExtCC::Perform()
     }
   } 
   if(!myDone){
+    Standard_Boolean isParallel = myIsPar;
     myECC.Perform();
     PrepareResults(myECC, U11, U12, U21, U22);
+    myIsPar = myIsPar || isParallel;
   }
 }
 
index 829bc60432d8e0648b4db584792074fc18725f89..f57d65ae73ce2778866157962955a9c595c714ba 100644 (file)
@@ -384,10 +384,10 @@ static Standard_Integer intersect(Draw_Interpretor& di, Standard_Integer n, cons
   Standard_Integer aNbSegments = Intersector.NbSegments();
   for (Standard_Integer i = 1; i <= aNbSegments; i++)
   {
-    di << "Segment #" << i << " found.\n";
-    di << "Curve 1 first parameter:" << S1->FirstParameter() << "  last parameter: " << S1->LastParameter() <<"\n";
-    di << "Curve 2 first parameter:" << S2->FirstParameter() << "  last parameter: " << S2->LastParameter() << "\n";
     Intersector.Segment(i,S1,S2);
+    di << "Segment #" << i << " found.\n";
+    di << "Curve 1 first parameter: " << S1->FirstParameter() << " last parameter: " << S1->LastParameter() <<"\n";
+    di << "Curve 2 first parameter: " << S2->FirstParameter() << " last parameter: " << S2->LastParameter() <<"\n";
     CD = new DrawTrSurf_Curve2d(S1, Draw_bleu, 30);
     dout << CD;
     CD = new DrawTrSurf_Curve2d(S2, Draw_violet, 30);
index 3786d259001af6c151b8a151b3e2bf1ffda72202..78dc99aeba4748d06f47398ce081304bd2bc1145 100644 (file)
@@ -1,5 +1,5 @@
 puts "============"
-puts "OCC30217"
+puts "OCC30217_1"
 puts "============"
 puts ""
 #########################################################################
@@ -16,7 +16,7 @@ set tol_rel 1.0e-2
 set param11 1.8484218380721342
 set param12 1.8484627151687805
 set param21 50.908401295062035
-set param22 1.8484627151687805    
+set param22 50.909328431594709
 
 set info [2dintersect c2 s2 -tol 1e-8]
 regexp {Curve 1 first parameter: +([-0-9.+eE]+) last parameter: +([-0-9.+eE]+)} ${info} full curve1p1 curve1p2
index de0be97d93def4f03e01140c57710ded4ee81b05..6a12fcd6b854b7a4e52b593323c4a65718b589c3 100644 (file)
@@ -1,5 +1,5 @@
 puts "============"
-puts "OCC30217_1"
+puts "OCC30217_2"
 puts "============"
 puts ""
 #########################################################################
@@ -9,8 +9,7 @@ set tol_abs 2.e-7
 
 drseg s -80.461134694338 53.07587187722 0.0 -31.501464018476 67.029737602069 0.0
 circle c -18.339655323916 20.849340929486 0.0 48.019394466707
-set info1 [extrema c s]       
-
+set info1 [extrema c s]
 if {[regexp "ext" ${info1}] != 1} {
   puts "Error : No intersection detected"
 } else {
@@ -24,4 +23,4 @@ if { ${extLength} > $tol_abs } {
   puts "Error: bad distance poins obtained"
 } else {
   puts "OK: good distance between obtained points"
-}                                                                 
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/tests/bugs/modalg_7/bug30217_3 b/tests/bugs/modalg_7/bug30217_3
new file mode 100644 (file)
index 0000000..c5ed10a
--- /dev/null
@@ -0,0 +1,28 @@
+puts "============"
+puts "OCC30217_3"
+puts "============"
+puts ""
+#########################################################################
+# Intersection between a circle and a line not detected (3d)
+#########################################################################
+set tol_abs 2.e-7
+
+drseg s -31.501464018476 67.029737602069 -10.0 -31.501464018476 67.029737602069 0.0
+circle c -18.339655323916 20.849340929486 0.0 48.019394466707
+set info1 [extrema c s]       
+if {[regexp "ext" ${info1}] != 1} {
+  puts "Error : No intersection detected"
+} else {
+  puts "OK: Intersection are detected"
+}
+
+# Distance check
+set infoext1 [dump ext_1]
+
+
+regexp "Parameters : 0 +(\[-0-9*\.+eE\]+)" $infoext1 full  ext1Length ext2Length 
+if { $ext1Length > $tol_abs || $ext2Length > $tol_abs } {
+  puts "Error: bad distance poins obtained"
+} else {
+  puts "OK: good distance between obtained points"
+}                                                                 
\ No newline at end of file
diff --git a/tests/bugs/modalg_7/bug30217_4 b/tests/bugs/modalg_7/bug30217_4
new file mode 100644 (file)
index 0000000..11930cd
--- /dev/null
@@ -0,0 +1,20 @@
+puts "============"
+puts "OCC30217_4"
+puts "============"
+puts ""
+#########################################################################
+# Intersection between a circle and a line not detected (3d)
+#########################################################################
+
+set ExpDist 5
+
+circle c1 0 0 0 0 0 1 5
+line c2 0 0 0 0 0 1
+trim c2 c2 -1 -5e-8
+
+regexp {Infinite number of extremas, distance = +([-0-9.+eE]+)} [extrema c1 c2] full aDist1
+checkreal Distance $aDist1 $ExpDist 1.0e-7 0.0
+
+regexp {Infinite number of extremas, distance = +([-0-9.+eE]+)} [extrema c2 c1] full aDist2
+checkreal Distance $aDist2 $ExpDist 1.0e-7 0.0
+                                                         
\ No newline at end of file