Bug 0016155: EDF PAL 447: If the shape is a Shell, disable 3D tab.

This commit is contained in:
jfa 2008-08-11 11:00:16 +00:00
parent 65d1c98391
commit 49922d93e3
2 changed files with 38 additions and 13 deletions

View File

@ -498,6 +498,11 @@ bool SMESH_subMesh::CanAddHypothesis(const SMESH_Hypothesis* theHypothesis) cons
{
int aHypDim = theHypothesis->GetDim();
int aShapeDim = SMESH_Gen::GetShapeDim(_subShape);
if (aHypDim == 3 && aShapeDim == 3) {
// check case of open shell
if (_subShape.ShapeType() == TopAbs_SHELL && !_subShape.Closed())
return false;
}
if ( aHypDim <= aShapeDim )
return true;

View File

@ -61,7 +61,9 @@
#include <QLineEdit>
// OCCT includes
#include <TopoDS.hxx>
#include <TopoDS_Shape.hxx>
#include <TopoDS_Shell.hxx>
#include <TopExp_Explorer.hxx>
// IDL includes
@ -453,24 +455,42 @@ void SMESHGUI_MeshOp::selectionDone()
for (int iss = 0; iss < aSeq->length() && shapeDim < 3; iss++) {
GEOM::GEOM_Object_var aGeomVar = aSeq[iss];
switch ( aGeomVar->GetShapeType() ) {
case GEOM::SOLID:
case GEOM::SHELL: shapeDim = 3; break;
case GEOM::SOLID: shapeDim = 3; break;
case GEOM::SHELL:
{
//shapeDim = 3; // Bug 0016155: EDF PAL 447: If the shape is a Shell, disable 3D tab
shapeDim = (shapeDim < 2) ? 2 : shapeDim;
TopoDS_Shape aShape;
if (GEOMBase::GetShape(aGeomVar, aShape)) {
if (aShape.Closed())
shapeDim = 3;
}
}
break;
case GEOM::FACE: shapeDim = (shapeDim < 2) ? 2 : shapeDim; break;
case GEOM::WIRE:
case GEOM::EDGE: shapeDim = (shapeDim < 1) ? 1 : shapeDim; break;
case GEOM::VERTEX: break;
default:
TopoDS_Shape aShape;
if ( GEOMBase::GetShape(aGeomVar, aShape)) {
TopExp_Explorer exp( aShape, TopAbs_SHELL );
if ( exp.More() )
shapeDim = 3;
else if ( exp.Init( aShape, TopAbs_FACE ), exp.More() )
shapeDim = (shapeDim < 2) ? 2 : shapeDim;
else if ( exp.Init( aShape, TopAbs_EDGE ), exp.More() )
shapeDim = (shapeDim < 1) ? 1 : shapeDim;
else
;//shapeDim = 0;
{
TopoDS_Shape aShape;
if (GEOMBase::GetShape(aGeomVar, aShape)) {
TopExp_Explorer exp (aShape, TopAbs_SHELL);
if (exp.More()) {
//shapeDim = 3; // Bug 0016155: EDF PAL 447: If the shape is a Shell, disable 3D tab
shapeDim = (shapeDim < 2) ? 2 : shapeDim;
for (; exp.More() && shapeDim == 2; exp.Next()) {
if (exp.Current().Closed())
shapeDim = 3;
}
}
else if ( exp.Init( aShape, TopAbs_FACE ), exp.More() )
shapeDim = (shapeDim < 2) ? 2 : shapeDim;
else if ( exp.Init( aShape, TopAbs_EDGE ), exp.More() )
shapeDim = (shapeDim < 1) ? 1 : shapeDim;
else
;//shapeDim = 0;
}
}
}
}