MantisBT
Mantis Bug Tracker Workflow

View Revisions: Issue #27753 All Revisions ] Back to Issue ]
Summary 0027753: Nearly plane cones should not be created by BRepPrimAPI_MakeRevol
Revision 2016-08-08 10:22 by Timo
Description If a curve is rotated using BRepPrimAPI_MakeRevol, different kinds of geometrical objects are created depending on the nature of the curve. If the curve is a line the result can be a Geom_Plane, a Geom_ConicalSurface or a Geom_CylindricalSurface depending on the angle between line and rotation axis. The decision is made in GeomAdaptor_SurfaceOfRevolution::GetType().

There is a certain range (when the angle is nearly Pi/2) which leads to nearly plane cones. According to 0027705, nearly plane cones should be avoided to use because they lead to different problems within OCCT and sometimes also when exported to other CAD systems.

Therefore, it is proposed to modify GeomAdaptor_SurfaceOfRevolution::GetType() to create a Geom_SurfaceOfRevolution instead of such nearly plane cones. The question is, what would be the best threshold angle when to create a Geom_SurfaceOfRevolution instead of a cone.

In our code we use something like [pseudo code]:
  (Math.Abs(Geom_ConicalSurface.SemiAngle() - Math.PI / 2) <= 1e-6)

But this might be possible to improve.

In the probleamtic case of 0027705 the semi angle is 1.5707963236984104. So, it differs from Pi/2 by 3e-9.
In 0027015 the semi angle is 1.5707963. It differs from Pi/2 by 2e-8.
Revision 2016-08-08 10:10 by Timo
Description If a curve is rotated using BRepPrimAPI_MakeRevol, different kinds of geometrical objects are created depending on the nature of the curve. If the curve is a line the result can be a Geom_Plane, a Geom_ConicalSurface or a Geom_CylindricalSurface depending on the angle between line and rotation axis. The decision is made in GeomAdaptor_SurfaceOfRevolution::GetType().

There is a certain range (when the angle is nearly Pi/2) which leads to nearly plane cones. According to 0027705, nearly plane cones should be avoided to use because they lead to different problems within OCCT and sometimes also when exported to other CAD systems.

Therefore, it is proposed to modify GeomAdaptor_SurfaceOfRevolution::GetType() to create a Geom_SurfaceOfRevolution instead of such nearly plane cones. The question is, what would be the best threshold angle when to create a Geom_SurfaceOfRevolution instead of a cone.

In our code we use something like [pseudo code]:
  (Math.Abs(Geom_ConicalSurface.SemiAngle() - Math.PI / 2) <= 1e-6)

But this might be possible to improve.

In the probleamtic case of 0027705 the semi angle is 1.5707963236984104. So, it differs from Pi/2 by 3e-9.
Revision 2016-08-05 17:26 by Timo
Description If a curve is rotated using BRepPrimAPI_MakeRevol, different kinds of geometrical objects are created depending on the nature of the curve. If the curve is a line the result can be a Geom_Plane, a Geom_ConicalSurface or a Geom_CylindricalSurface depending on the angle between line and rotation axis. The decision is made in GeomAdaptor_SurfaceOfRevolution::GetType().

There is a certain range (when the angle is nearly Pi/2) which leads to such nearly plane cones. According to 0027705, nearly plane cones should be avoided to use because they lead to different problems within OCCT and sometimes also when exported to other CAD systems.

Therefore, it is proposed to modify GeomAdaptor_SurfaceOfRevolution::GetType() to create a Geom_SurfaceOfRevolution instead of such nearly plane cones. The question is, what would be the best threshold angle when to create a Geom_SurfaceOfRevolution instead of a cone.

In our code we use something like [pseudo code]:
  (Math.Abs(Geom_ConicalSurface.SemiAngle() - Math.PI / 2) <= 1e-6)

But this might be possible to improve.

In the probleamtic case of 0027705 the semi angle is It is 1.5707963236984104. So, it differs from Pi/2 by 3e-9.


Copyright © 2000 - 2019 MantisBT Team
Powered by Mantis Bugtracker