mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-26 09:20:34 +05:00
0020452: EDF 1056 SMESH : 2D Projection Issue
static int GetOrderedEdges (const TopoDS_Face& theFace, TopoDS_Vertex theFirstVertex, std::list< TopoDS_Edge >& theEdges, - std::list< int > & theNbVertexInWires); + std::list< int > & theNbVertexInWires, + const bool theShapeAnalysisAlgo=false);
This commit is contained in:
parent
2e5ccf9f57
commit
57781aac7a
@ -952,26 +952,39 @@ int SMESH_Block::GetShapeIDByParams ( const gp_XYZ& theCoord )
|
|||||||
return id + 1; // shape ids start at 1
|
return id + 1; // shape ids start at 1
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//================================================================================
|
||||||
//function : GetOrderedEdges
|
/*!
|
||||||
//purpose : return nb wires and a list of oredered edges
|
* \brief Return number of wires and a list of oredered edges.
|
||||||
//=======================================================================
|
* \param theFace - the face to process
|
||||||
|
* \param theFirstVertex - the vertex of the outer wire to set first in the returned
|
||||||
|
* list ( theFirstVertex may be NULL )
|
||||||
|
* \param theEdges - all ordered edges of theFace (outer edges goes first).
|
||||||
|
* \param theNbVertexInWires - nb of vertices (== nb of edges) in each wire
|
||||||
|
* \param theShapeAnalysisAlgo - if true, ShapeAnalysis::OuterWire() is used to find
|
||||||
|
* the outer wire else BRepTools::OuterWire() is used.
|
||||||
|
* \retval int - nb of wires
|
||||||
|
*
|
||||||
|
* Always try to set a seam edge first.
|
||||||
|
* BRepTools::OuterWire() fails e.g. in the case of issue 0020184,
|
||||||
|
* ShapeAnalysis::OuterWire() fails in the case of issue 0020452
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
int SMESH_Block::GetOrderedEdges (const TopoDS_Face& theFace,
|
int SMESH_Block::GetOrderedEdges (const TopoDS_Face& theFace,
|
||||||
TopoDS_Vertex theFirstVertex,
|
TopoDS_Vertex theFirstVertex,
|
||||||
list< TopoDS_Edge >& theEdges,
|
list< TopoDS_Edge >& theEdges,
|
||||||
list< int > & theNbVertexInWires)
|
list< int > & theNbVertexInWires,
|
||||||
|
const bool theShapeAnalysisAlgo)
|
||||||
{
|
{
|
||||||
// put wires in a list, so that an outer wire comes first
|
// put wires in a list, so that an outer wire comes first
|
||||||
list<TopoDS_Wire> aWireList;
|
list<TopoDS_Wire> aWireList;
|
||||||
//TopoDS_Wire anOuterWire = BRepTools::OuterWire( theFace ); ### issue 0020184
|
TopoDS_Wire anOuterWire =
|
||||||
TopoDS_Wire anOuterWire = ShapeAnalysis::OuterWire( theFace );
|
theShapeAnalysisAlgo ? ShapeAnalysis::OuterWire( theFace ) : BRepTools::OuterWire( theFace );
|
||||||
//aWireList.push_back( anOuterWire ); ### issue 0020184
|
|
||||||
for ( TopoDS_Iterator wIt (theFace); wIt.More(); wIt.Next() )
|
for ( TopoDS_Iterator wIt (theFace); wIt.More(); wIt.Next() )
|
||||||
if ( !anOuterWire.IsSame( wIt.Value() ))
|
if ( !anOuterWire.IsSame( wIt.Value() ))
|
||||||
aWireList.push_back( TopoDS::Wire( wIt.Value() ));
|
aWireList.push_back( TopoDS::Wire( wIt.Value() ));
|
||||||
else
|
else
|
||||||
aWireList.push_front( TopoDS::Wire( wIt.Value() ));// ### issue 0020184
|
aWireList.push_front( TopoDS::Wire( wIt.Value() ));
|
||||||
|
|
||||||
// loop on edges of wires
|
// loop on edges of wires
|
||||||
theNbVertexInWires.clear();
|
theNbVertexInWires.clear();
|
||||||
|
@ -276,11 +276,14 @@ public:
|
|||||||
static int GetOrderedEdges (const TopoDS_Face& theFace,
|
static int GetOrderedEdges (const TopoDS_Face& theFace,
|
||||||
TopoDS_Vertex theFirstVertex,
|
TopoDS_Vertex theFirstVertex,
|
||||||
std::list< TopoDS_Edge >& theEdges,
|
std::list< TopoDS_Edge >& theEdges,
|
||||||
std::list< int > & theNbVertexInWires);
|
std::list< int > & theNbVertexInWires,
|
||||||
|
const bool theShapeAnalysisAlgo=false);
|
||||||
// Return nb wires and a list of oredered edges.
|
// Return nb wires and a list of oredered edges.
|
||||||
// It is used to assign indices to subshapes.
|
// It is used to assign indices to subshapes.
|
||||||
// theFirstVertex may be NULL.
|
// theFirstVertex may be NULL.
|
||||||
// Always try to set a seam edge first
|
// Always try to set a seam edge first
|
||||||
|
// if (theShapeAnalysisAlgo) then ShapeAnalysis::OuterWire() is used to find the outer
|
||||||
|
// wire else BRepTools::OuterWire() is used
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// -----------------------------------------------------------
|
// -----------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user