While UV Iso parameters are obtained in StdPrs_Isolines, UV limits should be applied only if face bounds has infinite values.
In the issue case, the UV values are greater than UVLimits and not infinite. This fix makes possible to have correct Iso lines in presentation without modification of UV limits beforehead.
BRepTools::UVBounds (theFace, aUmin, aUmax, aVmin, aVmax);
- aUmin = Max (aUmin, -theUVLimit);
- aUmax = Min (aUmax, theUVLimit);
- aVmin = Max (aVmin, -theUVLimit);
- aVmax = Min (aVmax, theUVLimit);
+ if (Precision::IsInfinite (aUmin))
+ aUmin = -theUVLimit;
+ if (Precision::IsInfinite (aUmax))
+ aUmax = theUVLimit;
+ if (Precision::IsInfinite (aVmin))
+ aVmin = -theUVLimit;
+ if (Precision::IsInfinite (aVmax))
+ aVmax = theUVLimit;
TopLoc_Location aLocation;
const Handle(Geom_Surface)& aSurface = BRep_Tool::Surface (theFace, aLocation);
--- /dev/null
+# isolines on infinite cylinder
+# maximum parameter value for a view sets UV limit for isolines on infinite object
+
+cylinder c 0 0 0 0 0 1 10
+mkface f c
+
+vinit
+vdisplay -dispMode 0 f
+vaspects -defaults -setMaxParamValue 10
+visos f 10 4 1
+vfit
--- /dev/null
+puts "========"
+puts "0029356: Modeling Algorithms - GCPnts_TangentialDeflection hangs on specific curve"
+puts "========"
+
+if {[info commands testreadiges] == ""} {pload XSDRAW}
+testreadiges [locate_data_file bug29356.igs] a
+
+vinit View1
+vdisplay -dispMode 0 a
+visos a 12 6 1
+vfit
--- /dev/null
+# isolines on infinite prism based on spline edge with poles closed to 1.4e+6
+
+if {[info commands testreadiges] == ""} {pload XSDRAW}
+testreadiges [locate_data_file bug29356.igs] a
+
+mksurface s a
+viso c s 0
+dump c
+mkedge e c
+
+haxo
+donly e
+prism r e 0 1 0 Inf
+fit
+xbounds r
+
+vinit
+vdisplay r
+visos r 2 3 1
+vfit
+vzoom 3000
+
+vdump $imagedir/${casename}_zoom.png
--- /dev/null
+# isolines on finite prism based on spline edge with poles closed to 1.4e+6
+
+if {[info commands testreadiges] == ""} {pload XSDRAW}
+testreadiges [locate_data_file bug29356.igs] a
+
+mksurface s a
+viso c s 0
+dump c
+mkedge e c
+
+haxo
+donly e
+prism r e 0 1 0 Fin
+fit
+xbounds r
+
+vinit
+vdisplay r
+visos r 2 2 1
+vfit