mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-16 21:20:35 +05:00
fix failure of non-regression test SMESH_TEST/Grids/smesh/mesh_Projection_2D/A1
Avoid returning EDGE position for 2 nodes on the same EDGE, while the medium node should be on FACE. The case is a triangle whose 3 nodes are on the same EDGE. The worst is that in this case the medium node which is logically on FACE falls to a straight EDGE, as the triangle is of zero area (thanks to MEFISTO) std::pair<int, TopAbs_ShapeEnum> GetMediumPos(const SMDS_MeshNode* n1, const SMDS_MeshNode* n2, + const bool useCurSubShape=false);
This commit is contained in:
parent
6444728ac0
commit
9f9b9d6ceb
@ -934,11 +934,17 @@ bool SMESH_MesherHelper::CheckNodeU(const TopoDS_Edge& E,
|
|||||||
//function : GetMediumPos
|
//function : GetMediumPos
|
||||||
//purpose : Return index and type of the shape (EDGE or FACE only) to
|
//purpose : Return index and type of the shape (EDGE or FACE only) to
|
||||||
// set a medium node on
|
// set a medium node on
|
||||||
|
//param useCurSubShape: if true, returns the shape set via SetSubShape()
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
|
||||||
std::pair<int, TopAbs_ShapeEnum> SMESH_MesherHelper::GetMediumPos(const SMDS_MeshNode* n1,
|
std::pair<int, TopAbs_ShapeEnum>
|
||||||
const SMDS_MeshNode* n2)
|
SMESH_MesherHelper::GetMediumPos(const SMDS_MeshNode* n1,
|
||||||
|
const SMDS_MeshNode* n2,
|
||||||
|
const bool useCurSubShape)
|
||||||
{
|
{
|
||||||
|
if ( useCurSubShape && !myShape.IsNull() )
|
||||||
|
return std::make_pair( myShapeID, myShape.ShapeType() );
|
||||||
|
|
||||||
TopAbs_ShapeEnum shapeType = TopAbs_SHAPE;
|
TopAbs_ShapeEnum shapeType = TopAbs_SHAPE;
|
||||||
int shapeID = -1;
|
int shapeID = -1;
|
||||||
TopoDS_Shape shape;
|
TopoDS_Shape shape;
|
||||||
@ -1041,7 +1047,7 @@ const SMDS_MeshNode* SMESH_MesherHelper::GetMediumNode(const SMDS_MeshNode* n1,
|
|||||||
TopoDS_Face F; gp_XY uv[2];
|
TopoDS_Face F; gp_XY uv[2];
|
||||||
bool uvOK[2] = { false, false };
|
bool uvOK[2] = { false, false };
|
||||||
|
|
||||||
pair<int, TopAbs_ShapeEnum> pos = GetMediumPos( n1, n2 );
|
pair<int, TopAbs_ShapeEnum> pos = GetMediumPos( n1, n2, mySetElemOnShape );
|
||||||
|
|
||||||
// get positions of the given nodes on shapes
|
// get positions of the given nodes on shapes
|
||||||
if ( pos.second == TopAbs_FACE )
|
if ( pos.second == TopAbs_FACE )
|
||||||
|
@ -529,7 +529,8 @@ public:
|
|||||||
* \brief Return index and type of the shape (EDGE or FACE only) to set a medium node on
|
* \brief Return index and type of the shape (EDGE or FACE only) to set a medium node on
|
||||||
*/
|
*/
|
||||||
std::pair<int, TopAbs_ShapeEnum> GetMediumPos(const SMDS_MeshNode* n1,
|
std::pair<int, TopAbs_ShapeEnum> GetMediumPos(const SMDS_MeshNode* n1,
|
||||||
const SMDS_MeshNode* n2);
|
const SMDS_MeshNode* n2,
|
||||||
|
const bool useCurSubShape=false);
|
||||||
/*!
|
/*!
|
||||||
* \brief Add a link in my data structure
|
* \brief Add a link in my data structure
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user