#include "SMESH_Filter_i.hxx"
#include "SMESH_PythonDump.hxx"
+#include CORBA_SERVER_HEADER(SMESH_Filter)
+
#include "utilities.h"
using namespace SMESH;
return 0;
}
+CORBA::Long SMESH_Group_i::AddFrom( SMESH::SMESH_IDSource_ptr theSource )
+{
+ long nbAdd = 0;
+ SMESHDS_Group* aGroupDS = dynamic_cast<SMESHDS_Group*>( GetGroupDS() );
+ if (aGroupDS) {
+ SMESH::long_array_var anIds;
+ SMESH::SMESH_GroupBase_var group = SMESH::SMESH_GroupBase::_narrow(theSource);
+ SMESH::SMESH_Mesh_var mesh = SMESH::SMESH_Mesh::_narrow(theSource);
+ SMESH::SMESH_subMesh_var submesh = SMESH::SMESH_subMesh::_narrow(theSource);
+ SMESH::Filter_var filter = SMESH::Filter::_narrow(theSource);
+ if ( !group->_is_nil())
+ anIds = group->GetType()==GetType() ? theSource->GetIDs() : new SMESH::long_array();
+ else if ( !mesh->_is_nil() )
+ anIds = mesh->GetElementsByType( GetType() );
+ else if ( !submesh->_is_nil())
+ anIds = submesh->GetElementsByType( GetType() );
+ else if ( !filter->_is_nil() )
+ anIds = filter->GetElementType()==GetType() ? theSource->GetIDs() : new SMESH::long_array();
+ else
+ anIds = theSource->GetIDs();
+ for ( int i = 0, total = anIds->length(); i < total; i++ ) {
+ if ( aGroupDS->Add((int)anIds[i]) ) nbAdd++;
+ }
+ }
+
+ // Update Python script
+ TPythonDump() << "nbAdd = " << _this() << ".AddFrom( " << theSource << " )";
+
+ return nbAdd;
+}
+
//=============================================================================
/*!
*
return aMesh._retn();
}
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-SMESH::long_array* SMESH_GroupBase_i::GetIDs()
-{
- SMESH::long_array_var aResult = GetListOfID();
- return aResult._retn();
-}
-
//=======================================================================
//function : GetShape
//purpose :
SMESH_Mesh_i::CollectMeshInfo( aGrpDS->GetElements(), aRes);
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();
+}
+