Salome HOME
Fix regression of Extrusion 3D caused by OCCT changes
authoreap <eap@opencascade.com>
Thu, 20 Feb 2020 16:28:41 +0000 (19:28 +0300)
committereap <eap@opencascade.com>
Thu, 20 Feb 2020 16:28:41 +0000 (19:28 +0300)
src/SMESHUtils/SMESH_Delaunay.cxx

index 4771c6da890a3fd79abe7e32eb71e2b409b8cae3..92bbc6e3b54ddeee29a3fedc0e9452ead6c97bca 100644 (file)
@@ -225,11 +225,8 @@ const BRepMesh_Triangle* SMESH_Delaunay::FindTriangle( const gp_XY&
     gp_XY seg = uv - gc;
 
     tria->Edges( linkIDs, ori );
-#if OCC_VERSION_LARGE <= 0x07030000
-    int triaID = _triaDS->IndexOf( *tria );
-#else
-    int triaID = tria - & ( _triaDS->GetElement( 0 ));
-#endif
+
+    const BRepMesh_Triangle* prevTria = tria;
     tria = 0;
 
     for ( int i = 0; i < 3; ++i )
@@ -252,7 +249,9 @@ const BRepMesh_Triangle* SMESH_Delaunay::FindTriangle( const gp_XY&
       double uSeg = ( uv1 - gc ) ^ lin / crossSegLin;
       if ( 0. <= uSeg && uSeg <= 1. )
       {
-        tria = & _triaDS->GetElement( triIDs.Index( 1 + ( triIDs.Index(1) == triaID )));
+        tria = & _triaDS->GetElement( triIDs.Index( 1 ));
+        if ( tria == prevTria )
+          tria = & _triaDS->GetElement( triIDs.Index( 2 ));
         if ( tria->Movability() != BRepMesh_Deleted )
           break;
       }