-// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
//
-// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
// SMESH SMESH : implementaion of SMESH idl descriptions
break;
case COMPUTE: // nothing to do
break;
+#ifdef WITH_SMESH_CANCEL_COMPUTE
+ case COMPUTE_CANCELED: // nothing to do
+ break;
+#endif
case CLEAN:
CleanDependants();
RemoveSubMeshElementsAndNodes();
}
}
}
- if (ret)
+ if (ret && _computeError && _computeError->myName != COMPERR_WARNING )
{
_computeError.reset();
}
UpdateDependantsState( SUBMESH_COMPUTED ); // send event SUBMESH_COMPUTED
}
break;
+#ifdef WITH_SMESH_CANCEL_COMPUTE
+ case COMPUTE_CANCELED: // nothing to do
+ break;
+#endif
case CLEAN:
CleanDependants();
RemoveSubMeshElementsAndNodes();
break;
case COMPUTE: // nothing to do
break;
+#ifdef WITH_SMESH_CANCEL_COMPUTE
+ case COMPUTE_CANCELED: // nothing to do
+ break;
+#endif
case CLEAN:
CleanDependants(); // clean sub-meshes, dependant on this one, with event CLEAN
RemoveSubMeshElementsAndNodes();
break;
case COMPUTE: // nothing to do
break;
+#ifdef WITH_SMESH_CANCEL_COMPUTE
+ case COMPUTE_CANCELED:
+ {
+ algo = gen->GetAlgo((*_father), _subShape);
+ algo->CancelCompute();
+ }
+ break;
+#endif
case CLEAN:
CleanDependants(); // submeshes dependent on me should be cleaned as well
RemoveSubMeshElementsAndNodes();
// Check my state
if ( !_computeError || _computeError->IsOK() )
{
+ // no error description is set to this sub-mesh, check if any mesh is computed
_computeState = IsMeshComputed() ? COMPUTE_OK : FAILED_TO_COMPUTE;
}
else
if ( _computeError->myComment.size() > 0 )
text << " \"" << _computeError->myComment << "\"";
-#ifdef _DEBUG_
- MESSAGE_BEGIN ( text );
- // Show vertices location of a failed shape
- TopTools_IndexedMapOfShape vMap;
- TopExp::MapShapes( _subShape, TopAbs_VERTEX, vMap );
- MESSAGE_ADD ( "Subshape vertices " << ( vMap.Extent()>10 ? "(first 10):" : ":") );
- for ( int iv = 1; iv <= vMap.Extent() && iv < 11; ++iv ) {
- gp_Pnt P( BRep_Tool::Pnt( TopoDS::Vertex( vMap( iv ) )));
- MESSAGE_ADD ( "#" << _father->GetMeshDS()->ShapeToIndex( vMap( iv )) << " "
- << P.X() << " " << P.Y() << " " << P.Z() << " " );
- }
-#else
INFOS( text );
-#endif
- _computeState = FAILED_TO_COMPUTE;
- noErrors = false;
- }
- }
- return noErrors;
-}
-//=======================================================================
-//function : ApplyToCollection
-//purpose : Apply theAlgo to all subshapes in theCollection
-//=======================================================================
-
-bool SMESH_subMesh::ApplyToCollection (SMESH_Algo* theAlgo,
- const TopoDS_Shape& theCollection)
-{
- MESSAGE("SMESH_subMesh::ApplyToCollection");
- ASSERT ( !theAlgo->NeedDescretBoundary() );
+ _computeState = _computeError->IsKO() ? FAILED_TO_COMPUTE : COMPUTE_OK;
- if ( _computeError )
- _computeError->myName = COMPERR_OK;
-
- bool ok = theAlgo->Compute( *_father, theCollection );
-
- // set _computeState of subshapes
- TopExp_Explorer anExplorer( theCollection, _subShape.ShapeType() );
- for ( ; anExplorer.More(); anExplorer.Next() )
- {
- if ( SMESH_subMesh* subMesh = _father->GetSubMeshContaining( anExplorer.Current() ))
- {
- bool localOK = subMesh->CheckComputeError( theAlgo );
- if ( !ok && localOK && !subMesh->IsMeshComputed() )
- {
- subMesh->_computeError = theAlgo->GetComputeError();
- if ( subMesh->_computeError->IsOK() )
- _computeError = SMESH_ComputeError::New(COMPERR_ALGO_FAILED);
- localOK = CheckComputeError( theAlgo );
- }
- if ( localOK )
- subMesh->UpdateDependantsState( SUBMESH_COMPUTED );
- subMesh->UpdateSubMeshState( localOK ? COMPUTE_OK : FAILED_TO_COMPUTE );
+ noErrors = false;
}
}
-
- return true;
+ return noErrors;
}
-
//=======================================================================
//function : UpdateSubMeshState
//purpose :