X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FDriverMED%2FDriverMED_Family.h;fp=src%2FDriverMED%2FDriverMED_Family.h;h=bdbf843013546ae7804e20ca10646eff994ebafc;hp=d102b87a9ffa791080f1876de566e1f7e87e2512;hb=0a447a3701c9274833f0964516261bcdfe7bbbb5;hpb=67af9b15e949de9b9aa17307fde8c46016c4179f diff --git a/src/DriverMED/DriverMED_Family.h b/src/DriverMED/DriverMED_Family.h index d102b87a9..bdbf84301 100644 --- a/src/DriverMED/DriverMED_Family.h +++ b/src/DriverMED/DriverMED_Family.h @@ -91,9 +91,10 @@ class MESHDRIVERMED_EXPORT DriverMED_Family const bool doAllInGroups); //! Create TFamilyInfo for this family + template MED::PFamilyInfo - GetFamilyInfo (const MED::PWrapper& theWrapper, - const MED::PMeshInfo& theMeshInfo) const; + GetFamilyInfo(const LowLevelWriter& theWrapper, + const MED::PMeshInfo& theMeshInfo) const; //! Returns elements of this family const ElementsSet& GetElements () const; @@ -154,4 +155,70 @@ class MESHDRIVERMED_EXPORT DriverMED_Family ElemTypeSet myTypes; // Issue 0020576 }; +#include "MED_Factory.hxx" + +#include +#include +//============================================================================= +/*! + * Create TFamilyInfo for this family + */ +//============================================================================= +template +MED::PFamilyInfo +DriverMED_Family::GetFamilyInfo(const LowLevelWriter& theWrapper, + const MED::PMeshInfo& theMeshInfo) const +{ + std::ostringstream aStr; + aStr << "FAM_" << myId; + std::set::const_iterator aGrIter = myGroupNames.begin(); + for(; aGrIter != myGroupNames.end(); aGrIter++){ + aStr << "_" << *aGrIter; + } + std::string aValue = aStr.str(); + // PAL19785,0019867 - med forbids whitespace to be the last char in the name + int maxSize = MED::GetNOMLength(); + int lastCharPos = std::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; +} + #endif