if(mdpr.IsDone()) {
Standard_Integer nbsolvalid = 0;
Standard_Integer n = mdpr.NbSolutions();
+ Standard_Integer aNbBadSol = 0;
for(Standard_Integer i = 1; i<=n ; i++) {
Standard_Real t = mdpr.Value(i);
t += ParamOfNewPL;
a0 = PSolT.SquareDistance(PSolL);
if(a0>0.0000000001) {
+ aNbBadSol++;
#if 0
cout<<" ------- Erreur : P Ligne < > P Tore "<<endl;
cout<<"Ligne : X:"<<PSolL.X()<<" Y:"<<PSolL.Y()<<" Z:"<<PSolL.Z()<<" l:"<<t<<endl;
nbsolvalid++;
}
}
- nbpt = nbsolvalid;
- done = Standard_True;
+ if (n > 0 && nbsolvalid == 0 && aNbBadSol == n)
+ {
+ nbpt = 0;
+ done = Standard_False;
+ }
+ else
+ {
+ nbpt = nbsolvalid;
+ done = Standard_True;
+ }
}
else {
nbpt = 0;
--- /dev/null
+puts "========"
+puts "0029530: Cannot intersec line with torus"
+puts "========"
+puts ""
+
+line l 20849.8369546166 -51477.7110215995 0 0 0 1
+torus s1 20849.8369546165 -16150.0401784893 -0.465280626514954 0 0 -1 -1 0 0 36035.8315681522 1000.78348430862
+
+intersect result l s1
+
+set full1 ""
+regexp "Point\\s*:\\s*(\[-0-9.+eE\]+)\\s*,\\s*(\[-0-9.+eE\]+)\\s*,\\s*(\[-0-9.+eE\]+)\\s*" [dump result_1] full1 px1 py1 pz1
+
+if {$full1 != ""} {
+ checkreal PointX $px1 2.084983695461660e+004 1.0e-7 0
+ checkreal PointY $py1 -5.147771102159950e+004 1.0e-7 0
+ checkreal PointZ $pz1 7.066952174026758e+002 1.0e-7 0
+} else {
+ puts "Error : no intersection point"
+}
+
+set full2 ""
+regexp "Point\\s*:\\s*(\[-0-9.+eE\]+)\\s*,\\s*(\[-0-9.+eE\]+)\\s*,\\s*(\[-0-9.+eE\]+)\\s*" [dump result_2] full2 px2 py2 pz2
+
+if {$full2 != ""} {
+ checkreal PointX $px2 2.084983695461660e+004 1.0e-7 0
+ checkreal PointY $py2 -5.147771102159950e+004 1.0e-7 0
+ checkreal PointZ $pz2 -7.076257786556961e+002 1.0e-7 0
+} else {
+ puts "Error : no intersection point"
+}
+
--- /dev/null
+puts "========"
+puts "0030194: Modeling Algorithms - Intersection points between line and torus are not found"
+puts "========"
+puts ""
+
+restore [locate_data_file bug30194_HA-8579.brep] a
+line l 18000 2000 4000 0 0 -1
+explode a f
+mksurface s1 a_1
+intersect result l s1
+
+set full1 ""
+regexp "Point\\s*:\\s*(\[-0-9.+eE\]+)\\s*,\\s*(\[-0-9.+eE\]+)\\s*,\\s*(\[-0-9.+eE\]+)\\s*" [dump result_1] full1 px1 py1 pz1
+
+if {$full1 != ""} {
+ checkreal PointX $px1 1.8e4 1.0e-7 0
+ checkreal PointY $py1 2.0e3 1.0e-7 0
+ checkreal PointZ $pz1 7.898712797729002e+003 1.0e-7 0
+} else {
+ puts "Error : no intersection point"
+}
+
+set full2 ""
+regexp "Point\\s*:\\s*(\[-0-9.+eE\]+)\\s*,\\s*(\[-0-9.+eE\]+)\\s*,\\s*(\[-0-9.+eE\]+)\\s*" [dump result_2] full2 px2 py2 pz2
+
+if {$full2 != ""} {
+ checkreal PointX $px2 1.8e4 1.0e-7 0
+ checkreal PointY $py2 2.0e3 1.0e-7 0
+ checkreal PointZ $pz2 1.012872022709980e+002 1.0e-7 0
+} else {
+ puts "Error : no intersection point"
+}
+