Archived issue #0028003
Cannot revolve a face with a straight B-spline edge lying on axis of revolution
Description
It is not possible to revolve a face if one of its edges is a straight B-spline edge that lies on the axis of revolution.
If the B-spline is replaced by a line, the revolution is possible.
It is understandable that there are problems if a B-spline is very close to or intersecting the axis of revolution but shouldn't the case when all control points of the spline lie on the axis be supported?
If the B-spline is replaced by a line, the revolution is possible.
It is understandable that there are problems if a B-spline is very close to or intersecting the axis of revolution but shouldn't the case when all control points of the spline lie on the axis be supported?
Steps to reproduce
restore Attachment 2 (BREP) s
whatis s
vinit
vdisplay s
checkshape s
revol r s 0 0 0 0 0 1 360
#=> works
whatis r
checkshape r
vdisplay r
restore Attachment 3 (BREP) s
whatis s
vclear
vdisplay s
checkshape s
revol r s 0 0 0 0 0 1 360
#=> An exception was caught [revision removed] : Standard_ConstructionError: Adaptor3d_SurfaceOfRevolution : Axe and meridian are confused
#** Exception ** [revision removed] : Standard_ConstructionError: Adaptor3d_SurfaceOfRevolution : Axe and meridian are confused
whatis s
vinit
vdisplay s
checkshape s
revol r s 0 0 0 0 0 1 360
#=> works
whatis r
checkshape r
vdisplay r
restore Attachment 3 (BREP) s
whatis s
vclear
vdisplay s
checkshape s
revol r s 0 0 0 0 0 1 360
#=> An exception was caught [revision removed] : Standard_ConstructionError: Adaptor3d_SurfaceOfRevolution : Axe and meridian are confused
#** Exception ** [revision removed] : Standard_ConstructionError: Adaptor3d_SurfaceOfRevolution : Axe and meridian are confused
Public activity
4 archived notes
Participants are labeled by their role within this record.
If the following lines are removed from GeomAdaptor_SurfaceOfRevolution::Load(const gp_Ax1& V), the operation works:
if ( Ratio >= 100 ) {
Standard_ConstructionError::Raise("Adaptor3d_SurfaceOfRevolution : Axe and meridian are confused");
}
Ox = ( (Oz^gp_Vec(PP.XYZ()-O.XYZ()))^Oz);
The result is a valid solid according to checkshape. However, it has an edge lying on the axis and bopcheck complains about the self-intersection between the edge on axis and the plane. See "Attachment 1 (PNG)". If the input shape has a line instead of a spline lying on the axis, the resulting solid does not have an edge on the aixs.
if ( Ratio >= 100 ) {
Standard_ConstructionError::Raise("Adaptor3d_SurfaceOfRevolution : Axe and meridian are confused");
}
Ox = ( (Oz^gp_Vec(PP.XYZ()-O.XYZ()))^Oz);
The result is a valid solid according to checkshape. However, it has an edge lying on the axis and bopcheck complains about the self-intersection between the edge on axis and the plane. See "Attachment 1 (PNG)". If the input shape has a line instead of a spline lying on the axis, the resulting solid does not have an edge on the aixs.
This bug is fixed with #0028326.
Dear Commenter 1, please test if it is reproduced.
Related records