if ( !aGroup )
return;
+ if ( aGroup->GetMeshServant() != this )
+ THROW_SALOME_CORBA_EXCEPTION( "RemoveGroup(): group does not belong to this mesh",
+ SALOME::BAD_PARAM );
+
SALOMEDS::SObject_wrap aGroupSO = _gen_i->ObjectToSObject( theGroup );
if ( !aGroupSO->_is_nil() )
{
if ( theGroup->_is_nil() )
return;
+ SMESH_GroupBase_i* groupImpl = SMESH::DownCast< SMESH_GroupBase_i* >( theGroup );
+ if ( !groupImpl || groupImpl->GetMeshServant() != this )
+ THROW_SALOME_CORBA_EXCEPTION( "RemoveGroupWithContents(): group does not belong to this mesh",
+ SALOME::BAD_PARAM);
+
vector<int> nodeIds; // to remove nodes becoming free
bool isNodal = ( theGroup->GetType() == SMESH::NODE );
if ( !isNodal && !theGroup->IsEmpty() )
void SMESH_Mesh_i::PrepareForWriting (const char* file, bool overwrite)
{
- SMESH_File aFile( file );
+ SMESH_File aFile( file, false );
SMESH_Comment msg;
- if (aFile.exists()) {
+ if ( aFile.exists() ) {
// existing filesystem node
if ( !aFile.isDirectory() ) {
if ( aFile.openForWriting() ) {
aPythonDump << " ]";
subMeshOrder.push_back( subMeshIds );
- // clear collected submeshes
+ // clear collected sub-meshes
set<const SMESH_subMesh*>::iterator clrIt = subMeshToClear.begin();
for ( ; clrIt != subMeshToClear.end(); clrIt++ )
if ( SMESH_subMesh* sm = (SMESH_subMesh*)*clrIt )
+ {
sm->ComputeStateEngine( SMESH_subMesh::CLEAN );
+ if ( SMESH_Algo* algo = sm->GetAlgo() ) // #16748
+ sm->AlgoStateEngine( SMESH_subMesh::MODIF_HYP, algo ); // to clear a cached algo
+ }
}
aPythonDump << " ])";