Thu, 05/30/2019 - 13:32
Hello all,
I have some question about the usage of the collision detection with BRepExtrema_ShapeProximity()
I can use only shapes that have brep data (loaded from iges or step or internally built) and that can be triangulated with BRepMesh_IncrementalMesh().
If the shape don't have the triangulation done, BRepExtrema_ShapeProximity() crashes !
1) In that case, how can I check if the shape has been already triangulated ? This to avoid to re-mesh the shape if it is not required.
2) How can I check if the shape after BRepMesh_IncrementalMesh() is a valid shape for BRepExtrema_ShapeProximity() ? This to avoid the crash.
3) Is there a method to use triangulated shapes, built with Poly_Triangulation as files stl ?
I think that the shape loaded with Poly_Triangulation have the necessary triangulation for BRepExtrema_ShapeProximity, but it crashes
How can I solve this ?
Mon, 06/03/2019 - 08:54
> If the shape don't have the triangulation done, BRepExtrema_ShapeProximity() crashes !
Algorithm might return failed status, throw exception on invalid parameters, but not to "crash".
If you experience a crash - it is a good reason reporting an issue, with necessary reproduction steps, of course:
https://dev.opencascade.org/index.php?q=home/get_involved
> 1) In that case, how can I check if the shape has been already triangulated ? This to avoid to re-mesh the shape if it is not required.
BRepTools::Triangulation().
> 2) How can I check if the shape after BRepMesh_IncrementalMesh() is a valid shape for BRepExtrema_ShapeProximity() ? This to avoid the crash.
BRepMesh_IncrementalMesh can fail on invalid geometry (or fail due bugs in algorithm), in which case some faces within the given shape might have a NULL triangulation.