mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-15 10:08:34 +05:00
0021530: EDF 2176 SMESH: Projection 1D-2D with compounds
In GetGroupSubMeshesContaining() preview a case where the main shape is a group
This commit is contained in:
parent
dbb704ffd5
commit
08e8a82bb2
@ -26,6 +26,7 @@
|
|||||||
// Module : SMESH
|
// Module : SMESH
|
||||||
//
|
//
|
||||||
#include "SMESH_Mesh.hxx"
|
#include "SMESH_Mesh.hxx"
|
||||||
|
#include "SMESH_MesherHelper.hxx"
|
||||||
#include "SMESH_subMesh.hxx"
|
#include "SMESH_subMesh.hxx"
|
||||||
#include "SMESH_Gen.hxx"
|
#include "SMESH_Gen.hxx"
|
||||||
#include "SMESH_Hypothesis.hxx"
|
#include "SMESH_Hypothesis.hxx"
|
||||||
@ -968,17 +969,27 @@ SMESH_Mesh::GetGroupSubMeshesContaining(const TopoDS_Shape & aSubShape) const
|
|||||||
for ( i_sm = _mapSubMesh.rbegin(); i_sm != _mapSubMesh.rend(); ++i_sm) {
|
for ( i_sm = _mapSubMesh.rbegin(); i_sm != _mapSubMesh.rend(); ++i_sm) {
|
||||||
SMESHDS_SubMesh * ds = i_sm->second->GetSubMeshDS();
|
SMESHDS_SubMesh * ds = i_sm->second->GetSubMeshDS();
|
||||||
if ( ds && ds->IsComplexSubmesh() ) {
|
if ( ds && ds->IsComplexSubmesh() ) {
|
||||||
TopExp_Explorer exp( i_sm->second->GetSubShape(), aSubShape.ShapeType() );
|
if ( SMESH_MesherHelper::IsSubShape( aSubShape, i_sm->second->GetSubShape() ))
|
||||||
for ( ; exp.More(); exp.Next() ) {
|
{
|
||||||
if ( aSubShape.IsSame( exp.Current() )) {
|
found.push_back( i_sm->second );
|
||||||
found.push_back( i_sm->second );
|
break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
break;
|
break; // the rest sub-meshes are not those of groups
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( found.empty() ) // maybe the main shape is a COMPOUND (issue 0021530)
|
||||||
|
{
|
||||||
|
if ( SMESH_subMesh * mainSM = GetSubMeshContaining(1))
|
||||||
|
if ( mainSM->GetSubShape().ShapeType() == TopAbs_COMPOUND )
|
||||||
|
{
|
||||||
|
TopoDS_Iterator it( mainSM->GetSubShape() );
|
||||||
|
if ( it.Value().ShapeType() == aSubShape.ShapeType() &&
|
||||||
|
SMESH_MesherHelper::IsSubShape( aSubShape, mainSM->GetSubShape() ))
|
||||||
|
found.push_back( mainSM );
|
||||||
|
}
|
||||||
|
}
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
Loading…
Reference in New Issue
Block a user