+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void SMESH_GroupBase_i::SetColor(const SALOMEDS::Color& color)
+{
+ SMESHDS_GroupBase* aGroupDS = GetGroupDS();
+ if (aGroupDS)
+ {
+ Quantity_Color aQColor( color.R, color.G, color.B, Quantity_TOC_RGB );
+ aGroupDS->SetColor(aQColor);
+ TPythonDump()<<_this()<<".SetColor( SALOMEDS.Color( "<<color.R<<", "<<color.G<<", "<<color.B<<" ))";
+ }
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+CORBA::Long SMESH_GroupBase_i::GetColorNumber()
+{
+ SMESHDS_GroupBase* aGroupDS = GetGroupDS();
+ if (aGroupDS)
+ return aGroupDS->GetColorGroup();
+ MESSAGE("get color number of a group");
+ return 0;
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void SMESH_GroupBase_i::SetColorNumber(CORBA::Long color)
+{
+ SMESHDS_GroupBase* aGroupDS = GetGroupDS();
+ if (aGroupDS)
+ {
+ aGroupDS->SetColorGroup(color);
+ TPythonDump()<<_this()<<".SetColorNumber( "<<color<<" )";
+ }
+ MESSAGE("set color number of a group");
+ return ;
+}
+
+//=============================================================================
+/*!
+ * Returns statistic of mesh elements
+ * Result array of number enityties
+ * Inherited from SMESH_IDSource
+ */
+//=============================================================================
+SMESH::long_array* SMESH_GroupBase_i::GetMeshInfo()
+{
+ SMESH::long_array_var aRes = new SMESH::long_array();
+ aRes->length(SMESH::Entity_Last);
+ for (int i = SMESH::Entity_Node; i < SMESH::Entity_Last; i++)
+ aRes[i] = 0;
+
+ SMESHDS_GroupBase* aGrpDS = GetGroupDS();
+ if ( !aGrpDS )
+ return aRes._retn();
+ if ( GetType() == NODE )
+ aRes[ SMESH::Entity_Node ] = aGrpDS->Extent();
+ else
+ SMESH_Mesh_i::CollectMeshInfo( aGrpDS->GetElements(), aRes);
+
+// SMDS_ElemIteratorPtr it = aGrpDS->GetElements();
+// if ( it->more() )
+// {
+// cout << "START" << endl;
+// set< const SMDS_MeshElement* > nodes;
+// const SMDS_MeshElement* e = it->next();
+// for ( int i = 0; i < 1000000; ++i)
+// {
+// SMDS_ElemIteratorPtr it = e->nodesIterator();
+// nodes.insert( e + i );
+// }
+// cout << "END "<< nodes.size() << endl;
+// }
+
+ return aRes._retn();
+}
+
+//=======================================================================
+//function : GetIDs
+//purpose : Returns ids of members
+//=======================================================================
+
+SMESH::long_array* SMESH_GroupBase_i::GetIDs()
+{
+ SMESH::long_array_var aResult = GetListOfID();
+ return aResult._retn();
+}
+
+//=======================================================================
+//function : GetTypes
+//purpose : Returns types of elements it contains
+//=======================================================================
+
+SMESH::array_of_ElementType* SMESH_GroupBase_i::GetTypes()
+{
+ SMESH::array_of_ElementType_var types = new SMESH::array_of_ElementType;
+ types->length( 1 );
+ types[0] = GetType();
+ return types._retn();
+}
+