
Wed, 07/17/2013 - 15:51
On a cylindrical face are these negative "UV bounds" correct?
umin -6.2831853071795862
umax -3.1415926535897931
vmin ...
vmax ...
If "yes", there is a bug in BRepAdaptor_Surface::Initialize;
if "no", in ShapeCustom_DirectModification
In my application I use the conversion to IGES with the DirectFaces option, because the pdf documentation says
"Note that the default sequence for writing contains one operator – DirectFaces - which converts elementary surfaces based on left-hand axes (valid in CASCADE) to right-hand axes (which are valid only in IGES)".
While converting the attached shape, an exception is raised, because BRepAdaptor_Surface::Initialize() corrects umin to 0., which is greater than umax :
BRepTools::UVBounds(F,umin,umax,vmin,vmax);
const Handle_Geom_Surface S(BRep_Tool::Surface(F,L));
if (S->IsUPeriodic()) {
Standard_Real ufirst, ulast, vfirst, vlast;
S->Bounds(ufirst, ulast, vfirst, vlast);
if (umin
if (umax > ulast) umax = ulast;
}
(ufirst and ulast are 0 and 6.28...).
The negative values are set by ShapeCustom_DirectModification, which mirrors the PCurve's on the cylindrical face with respect to the V axis (the original values were positive).
I was not able to reproduce the crash in DRAW, maybe because the brepiges command misses the "DirectFaces" option, but the negative u-bounds can be obtained by calling the "directfaces" command
Wed, 07/17/2013 - 15:53
Sorry, this is the right attachment
Tue, 07/23/2013 - 18:50
I am deeply sorry.
Forget this topic:
the bug in BRepAdaptor_Surface was just in OUR OpenCascade, and was put by a colleague of mine.
Mauro