mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-27 09:50:34 +05:00
52456: Propagation does not work
This commit is contained in:
parent
16f2bac719
commit
9bfa6616ba
@ -210,13 +210,15 @@ namespace {
|
|||||||
* \brief Returns a local 1D hypothesis used for theEdge
|
* \brief Returns a local 1D hypothesis used for theEdge
|
||||||
*/
|
*/
|
||||||
const SMESH_Hypothesis* getLocal1DHyp (SMESH_Mesh& theMesh,
|
const SMESH_Hypothesis* getLocal1DHyp (SMESH_Mesh& theMesh,
|
||||||
const TopoDS_Shape& theEdge)
|
const TopoDS_Shape& theEdge,
|
||||||
|
TopoDS_Shape* theSssignedTo=0)
|
||||||
{
|
{
|
||||||
static SMESH_HypoFilter hypo;
|
static SMESH_HypoFilter hypo;
|
||||||
hypo.Init( hypo.HasDim( 1 )).
|
hypo.Init( hypo.HasDim( 1 )).
|
||||||
AndNot ( hypo.IsAlgo() ).
|
AndNot ( hypo.IsAlgo() ).
|
||||||
AndNot ( hypo.IsAssignedTo( theMesh.GetMeshDS()->ShapeToMesh() ));
|
AndNot ( hypo.IsAssignedTo( theMesh.GetShapeToMesh() ));
|
||||||
return theMesh.GetHypothesis( theEdge, hypo, true );
|
|
||||||
|
return theMesh.GetHypothesis( theEdge, hypo, true, theSssignedTo );
|
||||||
}
|
}
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
@ -258,6 +260,10 @@ namespace {
|
|||||||
|
|
||||||
SMESH_Mesh* mesh = theMainSubMesh->GetFather();
|
SMESH_Mesh* mesh = theMainSubMesh->GetFather();
|
||||||
|
|
||||||
|
TopoDS_Shape shapeOfHyp1D; // shape to which an hyp being propagated is assigned
|
||||||
|
const SMESH_Hypothesis* hyp1D = getLocal1DHyp( *mesh, theMainEdge, &shapeOfHyp1D );
|
||||||
|
SMESH_HypoFilter moreLocalCheck( SMESH_HypoFilter::IsMoreLocalThan( shapeOfHyp1D, *mesh ));
|
||||||
|
|
||||||
PropagationMgrData* chainData = getData( theMainSubMesh );
|
PropagationMgrData* chainData = getData( theMainSubMesh );
|
||||||
chainData->SetState( HAS_PROPAG_HYP );
|
chainData->SetState( HAS_PROPAG_HYP );
|
||||||
|
|
||||||
@ -355,7 +361,8 @@ namespace {
|
|||||||
if ( oppData->State() == WAIT_PROPAG_HYP ) // ... anOppE is not in any chain
|
if ( oppData->State() == WAIT_PROPAG_HYP ) // ... anOppE is not in any chain
|
||||||
{
|
{
|
||||||
oppData->SetSource( theMainSubMesh );
|
oppData->SetSource( theMainSubMesh );
|
||||||
if ( !getLocal1DHyp( *mesh, anOppE )) // ... no 1d hyp on anOppE
|
if ( ! (hyp1D = getLocal1DHyp( *mesh, anOppE, &shapeOfHyp1D )) || //...no 1d hyp on anOppE
|
||||||
|
! (moreLocalCheck.IsOk( hyp1D, shapeOfHyp1D ))) // ... or hyp1D is "more global"
|
||||||
{
|
{
|
||||||
oppData->myForward = data->myForward;
|
oppData->myForward = data->myForward;
|
||||||
if ( edges[ edgeIndex ].Orientation() == anOppE.Orientation() )
|
if ( edges[ edgeIndex ].Orientation() == anOppE.Orientation() )
|
||||||
|
Loading…
Reference in New Issue
Block a user