mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-25 08:50:35 +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
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//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,
|
||||
TopoDS_Vertex theFirstVertex,
|
||||
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
|
||||
list<TopoDS_Wire> aWireList;
|
||||
//TopoDS_Wire anOuterWire = BRepTools::OuterWire( theFace ); ### issue 0020184
|
||||
TopoDS_Wire anOuterWire = ShapeAnalysis::OuterWire( theFace );
|
||||
//aWireList.push_back( anOuterWire ); ### issue 0020184
|
||||
TopoDS_Wire anOuterWire =
|
||||
theShapeAnalysisAlgo ? ShapeAnalysis::OuterWire( theFace ) : BRepTools::OuterWire( theFace );
|
||||
for ( TopoDS_Iterator wIt (theFace); wIt.More(); wIt.Next() )
|
||||
if ( !anOuterWire.IsSame( wIt.Value() ))
|
||||
aWireList.push_back( TopoDS::Wire( wIt.Value() ));
|
||||
else
|
||||
aWireList.push_front( TopoDS::Wire( wIt.Value() ));// ### issue 0020184
|
||||
aWireList.push_front( TopoDS::Wire( wIt.Value() ));
|
||||
|
||||
// loop on edges of wires
|
||||
theNbVertexInWires.clear();
|
||||
|
@ -276,11 +276,14 @@ public:
|
||||
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);
|
||||
// Return nb wires and a list of oredered edges.
|
||||
// It is used to assign indices to subshapes.
|
||||
// theFirstVertex may be NULL.
|
||||
// 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:
|
||||
// -----------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user