#include <vtkActorCollection.h>
// OCCT includes
+#include <TColStd_MapOfAsciiString.hxx>
#include <TColStd_MapOfInteger.hxx>
// Qt includes
return aName;
}
+//=======================================================================
+//function : setDefaultName
+//purpose :
+//=======================================================================
+
void SMESHGUI_GroupDlg::setDefaultName() const
{
QString aResName;
- int i=1;
- QString aPrefix ="Group_";
- _PTR(SObject) anObj;
- do
+ const QString aPrefix ="Group_";
+
+ if ( myMesh->_is_nil() )
{
- aResName = aPrefix + QString::number( i++ );
- anObj = SMESH::getStudy()->FindObject( aResName.toUtf8().constData() );
+ aResName = aPrefix + "1";
}
- while ( anObj );
- myName->setText(aResName);
+ else
+ {
+ SMESH::ListOfGroups_var allGroups = myMesh->GetGroups();
+ TColStd_MapOfAsciiString allNames( allGroups->length() );
+ for ( CORBA::ULong i = 0; i < allGroups->length(); ++i )
+ {
+ CORBA::String_var name = allGroups[i]->GetName();
+ allNames.Add( name.in() );
+ }
+ int i = 1;
+ while ( true )
+ {
+ aResName = aPrefix + QString::number( i++ );
+ if ( !allNames.Contains( aResName.toUtf8().constData() ))
+ break;
+ }
+ }
+ myName->setText(aResName);
}
//=================================================================================
if (myGroup->_is_nil()) { // creation or conversion
// check if group on geometry is not null
- if (!myGroupOnGeom->_is_nil() || !myGroupOnFilter->_is_nil()) {
+ if (!myGroupOnGeom->_is_nil() || !myGroupOnFilter->_is_nil())
+ {
if (myMesh->_is_nil())
return false;
if ( myGroupOnGeom->_is_nil() )
}
}
- if (myGroup->_is_nil()) { // creation
+ if (myGroup->_is_nil()) // creation
+ {
if (myMesh->_is_nil())
return false;
myGroup->Add(anIdList.inout());
}
}
+ }
-
- } else { // edition
-
+ else // edition
+ {
resultGroup = SMESH::SMESH_GroupBase::_narrow( myGroup );
isCreation = false;
}
anIsOk = true;
}
+
if (myGrpTypeId == 2) // group on filter
{
if ( myFilter->_is_nil() ) return false;
Handle(SALOME_InteractiveObject) anIO = anActor->getIO();
if ( isConversion ) { // need to reset TVisualObj and actor
SMESH::RemoveVisualObjectWithActors( anIO->getEntry(), true );
- SMESH::Update( anIO,true);
+ SMESH::Update( anIO, true );
myActorsList.clear();
anActor = SMESH::FindActorByEntry( anIO->getEntry() );
if ( !anActor ) return false;
if (!aEntry.isEmpty()) {
_PTR(SObject) aSObject = SMESH::getStudy()->FindObjectID( aEntry.toStdString());
if (aSObject) {
- _PTR(SObject) aFatherObj = aSObject->GetFather();
- if (aFatherObj) {
- _PTR(SComponent) aComponent = aFatherObj->GetFatherComponent();
- if (aComponent && aComponent->ComponentDataType() == "SMESH") {
- QString aObjEntry = entry(ind);
- _PTR(SObject) aGeomSObject = SMESH::getStudy()->FindObjectID(aObjEntry.toStdString());
- GEOM::GEOM_Object_var aObject = SMESH::SObjectToInterface<GEOM::GEOM_Object>(aGeomSObject);
- if (!aObject->_is_nil())
- return aObject->IsParametrical();
+ _PTR(SObject) aFatherObj = aSObject->GetFather();
+ if (aFatherObj) {
+ _PTR(SComponent) aComponent = aFatherObj->GetFatherComponent();
+ if (aComponent && aComponent->ComponentDataType() == "SMESH") {
+ QString aObjEntry = entry(ind);
+ _PTR(SObject) aGeomSObject = SMESH::getStudy()->FindObjectID(aObjEntry.toStdString());
+ GEOM::GEOM_Object_var aObject = SMESH::SObjectToInterface<GEOM::GEOM_Object>(aGeomSObject);
+ if (!aObject->_is_nil())
+ return aObject->IsParametrical();
}
}
}
GEOM::GEOM_Object_var shapeVar = _gen_i->ShapeToGeomObject( shape );
_gen_i->PublishGroup( aMesh, groupVar, shapeVar, group->GetName());
}
+
if ( !addedIDs.empty() )
{
// python dump
- set<int>::iterator id = addedIDs.begin();
- for ( ; id != addedIDs.end(); ++id )
+ map<int, SMESH::SMESH_GroupBase_ptr>::iterator i_grp = _mapGroups.begin();
+ for ( int index = 0; i_grp != _mapGroups.end(); ++index, ++i_grp )
{
- map<int, SMESH::SMESH_GroupBase_ptr>::iterator it = _mapGroups.find(*id);
- int i = std::distance( _mapGroups.begin(), it );
- TPythonDump() << it->second << " = " << aMesh << ".GetGroups()[ "<< i << " ]";
+ set<int>::iterator it = addedIDs.find( i_grp->first );
+ if ( it != addedIDs.end() )
+ {
+ TPythonDump() << i_grp->second << " = " << aMesh << ".GetGroups()[ "<< index << " ]";
+ addedIDs.erase( it );
+ if ( addedIDs.empty() )
+ break;
+ }
}
}
}