Salome HOME
projects
/
modules
/
smesh.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
22419: EDF SMESH Regression: 3D Extrusion fails
[modules/smesh.git]
/
src
/
StdMeshers
/
StdMeshers_Quadrangle_2D.cxx
diff --git
a/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx
b/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx
index 8ae1eb96f2d00f5b1743f891ff44964a4db1573c..250948ddce0b899f6021831584db70a597070787 100644
(file)
--- a/
src/StdMeshers/StdMeshers_Quadrangle_2D.cxx
+++ b/
src/StdMeshers/StdMeshers_Quadrangle_2D.cxx
@@
-218,7
+218,7
@@
bool StdMeshers_Quadrangle_2D::Compute (SMESH_Mesh& aMesh,
_quadraticMesh = myHelper->IsQuadraticSubMesh(aShape);
myNeedSmooth = false;
_quadraticMesh = myHelper->IsQuadraticSubMesh(aShape);
myNeedSmooth = false;
- FaceQuadStruct::Ptr quad = CheckNbEdges( aMesh, F );
+ FaceQuadStruct::Ptr quad = CheckNbEdges( aMesh, F
, /*considerMesh=*/true
);
if (!quad)
return false;
myQuadStruct = quad;
if (!quad)
return false;
myQuadStruct = quad;
@@
-819,7
+819,8
@@
static bool twoEdgesMeatAtVertex(const TopoDS_Edge& e1,
//=============================================================================
FaceQuadStruct::Ptr StdMeshers_Quadrangle_2D::CheckNbEdges(SMESH_Mesh & aMesh,
//=============================================================================
FaceQuadStruct::Ptr StdMeshers_Quadrangle_2D::CheckNbEdges(SMESH_Mesh & aMesh,
- const TopoDS_Shape & aShape)
+ const TopoDS_Shape & aShape,
+ const bool considerMesh)
{
if ( myQuadStruct && myQuadStruct->face.IsSame( aShape ))
return myQuadStruct;
{
if ( myQuadStruct && myQuadStruct->face.IsSame( aShape ))
return myQuadStruct;
@@
-839,7
+840,7
@@
FaceQuadStruct::Ptr StdMeshers_Quadrangle_2D::CheckNbEdges(SMESH_Mesh &
// find corner vertices of the quad
vector<TopoDS_Vertex> corners;
// find corner vertices of the quad
vector<TopoDS_Vertex> corners;
- int nbDegenEdges, nbSides = getCorners( F, aMesh, edges, corners, nbDegenEdges );
+ int nbDegenEdges, nbSides = getCorners( F, aMesh, edges, corners, nbDegenEdges
, considerMesh
);
if ( nbSides == 0 )
{
return FaceQuadStruct::Ptr();
if ( nbSides == 0 )
{
return FaceQuadStruct::Ptr();
@@
-3459,6
+3460,8
@@
void StdMeshers_Quadrangle_2D::smooth (FaceQuadStruct::Ptr quad)
* \param [out] theVertices - the found corner vertices in the order corresponding to
* the order of EDGEs in \a theWire
* \param [out] theNbDegenEdges - nb of degenerated EDGEs in theFace
* \param [out] theVertices - the found corner vertices in the order corresponding to
* the order of EDGEs in \a theWire
* \param [out] theNbDegenEdges - nb of degenerated EDGEs in theFace
+ * \param [in] theConsiderMesh - if \c true, only meshed VERTEXes are considered
+ * as possible corners
* \return int - number of quad sides found: 0, 3 or 4
*/
//================================================================================
* \return int - number of quad sides found: 0, 3 or 4
*/
//================================================================================
@@
-3467,7
+3470,8
@@
int StdMeshers_Quadrangle_2D::getCorners(const TopoDS_Face& theFace,
SMESH_Mesh & theMesh,
std::list<TopoDS_Edge>& theWire,
std::vector<TopoDS_Vertex>& theVertices,
SMESH_Mesh & theMesh,
std::list<TopoDS_Edge>& theWire,
std::vector<TopoDS_Vertex>& theVertices,
- int & theNbDegenEdges)
+ int & theNbDegenEdges,
+ const bool theConsiderMesh)
{
theNbDegenEdges = 0;
{
theNbDegenEdges = 0;
@@
-3495,7
+3499,7
@@
int StdMeshers_Quadrangle_2D::getCorners(const TopoDS_Face& theFace,
continue;
}
TopoDS_Vertex v = helper.IthVertex( 0, *edge );
continue;
}
TopoDS_Vertex v = helper.IthVertex( 0, *edge );
- if ( SMESH_Algo::VertexNode( v, helper.GetMeshDS() ))
+ if (
!theConsiderMesh ||
SMESH_Algo::VertexNode( v, helper.GetMeshDS() ))
{
double angle = SMESH_MesherHelper::GetAngle( prevE, *edge, theFace );
vertexByAngle.insert( make_pair( angle, v ));
{
double angle = SMESH_MesherHelper::GetAngle( prevE, *edge, theFace );
vertexByAngle.insert( make_pair( angle, v ));