X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHUtils%2FSMESH_Delaunay.cxx;h=8ae5f1761a41089737828165354d6c0d61d8311c;hb=6ca4db2d7c49474a93e30c02bef83f05b354e540;hp=e53bfd8fcda9257d91bf8ca1026e9f07e372cab1;hpb=651e7566c8d9c267c71320c63d3742a92426aa3e;p=modules%2Fsmesh.git diff --git a/src/SMESHUtils/SMESH_Delaunay.cxx b/src/SMESHUtils/SMESH_Delaunay.cxx index e53bfd8fc..8ae5f1761 100644 --- a/src/SMESHUtils/SMESH_Delaunay.cxx +++ b/src/SMESHUtils/SMESH_Delaunay.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -32,6 +32,8 @@ #include #include +#include + //================================================================================ /*! * \brief Construct a Delaunay triangulation of given boundary nodes @@ -82,7 +84,11 @@ SMESH_Delaunay::SMESH_Delaunay(const std::vector< const UVPtStructVec* > & bound _bndNodes.resize( nbP ); // fill boundary points +#if OCC_VERSION_LARGE <= 0x07030000 BRepMesh::Array1OfVertexOfDelaun bndVert( 1, 1 + nbP ); +#else + IMeshData::Array1OfVertexOfDelaun bndVert( 1, 1 + nbP ); +#endif BRepMesh_Vertex v( 0, 0, BRepMesh_Frontier ); for ( size_t iW = 0; iW < boundaryNodes.size(); ++iW ) { @@ -193,21 +199,22 @@ const BRepMesh_Triangle* SMESH_Delaunay::FindTriangle( const gp_XY& nodeUVs[1] = _triaDS->GetNode( nodeIDs[1] ).Coord(); nodeUVs[2] = _triaDS->GetNode( nodeIDs[2] ).Coord(); - if ( _triaDS->GetNode( nodeIDs[0] ).Movability() == BRepMesh_Frontier && - _triaDS->GetNode( nodeIDs[1] ).Movability() == BRepMesh_Frontier && - _triaDS->GetNode( nodeIDs[2] ).Movability() == BRepMesh_Frontier ) + SMESH_MeshAlgos::GetBarycentricCoords( uv, + nodeUVs[0], nodeUVs[1], nodeUVs[2], + bc[0], bc[1] ); + if ( bc[0] >= 0 && bc[1] >= 0 && bc[0] + bc[1] <= 1 ) { - SMESH_MeshAlgos::GetBarycentricCoords( uv, - nodeUVs[0], nodeUVs[1], nodeUVs[2], - bc[0], bc[1] ); - if ( bc[0] >= 0 && bc[1] >= 0 && bc[0] + bc[1] <= 1 ) + if ( _triaDS->GetNode( nodeIDs[0] ).Movability() != BRepMesh_Frontier || + _triaDS->GetNode( nodeIDs[1] ).Movability() != BRepMesh_Frontier || + _triaDS->GetNode( nodeIDs[2] ).Movability() != BRepMesh_Frontier ) { - bc[2] = 1 - bc[0] - bc[1]; - triaNodes[0] = nodeIDs[0] - 1; - triaNodes[1] = nodeIDs[1] - 1; - triaNodes[2] = nodeIDs[2] - 1; - return tria; + return 0; } + bc[2] = 1 - bc[0] - bc[1]; + triaNodes[0] = nodeIDs[0] - 1; + triaNodes[1] = nodeIDs[1] - 1; + triaNodes[2] = nodeIDs[2] - 1; + return tria; } // look for a neighbor triangle, which is adjacent to a link intersected @@ -217,7 +224,11 @@ 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 tria = 0; for ( int i = 0; i < 3; ++i ) @@ -261,8 +272,13 @@ const BRepMesh_Triangle* SMESH_Delaunay::GetTriangleNear( int iBndNode ) { int nodeIDs[3]; int nbNbNodes = _bndNodes.size(); +#if OCC_VERSION_LARGE <= 0x07030000 const BRepMesh::ListOfInteger & linkIds = _triaDS->LinksConnectedTo( iBndNode + 1 ); BRepMesh::ListOfInteger::const_iterator iLink = linkIds.cbegin(); +#else + const IMeshData::ListOfInteger & linkIds = _triaDS->LinksConnectedTo( iBndNode + 1 ); + IMeshData::ListOfInteger::const_iterator iLink = linkIds.cbegin(); +#endif for ( ; iLink != linkIds.cend(); ++iLink ) { const BRepMesh_PairOfIndex & triaIds = _triaDS->ElementsConnectedTo( *iLink );