diff --git a/src/StdMeshers/StdMeshers_Projection_1D.cxx b/src/StdMeshers/StdMeshers_Projection_1D.cxx index bde70d395..f487d8392 100644 --- a/src/StdMeshers/StdMeshers_Projection_1D.cxx +++ b/src/StdMeshers/StdMeshers_Projection_1D.cxx @@ -132,11 +132,24 @@ bool StdMeshers_Projection_1D::CheckHypothesis(SMESH_Mesh& !TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), aShape ) || !TAssocTool::IsSubShape( _sourceHypo->GetSourceVertex(), _sourceHypo->GetSourceEdge() )) + { aStatus = SMESH_Hypothesis::HYP_BAD_PARAMETER; + SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetSourceVertex(), srcMesh ))); + SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), tgtMesh ))); + SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), aShape ) )); + SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetSourceVertex(), + _sourceHypo->GetSourceEdge() ))); + } } // check source edge - if ( !TAssocTool::IsSubShape( _sourceHypo->GetSourceEdge(), srcMesh )) - aStatus = SMESH_Hypothesis::HYP_BAD_PARAMETER; + if ( !TAssocTool::IsSubShape( _sourceHypo->GetSourceEdge(), srcMesh ) || + ( srcMesh == tgtMesh && aShape == _sourceHypo->GetSourceEdge() )) + { + aStatus = HYP_BAD_PARAMETER; + SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetSourceEdge(), srcMesh ))); + SCRUTE((srcMesh == tgtMesh)); + SCRUTE(( aShape == _sourceHypo->GetSourceEdge() )); + } } else { diff --git a/src/StdMeshers/StdMeshers_Projection_2D.cxx b/src/StdMeshers/StdMeshers_Projection_2D.cxx index 36f4a3b54..b7b3ff3e6 100644 --- a/src/StdMeshers/StdMeshers_Projection_2D.cxx +++ b/src/StdMeshers/StdMeshers_Projection_2D.cxx @@ -133,10 +133,10 @@ bool StdMeshers_Projection_2D::CheckHypothesis(SMESH_Mesh& !TAssocTool::IsSubShape( edge, srcMesh ) || !TAssocTool::IsSubShape( edge, _sourceHypo->GetSourceFace() )) { + theStatus = HYP_BAD_PARAMETER; SCRUTE((edge.IsNull())); SCRUTE((TAssocTool::IsSubShape( edge, srcMesh ))); SCRUTE((TAssocTool::IsSubShape( edge, _sourceHypo->GetSourceFace() ))); - theStatus = HYP_BAD_PARAMETER; } else { @@ -147,17 +147,21 @@ bool StdMeshers_Projection_2D::CheckHypothesis(SMESH_Mesh& !TAssocTool::IsSubShape( edge, tgtMesh ) || !TAssocTool::IsSubShape( edge, theShape )) { + theStatus = HYP_BAD_PARAMETER; SCRUTE((edge.IsNull())); SCRUTE((TAssocTool::IsSubShape( edge, tgtMesh ))); SCRUTE((TAssocTool::IsSubShape( edge, theShape ))); - theStatus = HYP_BAD_PARAMETER; } } } // check a source face - if ( !TAssocTool::IsSubShape( _sourceHypo->GetSourceFace(), srcMesh )) { - MESSAGE("Bad source face"); + if ( !TAssocTool::IsSubShape( _sourceHypo->GetSourceFace(), srcMesh ) || + ( srcMesh == tgtMesh && theShape == _sourceHypo->GetSourceFace() )) + { theStatus = HYP_BAD_PARAMETER; + SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetSourceFace(), srcMesh ))); + SCRUTE((srcMesh == tgtMesh)); + SCRUTE(( theShape == _sourceHypo->GetSourceFace() )); } } else