BRepLib::FindValidRange - check each sampling point to be out of tolerance sphere of the vertex.
Test case for the issue.
// cycle to go out of local singularity
gp_Vec aD1;
theCurve.D1(anUOut, aP, aD1);
- if (aD1.SquareMagnitude() < aD1Mag)
+ isOut = (aP.SquareDistance(theVertPnt) > aSqTol);
+ if (!isOut && aD1.SquareMagnitude() < aD1Mag)
{
aStepLocal *= 2.;
anUOut += aStepLocal;
--- /dev/null
+puts "========"
+puts "OCC30090: Modeling Algorithms - BRepLib::FindValidRange does not find valid range for the edge"
+puts "========"
+puts ""
+
+restore [locate_data_file bug30090_edge.brep] e
+if {[regexp {([-0-9.+eE]+) ([-0-9.+eE]+)} [validrange e] full first last]} {
+ checkreal First $first 0.043210875526017684 1.e-7 0
+ checkreal Last $last 0.98374162670821774 1.e-7 0
+} else {
+ puts "Error: valid range is not found"
+}