X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FDriverMED%2FDriverMED_Family.cxx;h=e2b5204f2fbfd7246d495f3d5aa2e06829610aaf;hb=120207d740662965e1ca6dfe8325d1e7edad0e73;hp=f6d67ea597d72ee76eb19488b0b9f874c7c4bc52;hpb=5d0b75d9d1a9935ec419e820e6dde45a665dd978;p=modules%2Fsmesh.git diff --git a/src/DriverMED/DriverMED_Family.cxx b/src/DriverMED/DriverMED_Family.cxx index f6d67ea59..e2b5204f2 100644 --- a/src/DriverMED/DriverMED_Family.cxx +++ b/src/DriverMED/DriverMED_Family.cxx @@ -1,4 +1,4 @@ -// 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 @@ -26,7 +26,6 @@ // Module : SMESH // #include "DriverMED_Family.h" -#include "MED_Factory.hxx" #include @@ -93,7 +92,7 @@ DriverMED_Family return myType; } -const std::set< SMDSAbs_ElementType >& +const ElemTypeSet& DriverMED_Family ::GetTypes() const { @@ -366,71 +365,6 @@ DriverMED_Family 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::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(); - //else - maxSize = MED::GetNOMLength(); - 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::iterator aGrIter = myGroupNames.begin(); -// for (; aGrIter != myGroupNames.end(); aGrIter++) -// { -// cout << " " << *aGrIter; -// } -// cout << endl; -// -// cout << "Elements: "; -// set::iterator anIter = myElements.begin(); -// for (; anIter != myElements.end(); anIter++) -// { -// cout << " " << (*anIter)->GetID(); -// } -// cout << endl; - - return anInfo; -} - //============================================================================= /*! * Initialize the tool by SMESHDS_GroupBase @@ -574,3 +508,21 @@ void DriverMED_Family::Split (DriverMED_FamilyPtr by, 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; +}