// $Header$
#include "DriverMED_Family.h"
+#include "MED_Factory.hxx"
+
#include <sstream>
+using namespace std;
+
//=============================================================================
/*!
* Split each group from list <aGroups> on some parts (families)
//=============================================================================
list<DriverMED_FamilyPtr> DriverMED_Family::MakeFamilies
(const map <int, SMESHDS_SubMesh*>& theSubMeshes,
- const list<SMESHDS_Group*>& theGroups,
+ const list<SMESHDS_GroupBase*>& theGroups,
const bool doGroupOfNodes,
const bool doGroupOfEdges,
const bool doGroupOfFaces,
map<int, SMESHDS_SubMesh*>::const_iterator aSMIter = theSubMeshes.begin();
for (; aSMIter != theSubMeshes.end(); aSMIter++)
{
+ if ( aSMIter->second->IsComplexSubmesh() )
+ continue; // submesh containing other submeshs
list<DriverMED_FamilyPtr> aSMFams = SplitByType((*aSMIter).second, (*aSMIter).first);
list<DriverMED_FamilyPtr>::iterator aSMFamsIter = aSMFams.begin();
for (; aSMFamsIter != aSMFams.end(); aSMFamsIter++)
}
// Process groups
- list<SMESHDS_Group*>::const_iterator aGroupsIter = theGroups.begin();
+ list<SMESHDS_GroupBase*>::const_iterator aGroupsIter = theGroups.begin();
for (; aGroupsIter != theGroups.end(); aGroupsIter++)
{
DriverMED_FamilyPtr aFam2 (new DriverMED_Family);
* Create TFamilyInfo for this family
*/
//=============================================================================
-MEDA::PFamilyInfo DriverMED_Family::GetFamilyInfo
- (const MEDA::PMeshInfo& theMeshInfo) const
+MED::PFamilyInfo
+DriverMED_Family::GetFamilyInfo(const MED::PWrapper& theWrapper,
+ const MED::PMeshInfo& theMeshInfo) const
{
string aValue;
ostringstream aStr;
MED::TIntVector anAttrIds (1, myId); // Id=0,
MED::TIntVector anAttrVals (1, myId); // Value=0
- MEDA::PFamilyInfo anInfo = MEDA::TWrapper::CrFamilyInfo(theMeshInfo,
- aValue,
- myId,
- myGroupNames,
- anAttrDescs,anAttrIds,anAttrVals);
+ MED::PFamilyInfo anInfo = theWrapper->CrFamilyInfo(theMeshInfo,
+ aValue,
+ myId,
+ myGroupNames,
+ anAttrDescs,
+ anAttrIds,
+ anAttrVals);
// cout << endl;
// cout << "Groups: ";
//=============================================================================
/*!
- * Initialize the tool by SMESHDS_Group
+ * Initialize the tool by SMESHDS_GroupBase
*/
//=============================================================================
-void DriverMED_Family::Init (SMESHDS_Group* group)
+void DriverMED_Family::Init (SMESHDS_GroupBase* theGroup)
{
// Elements
myElements.clear();
- group->InitIterator();
- while (group->More())
+ SMDS_ElemIteratorPtr elemIt = theGroup->GetElements();
+ while (elemIt->more())
{
- myElements.insert(group->Next());
+ myElements.insert(elemIt->next());
}
// Type
- myType = group->GetType();
+ myType = theGroup->GetType();
// Groups list
myGroupNames.clear();
- myGroupNames.insert(string(group->GetStoreName()));
+ myGroupNames.insert(string(theGroup->GetStoreName()));
}
//=============================================================================
{
// Elements
set<const SMDS_MeshElement *>::iterator anIter = by->myElements.begin();
- for (; anIter != by->myElements.end(); anIter++)
+ while ( anIter != by->myElements.end())
{
if (myElements.find(*anIter) != myElements.end())
{
common->myElements.insert(*anIter);
myElements.erase(*anIter);
- by->myElements.erase(*anIter);
+ by->myElements.erase(anIter++);
}
+ else
+ anIter++;
}
if (!common->IsEmpty())