020716: EDF 1229 SMESH : Improvement of reversed edges dialog box

fix taking into account ( reversing edges + hyp propagation )
This commit is contained in:
eap 2010-11-19 09:44:53 +00:00
parent e146cc085e
commit 9c0be12435

View File

@ -119,9 +119,8 @@ bool StdMeshers_Regular_1D::CheckHypothesis
_hypType = NONE;
_quadraticMesh = false;
const bool ignoreAuxiliaryHyps = false;
const list <const SMESHDS_Hypothesis * > & hyps =
GetUsedHypothesis(aMesh, aShape, ignoreAuxiliaryHyps);
GetUsedHypothesis(aMesh, aShape, /*ignoreAuxiliaryHyps=*/false);
// find non-auxiliary hypothesis
const SMESHDS_Hypothesis *theHyp = 0;
@ -975,18 +974,19 @@ bool StdMeshers_Regular_1D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape & t
list< double > params;
bool reversed = false;
if ( theMesh.GetShapeToMesh().ShapeType() >= TopAbs_WIRE ) {
// if the shape to mesh is WIRE or EDGE
reversed = ( EE.Orientation() == TopAbs_REVERSED );
}
if ( !_mainEdge.IsNull() ) {
// take into account reversing the edge the hypothesis is propagated from
reversed = ( _mainEdge.Orientation() == TopAbs_REVERSED );
int mainID = meshDS->ShapeToIndex(_mainEdge);
if ( std::find( _revEdgesIDs.begin(), _revEdgesIDs.end(), mainID) != _revEdgesIDs.end())
reversed = !reversed;
}
else if ( _revEdgesIDs.size() > 0 ) {
for ( int i = 0; i < _revEdgesIDs.size(); i++) {
if ( _revEdgesIDs[i] == shapeID ) {
reversed = !reversed;
}
}
}
// take into account this edge reversing
if ( std::find( _revEdgesIDs.begin(), _revEdgesIDs.end(), shapeID) != _revEdgesIDs.end())
reversed = !reversed;
BRepAdaptor_Curve C3d( E );
double length = EdgeLength( E );
@ -1186,10 +1186,9 @@ StdMeshers_Regular_1D::GetUsedHypothesis(SMESH_Mesh & aMesh,
SMESH_HypoFilter auxiliaryFilter, compatibleFilter;
auxiliaryFilter.Init( SMESH_HypoFilter::IsAuxiliary() );
const bool ignoreAux = true;
InitCompatibleHypoFilter( compatibleFilter, ignoreAux );
InitCompatibleHypoFilter( compatibleFilter, /*ignoreAux=*/true );
// get non-auxiliary assigned to aShape
// get non-auxiliary assigned directly to aShape
int nbHyp = aMesh.GetHypotheses( aShape, compatibleFilter, _usedHypList, false );
if (nbHyp == 0 && aShape.ShapeType() == TopAbs_EDGE)