X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_Cartesian_3D.cxx;h=85a984c309ac5078ab5aa9c4ab15aadada50d6e2;hb=93781217abf598f9815e290739ef6b579007308a;hp=749236780869080a8152e511ce775ceac856c21f;hpb=a17b36970bc61da1d664453c615754997c925b18;p=modules%2Fsmesh.git diff --git a/src/StdMeshers/StdMeshers_Cartesian_3D.cxx b/src/StdMeshers/StdMeshers_Cartesian_3D.cxx index 749236780..85a984c30 100644 --- a/src/StdMeshers/StdMeshers_Cartesian_3D.cxx +++ b/src/StdMeshers/StdMeshers_Cartesian_3D.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 @@ -25,6 +25,7 @@ #include "StdMeshers_Cartesian_3D.hxx" #include "SMDS_MeshNode.hxx" +#include "SMESHDS_Mesh.hxx" #include "SMESH_Block.hxx" #include "SMESH_Comment.hxx" #include "SMESH_Mesh.hxx" @@ -35,7 +36,6 @@ #include #include -#include #include @@ -73,6 +73,7 @@ #include #include #include +#include #include #include #include @@ -90,6 +91,15 @@ //#undef WITH_TBB #ifdef WITH_TBB + +#ifdef WIN32 +// See https://docs.microsoft.com/en-gb/cpp/porting/modifying-winver-and-win32-winnt?view=vs-2019 +// Windows 10 = 0x0A00 +#define WINVER 0x0A00 +#define _WIN32_WINNT 0x0A00 + +#endif + #include //#include #endif @@ -106,8 +116,8 @@ using namespace std; */ //============================================================================= -StdMeshers_Cartesian_3D::StdMeshers_Cartesian_3D(int hypId, int studyId, SMESH_Gen * gen) - :SMESH_3D_Algo(hypId, studyId, gen) +StdMeshers_Cartesian_3D::StdMeshers_Cartesian_3D(int hypId, SMESH_Gen * gen) + :SMESH_3D_Algo(hypId, gen) { _name = "Cartesian_3D"; _shapeType = (1 << TopAbs_SOLID); // 1 bit /shape type @@ -1369,7 +1379,7 @@ namespace } if ( surf->IsKind( STANDARD_TYPE(Geom_BSplineSurface )) || surf->IsKind( STANDARD_TYPE(Geom_BezierSurface ))) - if ( !noSafeTShapes.insert((const Standard_Transient*) _face.TShape() ).second ) + if ( !noSafeTShapes.insert( _face.TShape().get() ).second ) isSafe = false; double f, l; @@ -1409,7 +1419,7 @@ namespace edgeIsSafe = false; } } - if ( !edgeIsSafe && !noSafeTShapes.insert((const Standard_Transient*) e.TShape() ).second ) + if ( !edgeIsSafe && !noSafeTShapes.insert( e.TShape().get() ).second ) isSafe = false; } return isSafe; @@ -2459,7 +2469,7 @@ namespace ip._faceIDs = e2fIt->second; ip._shapeID = edgeID; - // discretize the EGDE + // discretize the EDGE GCPnts_UniformDeflection discret( curve, deflection, true ); if ( !discret.IsDone() || discret.NbPoints() < 2 ) continue; @@ -2612,34 +2622,34 @@ namespace { enum { X = 1, Y = 2, Z = 4 }; // == 001, 010, 100 int nbFacets = 0; - int vertex = 0, egdeMask = 0; + int vertex = 0, edgeMask = 0; if ( Abs( _grid->_coords[0][ _i ] - ip->_uvw[0] ) < _grid->_tol ) { facets[ nbFacets++ ] = SMESH_Block::ID_F0yz; - egdeMask |= X; + edgeMask |= X; } else if ( Abs( _grid->_coords[0][ _i+1 ] - ip->_uvw[0] ) < _grid->_tol ) { facets[ nbFacets++ ] = SMESH_Block::ID_F1yz; vertex |= X; - egdeMask |= X; + edgeMask |= X; } if ( Abs( _grid->_coords[1][ _j ] - ip->_uvw[1] ) < _grid->_tol ) { facets[ nbFacets++ ] = SMESH_Block::ID_Fx0z; - egdeMask |= Y; + edgeMask |= Y; } else if ( Abs( _grid->_coords[1][ _j+1 ] - ip->_uvw[1] ) < _grid->_tol ) { facets[ nbFacets++ ] = SMESH_Block::ID_Fx1z; vertex |= Y; - egdeMask |= Y; + edgeMask |= Y; } if ( Abs( _grid->_coords[2][ _k ] - ip->_uvw[2] ) < _grid->_tol ) { facets[ nbFacets++ ] = SMESH_Block::ID_Fxy0; - egdeMask |= Z; + edgeMask |= Z; } else if ( Abs( _grid->_coords[2][ _k+1 ] - ip->_uvw[2] ) < _grid->_tol ) { facets[ nbFacets++ ] = SMESH_Block::ID_Fxy1; vertex |= Z; - egdeMask |= Z; + edgeMask |= Z; } switch ( nbFacets ) @@ -2655,7 +2665,7 @@ namespace { SMESH_Block::ID_Ex00, 0, SMESH_Block::ID_Ex10, 0, SMESH_Block::ID_Ex01, 0, SMESH_Block::ID_Ex11 } }; - switch ( egdeMask ) { + switch ( edgeMask ) { case X | Y: sub = edge[ 0 ][ vertex ]; break; case X | Z: sub = edge[ 1 ][ vertex ]; break; default: sub = edge[ 2 ][ vertex ]; @@ -2914,7 +2924,7 @@ namespace proj.Perform( testPnt ); if ( proj.IsDone() && proj.NbPoints() > 0 ) { - Quantity_Parameter u,v; + Standard_Real u,v; proj.LowerDistanceParameters( u,v ); if ( proj.LowerDistance() <= 0.1 * _grid->_tol ) @@ -3046,24 +3056,24 @@ namespace else if ( eMidOut != edges.end() ) edges.splice( edges.end(), edges, edges.begin(), eMidOut ); - // sort nodes accoring to the order of edges + // sort nodes according to the order of edges _Node* orderNodes [20]; - TGeomID orderShapeIDs[20]; + //TGeomID orderShapeIDs[20]; size_t nbN = 0; - TGeomID id, *pID; + TGeomID id, *pID = 0; for ( e = edges.begin(); e != edges.end(); ++e ) { if (( id = _grid->_shapes.FindIndex( SMESH_MesherHelper::IthVertex( 0, *e ))) && (( pID = std::find( &nShapeIds[0], nShapeIdsEnd, id )) != nShapeIdsEnd )) { - orderShapeIDs[ nbN ] = id; + //orderShapeIDs[ nbN ] = id; orderNodes [ nbN++ ] = nodes[ pID - &nShapeIds[0] ]; *pID = -1; } if (( id = _grid->_shapes.FindIndex( *e )) && (( pID = std::find( &nShapeIds[0], nShapeIdsEnd, id )) != nShapeIdsEnd )) { - orderShapeIDs[ nbN ] = id; + //orderShapeIDs[ nbN ] = id; orderNodes [ nbN++ ] = nodes[ pID - &nShapeIds[0] ]; *pID = -1; } @@ -3157,7 +3167,7 @@ namespace const F_IntersectPoint* firstIntPnt = 0; if ( link._nodes[0]->Node() ) // 1st node is a hexa corner { - curIntPnt._paramOnLine = coords[ ijk[ iDir ]] - coords[0]; + curIntPnt._paramOnLine = coords[ ijk[ iDir ]] - coords[0] + _grid->_tol; const GridLine& line = _grid->_lines[ iDir ][ lineIndex[ iL ]]; multiset< F_IntersectPoint >::const_iterator ip = line._intPoints.upper_bound( curIntPnt ); @@ -3387,7 +3397,7 @@ namespace } //================================================================================ /*! - * \brief Classify a point by grid paremeters + * \brief Classify a point by grid parameters */ bool Hexahedron::isOutParam(const double uvw[3]) const { @@ -3587,7 +3597,7 @@ bool StdMeshers_Cartesian_3D::Compute(SMESH_Mesh & theMesh, facesItersectors[i].Intersect(); #endif - // put interesection points onto the GridLine's; this is done after intersection + // put intersection points onto the GridLine's; this is done after intersection // to avoid contention of facesItersectors for writing into the same GridLine // in case of parallel work of facesItersectors for ( size_t i = 0; i < facesItersectors.size(); ++i ) @@ -3618,7 +3628,7 @@ bool StdMeshers_Cartesian_3D::Compute(SMESH_Mesh & theMesh, for ( ; solidExp.More() && volIt->more(); solidExp.Next() ) { const SMDS_MeshElement* vol = volIt->next(); - sm1->RemoveElement( vol, /*isElemDeleted=*/false ); + sm1->RemoveElement( vol ); meshDS->SetMeshElementOnShape( vol, solidExp.Current() ); } }