-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
// Module : SMESH
//
#include "DriverMED_Family.h"
-#include "MED_Factory.hxx"
#include <sstream>
return aFamilies;
}
-//=============================================================================
-/*!
- * Create TFamilyInfo for this family
- */
-//=============================================================================
-MED::PFamilyInfo
-DriverMED_Family::GetFamilyInfo(const MED::PWrapper& theWrapper,
- const MED::PMeshInfo& theMeshInfo) const
-{
- ostringstream aStr;
- aStr << "FAM_" << myId;
- set<string>::const_iterator aGrIter = myGroupNames.begin();
- for(; aGrIter != myGroupNames.end(); aGrIter++){
- aStr << "_" << *aGrIter;
- }
- string aValue = aStr.str();
- // PAL19785,0019867 - med forbids whitespace to be the last char in the name
- int maxSize;
- //if ( theWrapper->GetVersion() == MED::eV2_1 )
- // maxSize = MED::GetNOMLength<MED::eV2_1>();
- //else
- maxSize = MED::GetNOMLength<MED::eV2_2>();
- int lastCharPos = min( maxSize, (int) aValue.size() ) - 1;
- while ( isspace( aValue[ lastCharPos ] ))
- aValue.resize( lastCharPos-- );
-
- MED::PFamilyInfo anInfo;
- if(myId == 0 || myGroupAttributVal == 0){
- anInfo = theWrapper->CrFamilyInfo(theMeshInfo,
- aValue,
- myId,
- myGroupNames);
- }else{
- MED::TStringVector anAttrDescs (1, ""); // 1 attribute with empty description,
- MED::TIntVector anAttrIds (1, myId); // Id=0,
- MED::TIntVector anAttrVals (1, myGroupAttributVal);
- anInfo = theWrapper->CrFamilyInfo(theMeshInfo,
- aValue,
- myId,
- myGroupNames,
- anAttrDescs,
- anAttrIds,
- anAttrVals);
- }
-
-// cout << endl;
-// cout << "Groups: ";
-// set<string>::iterator aGrIter = myGroupNames.begin();
-// for (; aGrIter != myGroupNames.end(); aGrIter++)
-// {
-// cout << " " << *aGrIter;
-// }
-// cout << endl;
-//
-// cout << "Elements: ";
-// set<const SMDS_MeshElement *>::iterator anIter = myElements.begin();
-// for (; anIter != myElements.end(); anIter++)
-// {
-// cout << " " << (*anIter)->GetID();
-// }
-// cout << endl;
-
- return anInfo;
-}
-
//=============================================================================
/*!
* Initialize the tool by SMESHDS_GroupBase
common->myType = myType;
}
}
+
+//================================================================================
+/*!
+ * \brief Return a number of elements of a given type
+ */
+//================================================================================
+
+size_t DriverMED_Family::NbElements( SMDSAbs_ElementType theType ) const
+{
+ if ( myTypes.size() < 2 )
+ return myElements.size();
+
+ int nb = 0;
+ for ( ElementsSet::iterator e = myElements.begin(); e != myElements.end(); ++e )
+ nb += ( theType == (*e)->GetType() );
+
+ return nb;
+}