mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-14 10:40:34 +05:00
SALOME Forum bug: http://www.salome-platform.org/forum/forum_10/967838025
Do not report a compute error if a degenerated EDGE is not computed
This commit is contained in:
parent
cc817cd04f
commit
a1c755a149
@ -43,6 +43,7 @@
|
|||||||
#include "Utils_ExceptHandlers.hxx"
|
#include "Utils_ExceptHandlers.hxx"
|
||||||
|
|
||||||
#include <TopoDS_Iterator.hxx>
|
#include <TopoDS_Iterator.hxx>
|
||||||
|
#include <TopoDS.hxx>
|
||||||
|
|
||||||
#include "memoire.h"
|
#include "memoire.h"
|
||||||
|
|
||||||
@ -65,7 +66,7 @@ SMESH_Gen::SMESH_Gen()
|
|||||||
{
|
{
|
||||||
MESSAGE("SMESH_Gen::SMESH_Gen");
|
MESSAGE("SMESH_Gen::SMESH_Gen");
|
||||||
_localId = 0;
|
_localId = 0;
|
||||||
_hypId = 0;
|
_hypId = 0;
|
||||||
_segmentation = _nbSegments = 10;
|
_segmentation = _nbSegments = 10;
|
||||||
SMDS_Mesh::_meshList.clear();
|
SMDS_Mesh::_meshList.clear();
|
||||||
MESSAGE(SMDS_Mesh::_meshList.size());
|
MESSAGE(SMDS_Mesh::_meshList.size());
|
||||||
@ -163,12 +164,13 @@ bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
|
|||||||
SMESH_subMesh* smToCompute = smIt->next();
|
SMESH_subMesh* smToCompute = smIt->next();
|
||||||
|
|
||||||
// do not mesh vertices of a pseudo shape
|
// do not mesh vertices of a pseudo shape
|
||||||
const TopAbs_ShapeEnum aShType = smToCompute->GetSubShape().ShapeType();
|
const TopoDS_Shape& shape = smToCompute->GetSubShape();
|
||||||
if ( !aMesh.HasShapeToMesh() && aShType == TopAbs_VERTEX )
|
const TopAbs_ShapeEnum shapeType = shape.ShapeType();
|
||||||
|
if ( !aMesh.HasShapeToMesh() && shapeType == TopAbs_VERTEX )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// check for preview dimension limitations
|
// 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
|
// clear compute state not to show previous compute errors
|
||||||
// if preview invoked less dimension less than previous
|
// if preview invoked less dimension less than previous
|
||||||
@ -185,8 +187,9 @@ bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
|
|||||||
_sm_current = NULL;
|
_sm_current = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// we check all the submeshes here and detect if any of them 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)
|
if (smToCompute->GetComputeState() == SMESH_subMesh::FAILED_TO_COMPUTE &&
|
||||||
|
( shapeType != TopAbs_EDGE || !SMESH_Algo::isDegenerated( TopoDS::Edge( shape ))))
|
||||||
ret = false;
|
ret = false;
|
||||||
else if ( aShapesId )
|
else if ( aShapesId )
|
||||||
aShapesId->insert( smToCompute->GetId() );
|
aShapesId->insert( smToCompute->GetId() );
|
||||||
@ -346,9 +349,9 @@ bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
|
|||||||
sm = *subIt;
|
sm = *subIt;
|
||||||
if ( sm->GetComputeState() == SMESH_subMesh::READY_TO_COMPUTE)
|
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
|
// check for preview dimension limitations
|
||||||
if ( aShapesId && GetShapeDim( aShType ) > (int)aDim )
|
if ( aShapesId && GetShapeDim( shapeType ) > (int)aDim )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (_compute_canceled)
|
if (_compute_canceled)
|
||||||
@ -449,12 +452,12 @@ bool SMESH_Gen::Evaluate(SMESH_Mesh & aMesh,
|
|||||||
SMESH_subMesh* smToCompute = smIt->next();
|
SMESH_subMesh* smToCompute = smIt->next();
|
||||||
|
|
||||||
// do not mesh vertices of a pseudo shape
|
// do not mesh vertices of a pseudo shape
|
||||||
const TopAbs_ShapeEnum aShType = smToCompute->GetSubShape().ShapeType();
|
const TopAbs_ShapeEnum shapeType = smToCompute->GetSubShape().ShapeType();
|
||||||
//if ( !aMesh.HasShapeToMesh() && aShType == TopAbs_VERTEX )
|
//if ( !aMesh.HasShapeToMesh() && shapeType == TopAbs_VERTEX )
|
||||||
// continue;
|
// continue;
|
||||||
if ( !aMesh.HasShapeToMesh() ) {
|
if ( !aMesh.HasShapeToMesh() ) {
|
||||||
if( aShType == TopAbs_VERTEX || aShType == TopAbs_WIRE ||
|
if( shapeType == TopAbs_VERTEX || shapeType == TopAbs_WIRE ||
|
||||||
aShType == TopAbs_SHELL )
|
shapeType == TopAbs_SHELL )
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -521,8 +524,6 @@ bool SMESH_Gen::Evaluate(SMESH_Mesh & aMesh,
|
|||||||
const int aShapeDim = GetShapeDim( aSubShape );
|
const int aShapeDim = GetShapeDim( aSubShape );
|
||||||
if ( aShapeDim < 1 ) continue;
|
if ( aShapeDim < 1 ) continue;
|
||||||
|
|
||||||
//const TopAbs_ShapeEnum aShType = smToCompute->GetSubShape().ShapeType();
|
|
||||||
|
|
||||||
SMESH_HypoFilter filter( SMESH_HypoFilter::IsAlgo() );
|
SMESH_HypoFilter filter( SMESH_HypoFilter::IsAlgo() );
|
||||||
filter
|
filter
|
||||||
.And( SMESH_HypoFilter::IsApplicableTo( aSubShape ))
|
.And( SMESH_HypoFilter::IsApplicableTo( aSubShape ))
|
||||||
|
Loading…
Reference in New Issue
Block a user