do
{
const TopoDS_Edge& edge = *edgeIt;
- if ( SMESH_Algo::isDegenerated( edge ) && myNeedSmooth )
+ nextSideVReached = nextSideV.IsSame( myHelper->IthVertex( 1, edge ));
+ if ( SMESH_Algo::isDegenerated( edge ))
{
- // no side on a degenerated EDGE
+ if ( !myNeedSmooth ) // need to make a side on a degen edge
+ {
+ if ( sideEdges.empty() )
+ {
+ sideEdges.push_back( edge );
+ ++nbUsedDegen;
+ nextSideVReached = true;
+ }
+ else
+ {
+ break;
+ }
+ }
}
else
{
sideEdges.push_back( edge );
- nextSideVReached = nextSideV.IsSame( myHelper->IthVertex( 1, edge ));
}
++edgeIt;
}
int iPrev = myHelper->WrapIndex( i-1, wire->NbEdges() );
const TopoDS_Edge& e1 = wire->Edge( iPrev );
const TopoDS_Edge& e2 = wire->Edge( i );
- double angle = myHelper->GetAngle( e1, e2, geomFace );
+ double angle = myHelper->GetAngle( e1, e2, geomFace, wire->FirstVertex( i ));
if (( maxAngle < angle ) &&
( 5.* M_PI/180 < angle && angle < 175.* M_PI/180 ))
{
TopoDS_Vertex v = helper.IthVertex( 0, *edge );
if ( !theConsiderMesh || SMESH_Algo::VertexNode( v, helper.GetMeshDS() ))
{
- double angle = SMESH_MesherHelper::GetAngle( prevE, *edge, theFace );
+ double angle = SMESH_MesherHelper::GetAngle( prevE, *edge, theFace, v );
vertexByAngle.insert( make_pair( angle, v ));
angleByVertex.Bind( v, angle );
}