#include "Utils_ExceptHandlers.hxx"
#include <TopoDS_Iterator.hxx>
+#include <TopoDS.hxx>
#include "memoire.h"
{
MESSAGE("SMESH_Gen::SMESH_Gen");
_localId = 0;
- _hypId = 0;
+ _hypId = 0;
_segmentation = _nbSegments = 10;
SMDS_Mesh::_meshList.clear();
MESSAGE(SMDS_Mesh::_meshList.size());
SMESH_subMesh* smToCompute = smIt->next();
// do not mesh vertices of a pseudo shape
- const TopAbs_ShapeEnum aShType = smToCompute->GetSubShape().ShapeType();
- if ( !aMesh.HasShapeToMesh() && aShType == TopAbs_VERTEX )
+ const TopoDS_Shape& shape = smToCompute->GetSubShape();
+ const TopAbs_ShapeEnum shapeType = shape.ShapeType();
+ if ( !aMesh.HasShapeToMesh() && shapeType == TopAbs_VERTEX )
continue;
// check for preview dimension limitations
- if ( aShapesId && GetShapeDim( aShType ) > (int)aDim )
+ if ( aShapesId && GetShapeDim( shapeType ) > (int)aDim )
{
// clear compute state not to show previous compute errors
// if preview invoked less dimension less than previous
_sm_current = NULL;
}
- // we check all the submeshes here and detect if any of them failed to compute
- if (smToCompute->GetComputeState() == SMESH_subMesh::FAILED_TO_COMPUTE)
+ // we check all the sub-meshes here and detect if any of them failed to compute
+ if (smToCompute->GetComputeState() == SMESH_subMesh::FAILED_TO_COMPUTE &&
+ ( shapeType != TopAbs_EDGE || !SMESH_Algo::isDegenerated( TopoDS::Edge( shape ))))
ret = false;
else if ( aShapesId )
aShapesId->insert( smToCompute->GetId() );
sm = *subIt;
if ( sm->GetComputeState() == SMESH_subMesh::READY_TO_COMPUTE)
{
- const TopAbs_ShapeEnum aShType = sm->GetSubShape().ShapeType();
+ const TopAbs_ShapeEnum shapeType = sm->GetSubShape().ShapeType();
// check for preview dimension limitations
- if ( aShapesId && GetShapeDim( aShType ) > (int)aDim )
+ if ( aShapesId && GetShapeDim( shapeType ) > (int)aDim )
continue;
if (_compute_canceled)
SMESH_subMesh* smToCompute = smIt->next();
// do not mesh vertices of a pseudo shape
- const TopAbs_ShapeEnum aShType = smToCompute->GetSubShape().ShapeType();
- //if ( !aMesh.HasShapeToMesh() && aShType == TopAbs_VERTEX )
+ const TopAbs_ShapeEnum shapeType = smToCompute->GetSubShape().ShapeType();
+ //if ( !aMesh.HasShapeToMesh() && shapeType == TopAbs_VERTEX )
// continue;
if ( !aMesh.HasShapeToMesh() ) {
- if( aShType == TopAbs_VERTEX || aShType == TopAbs_WIRE ||
- aShType == TopAbs_SHELL )
+ if( shapeType == TopAbs_VERTEX || shapeType == TopAbs_WIRE ||
+ shapeType == TopAbs_SHELL )
continue;
}
const int aShapeDim = GetShapeDim( aSubShape );
if ( aShapeDim < 1 ) continue;
- //const TopAbs_ShapeEnum aShType = smToCompute->GetSubShape().ShapeType();
-
SMESH_HypoFilter filter( SMESH_HypoFilter::IsAlgo() );
filter
.And( SMESH_HypoFilter::IsApplicableTo( aSubShape ))