Sarah Benoliel (not verified) Wed, 05/24/2000 - 17:06
Thanx for your answers!
We tried to implement the given functions: (We have a Face S) F = TopoDS::Face(S); surfaceSBFC = BRep_Tool::Surface(F); surfaceSBFC->Bounds(U1, U2, V1, V2); Milieu = surfaceSBFC->Value((U1+U2)/2.0, (V1+V2)/2.0);
But, when we create a box, the result of these functions applicated to one Face of this Box, is the centre of the infinite geometrical plane on which the Face is constructed, and not the middle of the Face (limited by its Wire). How can we correct this?
Thomas Moreau (not verified) Wed, 05/24/2000 - 18:23
It's true. Some surfaces are bounded (for example bezier, bspline), others surfaces are not bounded (for example a plane). In this case, you should compute the face parameters from its wire.
For that, have a look at the package BRep_Tool. There are differents possibilities for you:
BRep_Tool::Range()
BRep_Tool::Parameter()
BRep_Tool::Parameters()
In your case, you can get the needed parameters from your 4 vertex of your plane (3 are enough) using BRep_Tool::Parameters().
You can use method BRepTools::UVBounds(aFace, Umin,Vmin,Umax,Vmax) to obtain UV bounds of your face (not the surface!). When you use aSurf->Bounds you always obtain UV bounds of the SURFACE, which of coarse, can be infinite. But what you need is to obtain UV bounds of the FACE, and above method will return exactly what you want.
Tue, 05/23/2000 - 18:47
Use the same way as before with methods:
GeomSurface::Bounds (Standard_Real& U1, Standard_Real& U2,Standard_Real& V1,Standard_Real& V2)
GeomSurface::Value((U1+U2)/2.0, (V1+V2)/2.0)
Wed, 05/24/2000 - 17:06
Thanx for your answers!
We tried to implement the given functions: (We have a Face S) F = TopoDS::Face(S); surfaceSBFC = BRep_Tool::Surface(F); surfaceSBFC->Bounds(U1, U2, V1, V2); Milieu = surfaceSBFC->Value((U1+U2)/2.0, (V1+V2)/2.0);
But, when we create a box, the result of these functions applicated to one Face of this Box, is the centre of the infinite geometrical plane on which the Face is constructed, and not the middle of the Face (limited by its Wire). How can we correct this?
Wed, 05/24/2000 - 18:23
It's true. Some surfaces are bounded (for example bezier, bspline), others surfaces are not bounded (for example a plane). In this case, you should compute the face parameters from its wire.
For that, have a look at the package BRep_Tool. There are differents possibilities for you:
BRep_Tool::Range()
BRep_Tool::Parameter()
BRep_Tool::Parameters()
In your case, you can get the needed parameters from your 4 vertex of your plane (3 are enough) using BRep_Tool::Parameters().
I hope it will be helpful.
Regards, Thomas
Thu, 05/25/2000 - 08:02
Hello!
You can use method BRepTools::UVBounds(aFace, Umin,Vmin,Umax,Vmax) to obtain UV bounds of your face (not the surface!). When you use aSurf->Bounds you always obtain UV bounds of the SURFACE, which of coarse, can be infinite. But what you need is to obtain UV bounds of the FACE, and above method will return exactly what you want.
Best regards,
Maxim ZVEREV.