#endif
myFamilies.clear();
if(MYDEBUG) MESSAGE("Perform - myFile : "<<myFile);
- PWrapper aMed = CrWrapper(myFile,true);
+ PWrapper aMed = CrWrapperR(myFile);
aResult = DRS_EMPTY;
TInt aNbMeshes = aMed->GetNbMeshes();
}
if(MYDEBUG) MESSAGE(aGroupName);
if ( strncmp( aGroupName.c_str(), NIG_GROUP_PREFIX, strlen(NIG_GROUP_PREFIX) ) != 0 )
- aFamily->AddGroupName(aGroupName);
+ aFamily->AddGroupName( fixUTF8( aGroupName ));
}
aFamily->SetId( aFamId );
myFamilies[aFamId] = aFamily;
if ( anIsElemNum && !aBallInfo->myElemNum->empty() )
maxID = *std::max_element( aBallInfo->myElemNum->begin(),
aBallInfo->myElemNum->end() );
- myMesh->getGrid()->AllocateDiameters( maxID ); // performance optimization
+ myMesh->GetGrid()->AllocateDiameters( maxID ); // performance optimization
// create balls
SMDS_MeshElement* anElement;
aResult = addMessage( "Unknown exception", /*isFatal=*/true );
}
#endif
- if (myMesh)
- myMesh->compactMesh();
// Mantis issue 0020483
if (aResult == DRS_OK && isDescConn) {
try {
if(MYDEBUG) MESSAGE("GetMeshNames - myFile : " << myFile);
theStatus = DRS_OK;
- PWrapper aMed = CrWrapper(myFile);
+ PWrapper aMed = CrWrapperR(myFile);
if (TInt aNbMeshes = aMed->GetNbMeshes()) {
for (int iMesh = 0; iMesh < aNbMeshes; iMesh++) {
set<string>::const_iterator aGrNamesIter = aGroupNames.begin();
for (; aGrNamesIter != aGroupNames.end(); aGrNamesIter++)
{
- const set< SMDSAbs_ElementType >& types = aFamily->GetTypes();
- set< SMDSAbs_ElementType >::const_iterator type = types.begin();
+ const ElemTypeSet& types = aFamily->GetTypes();
+ ElemTypeSet::const_iterator type = types.begin();
for ( ; type != types.end(); ++type )
{
TNameAndType aNameAndType = make_pair( *aGrNamesIter, *type );
void DriverMED_R_SMESHDS_Mesh::GetGroup(SMESHDS_Group* theGroup)
{
- string aGroupName (theGroup->GetStoreName());
+ TFamilyVec * famVecPtr;
+
+ if ( myGroups2FamiliesMap.IsEmpty() ) // PAL23514
+ {
+ TFamilyVec famVector( 1 );
+ map<int, DriverMED_FamilyPtr>::iterator famIter = myFamilies.begin();
+ for ( ; famIter != myFamilies.end(); famIter++ )
+ {
+ DriverMED_FamilyPtr family = famIter->second;
+ const MED::TStringSet& groups = family->GetGroupNames();
+ famVector[ 0 ] = family;
+ MED::TStringSet::const_iterator grpIter = groups.begin();
+ for ( ; grpIter != groups.end(); ++grpIter )
+ {
+ TCollection_AsciiString groupName = grpIter->c_str();
+ if (( famVecPtr = myGroups2FamiliesMap.ChangeSeek( groupName )))
+ famVecPtr->push_back( family );
+ else
+ myGroups2FamiliesMap.Bind( groupName, famVector );
+ }
+ }
+ }
+
+ const char* aGroupName = theGroup->GetStoreName();
if(MYDEBUG) MESSAGE("Get Group " << aGroupName);
- map<int, DriverMED_FamilyPtr>::iterator aFamsIter = myFamilies.begin();
- for (; aFamsIter != myFamilies.end(); aFamsIter++)
+ if (( famVecPtr = myGroups2FamiliesMap.ChangeSeek( aGroupName )))
{
- DriverMED_FamilyPtr aFamily = (*aFamsIter).second;
- if (aFamily->GetTypes().count( theGroup->GetType() ) && aFamily->MemberOf(aGroupName))
+ size_t groupSize = 0;
+ for ( size_t i = 0; i < famVecPtr->size(); ++i )
{
- const ElementsSet& anElements = aFamily->GetElements();
- ElementsSet::const_iterator anElemsIter = anElements.begin();
- for (; anElemsIter != anElements.end(); anElemsIter++)
+ DriverMED_FamilyPtr aFamily = (*famVecPtr)[i];
+ groupSize += aFamily->NbElements( theGroup->GetType() );
+ }
+ theGroup->SMDSGroup().Reserve( groupSize );
+
+ for ( size_t i = 0; i < famVecPtr->size(); ++i )
+ {
+ DriverMED_FamilyPtr aFamily = (*famVecPtr)[i];
+ if ( aFamily->GetTypes().count( theGroup->GetType() ))
{
- const SMDS_MeshElement * element = *anElemsIter;
- if ( element->GetType() == theGroup->GetType() ) // Issue 0020576
- theGroup->SMDSGroup().Add(element);
+ const ElementsSet& anElements = aFamily->GetElements();
+ ElementsSet::const_iterator anElemsIter = anElements.begin();
+ for (; anElemsIter != anElements.end(); anElemsIter++)
+ {
+ const SMDS_MeshElement * element = *anElemsIter;
+ if ( element->GetType() == theGroup->GetType() ) // Issue 0020576
+ theGroup->SMDSGroup().Add(element);
+ }
+ int aGroupAttrVal = aFamily->GetGroupAttributVal();
+ if( aGroupAttrVal != 0 )
+ theGroup->SetColorGroup(aGroupAttrVal);
}
- int aGroupAttrVal = aFamily->GetGroupAttributVal();
- if( aGroupAttrVal != 0)
- theGroup->SetColorGroup(aGroupAttrVal);
-// if ( element ) -- Issue 0020576
-// theGroup->SetType( theGroup->SMDSGroup().GetType() );
}
}
}