-// 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_I : idl implementation based on 'SMESH' unit's calsses
// File : SMESH_Mesh_i.cxx
// Author : Paul RASCLE, EDF
// Module : SMESH
SMESH_Mesh_i::~SMESH_Mesh_i()
{
- INFOS("~SMESH_Mesh_i");
+ MESSAGE("~SMESH_Mesh_i");
#ifdef WITHGENERICOBJ
// destroy groups
// this method is called from destructor of group (PAL6331)
//_impl->RemoveGroup( aGroup->GetLocalID() );
aGroup->myMeshServant = 0;
- aGroup->Destroy();
+ aGroup->UnRegister();
}
}
_mapGroups.clear();
continue;
SMESH_subMesh_i* aSubMesh = dynamic_cast<SMESH_subMesh_i*>(SMESH_Gen_i::GetServant(itSM->second).in());
if (aSubMesh) {
- aSubMesh->Destroy();
+ aSubMesh->UnRegister();
}
}
_mapSubMeshIor.clear();
continue;
SMESH_Hypothesis_i* aHypo = dynamic_cast<SMESH_Hypothesis_i*>(SMESH_Gen_i::GetServant(itH->second).in());
if (aHypo) {
- aHypo->Destroy();
+ aHypo->UnRegister();
}
}
_mapHypo.clear();
//Get or Create the SMESH_subMesh object implementation
int subMeshId = _impl->GetMeshDS()->ShapeToIndex( myLocSubShape );
- if ( !subMeshId && ! _impl->GetMeshDS()->IsGroupOfSubShapes( myLocSubShape ))
- THROW_SALOME_CORBA_EXCEPTION("not sub-shape of the main shape", SALOME::BAD_PARAM);
+ if ( !subMeshId && ! _impl->GetMeshDS()->IsGroupOfSubShapes( myLocSubShape ))
+ {
+ TopoDS_Iterator it( myLocSubShape );
+ if ( it.More() )
+ THROW_SALOME_CORBA_EXCEPTION("not sub-shape of the main shape", SALOME::BAD_PARAM);
+ }
subMesh = getSubMesh( subMeshId );
// create a new subMesh object servant if there is none for the shape
const char* theName,
const TopoDS_Shape& theShape )
{
+ std::string newName;
+ if ( !theName || strlen( theName ) == 0 )
+ {
+ std::set< std::string > presentNames;
+ std::map<int, SMESH::SMESH_GroupBase_ptr>::const_iterator i_gr = _mapGroups.begin();
+ for ( ; i_gr != _mapGroups.end(); ++i_gr )
+ presentNames.insert( i_gr->second->GetName() );
+ do {
+ newName = "noname_Group_" + SMESH_Comment( presentNames.size() + 1 );
+ } while ( !presentNames.insert( newName ).second );
+ theName = newName.c_str();
+ }
int anId;
SMESH::SMESH_GroupBase_var aGroup;
if ( _impl->AddGroup( (SMDSAbs_ElementType)theElemType, theName, anId, theShape )) {
Unexpect aCatch(SALOME_SalomeException);
_impl->SetAutoColor(theAutoColor);
+ TPythonDump pyDump; // not to dump group->SetColor() from below code
+ pyDump<<_this()<<".SetAutoColor( "<<theAutoColor<<" )";
+
std::list<SALOMEDS::Color> aReservedColors;
map<int, SMESH::SMESH_GroupBase_ptr>::iterator it = _mapGroups.begin();
for ( ; it != _mapGroups.end(); it++ ) {
CORBA::Boolean auto_groups)
throw(SALOME::SALOME_Exception)
{
- ExportToMEDX(file,auto_groups,SMESH::MED_V2_1,true);
+ ExportToMEDX(file,auto_groups,SMESH::MED_V2_2,true);
}
void SMESH_Mesh_i::ExportDAT (const char *file)
// No sense in returning ids of elements along with ids of nodes:
// when theElemType == SMESH::ALL, return node ids only if
// there are no elements
- if ( theElemType == SMESH::NODE || theElemType == SMESH::ALL && nbElements == 0 )
+ if ( theElemType == SMESH::NODE || (theElemType == SMESH::ALL && nbElements == 0) )
return GetNodesId();
aResult->length( nbElements );