From bc4ecacc07bdf1e6198e8ace789abc5e918d1d2d Mon Sep 17 00:00:00 2001 From: jfa Date: Wed, 12 Oct 2005 10:11:08 +0000 Subject: [PATCH] Enable reading MED files got during SAUVE->MED conversion (can contain empty families) --- src/VISU_I/VISU_Result_i.cc | 178 +++++++++++++++++------------------- 1 file changed, 84 insertions(+), 94 deletions(-) diff --git a/src/VISU_I/VISU_Result_i.cc b/src/VISU_I/VISU_Result_i.cc index 359aea09..15cf901e 100644 --- a/src/VISU_I/VISU_Result_i.cc +++ b/src/VISU_I/VISU_Result_i.cc @@ -249,65 +249,68 @@ VISU::Storable* VISU::Result_i:: Build(SALOMEDS::SObject_ptr theSObject) { + if(MYDEBUG) MESSAGE("Result_i::Build"); + SALOMEDS::StudyBuilder_var aStudyBuilder = myStudyDocument->NewBuilder(); aStudyBuilder->NewCommand(); // There is a transaction - if(MYDEBUG) MESSAGE("Result_i::Build"); - try{ + + try { const TMeshMap& aMeshMap = myInput->GetMeshMap(); - if(aMeshMap.empty()) + if (aMeshMap.empty()) throw std::runtime_error("Build - There is no any mesh information in the file !!!"); + mySComponent = FindOrCreateVisuComponent(myStudyDocument); CORBA::String_var aSComponentEntry = mySComponent->GetID(), anIOR(GetID()); string aRefFatherEntry = GetRefFatherEntry(); + QString aComment; aComment.sprintf("myComment=%s;myType=%d;myFileName=%s;myInitFileName=%s", - GetComment(), - VISU::TRESULT, - myFileInfo.filePath().latin1(), + GetComment(), VISU::TRESULT, myFileInfo.filePath().latin1(), myInitFileName.c_str()); // Restoring of Python dump string aResultEntry = - CreateAttributes(myStudyDocument, - aSComponentEntry, - aRefFatherEntry.c_str(), - anIOR, - myName.c_str(), - "", - aComment.latin1(), - true); + CreateAttributes(myStudyDocument, aSComponentEntry, aRefFatherEntry.c_str(), + anIOR, myName.c_str(), "", aComment.latin1(), true); + mySObject = myStudyDocument->FindObjectID(aResultEntry.c_str()); - if(mySObject->_is_nil()) throw std::runtime_error("Build - There is no SObject for the Result !!!"); - if(!CORBA::is_nil(theSObject)){ + if (mySObject->_is_nil()) + throw std::runtime_error("Build - There is no SObject for the Result !!!"); + + if (!CORBA::is_nil(theSObject)) { CORBA::String_var aString = theSObject->GetID(); - CreateReference(myStudyDocument,aResultEntry,aString.in()); + CreateReference(myStudyDocument, aResultEntry, aString.in()); } + TMeshMap::const_iterator aMeshMapIter = aMeshMap.begin(); - for(; aMeshMapIter != aMeshMap.end(); aMeshMapIter++){ + for (; aMeshMapIter != aMeshMap.end(); aMeshMapIter++) { const string& aMeshName = aMeshMapIter->first; const VISU::PMesh aMesh = aMeshMapIter->second; - const VISU::TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap; - VISU::TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter; aComment.sprintf("myComment=MESH;myName=%s;myDim=%d", - aMeshName.c_str(),aMesh->myDim); - string aMeshEntry = CreateAttributes(myStudyDocument,aResultEntry.c_str(),aRefFatherEntry.c_str(), - "",aMeshName.c_str(),"",aComment.latin1(),true); - if(aMeshOnEntityMap.empty()) continue; - aComment.sprintf("myComment=FAMILIES;myMeshName=%s",aMeshName.c_str()); - string aSubMeshesEntry = CreateAttributes(myStudyDocument,aMeshEntry.c_str(),aRefFatherEntry.c_str(), - "","Families","",aComment.latin1(),true); + aMeshName.c_str(), aMesh->myDim); + string aMeshEntry = + CreateAttributes(myStudyDocument, aResultEntry.c_str(), aRefFatherEntry.c_str(), + "", aMeshName.c_str(), "", aComment.latin1(), true); + + const VISU::TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap; + if (aMeshOnEntityMap.empty()) continue; + + aComment.sprintf("myComment=FAMILIES;myMeshName=%s", aMeshName.c_str()); + string aSubMeshesEntry = + CreateAttributes(myStudyDocument, aMeshEntry.c_str(), aRefFatherEntry.c_str(), + "", "Families", "", aComment.latin1(), true); + //Import entities and according families - aMeshOnEntityMapIter = aMeshOnEntityMap.begin(); typedef std::map TComment2EntryMap; - TComment2EntryMap aComment2EntryMap; typedef std::map TEntity2EntryMap; + TComment2EntryMap aComment2EntryMap; TEntity2EntryMap aEntity2EntryMap; - for(; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++){ + + VISU::TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = aMeshOnEntityMap.begin(); + for (; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++) { const VISU::TEntity& anEntity = aMeshOnEntityMapIter->first; aComment.sprintf("myComment=ENTITY;myType=%d;myMeshName=%s;myId=%d", - VISU::TENTITY, - aMeshName.c_str(), - anEntity); + VISU::TENTITY, aMeshName.c_str(), anEntity); string anEntityName; - switch(anEntity){ + switch (anEntity) { case VISU::NODE_ENTITY : anEntityName = "onNodes"; break; case VISU::EDGE_ENTITY : anEntityName = "onEdges"; break; case VISU::FACE_ENTITY : anEntityName = "onFaces"; break; @@ -318,116 +321,103 @@ Build(SALOMEDS::SObject_ptr theSObject) aEntity2EntryMap[anEntity] = CreateAttributes (myStudyDocument, aSubMeshesEntry.c_str(), aRefFatherEntry.c_str(), "", anEntityName.c_str(), "", aComment.latin1(), true); + const VISU::PMeshOnEntity aMeshOnEntity = aMeshOnEntityMapIter->second; const VISU::TFamilyMap& aFamilyMap = aMeshOnEntity->myFamilyMap; VISU::TFamilyMap::const_iterator aFamilyMapIter = aFamilyMap.begin(); - for(; aFamilyMapIter != aFamilyMap.end(); aFamilyMapIter++){ + for (; aFamilyMapIter != aFamilyMap.end(); aFamilyMapIter++) { const string& aFamilyName = aFamilyMapIter->first; aComment.sprintf("myComment=FAMILY;myType=%d;myMeshName=%s;myEntityId=%d;myName=%s", - VISU::TFAMILY, - aMeshName.c_str(), - anEntity, - aFamilyName.c_str()); + VISU::TFAMILY, aMeshName.c_str(), anEntity, aFamilyName.c_str()); aComment2EntryMap[aComment.latin1()] = - CreateAttributes(myStudyDocument, - aEntity2EntryMap[anEntity].c_str(), - aRefFatherEntry.c_str(), - "", - aFamilyName.c_str(), - "", - aComment.latin1(), - true); + CreateAttributes(myStudyDocument, aEntity2EntryMap[anEntity].c_str(), aRefFatherEntry.c_str(), + "", aFamilyName.c_str(), "", aComment.latin1(), true); } } + //Importing groups const VISU::TGroupMap& aGroupMap = aMesh->myGroupMap; - if(aGroupMap.size() > 0){ - aComment.sprintf("myComment=GROUPS;myMeshName=%s", - aMeshName.c_str()); + if (aGroupMap.size() > 0) { + aComment.sprintf("myComment=GROUPS;myMeshName=%s", aMeshName.c_str()); string aGroupsEntry = - CreateAttributes(myStudyDocument, - aMeshEntry.c_str(), - aRefFatherEntry.c_str(), - "", - "Groups", - "", - aComment.latin1(), - true); + CreateAttributes(myStudyDocument, aMeshEntry.c_str(), aRefFatherEntry.c_str(), + "", "Groups", "", aComment.latin1(), true); + VISU::TGroupMap::const_iterator aGroupMapIter = aGroupMap.begin(); - for(; aGroupMapIter != aGroupMap.end(); aGroupMapIter++){ + for (; aGroupMapIter != aGroupMap.end(); aGroupMapIter++) { const string& aGroupName = aGroupMapIter->first; aComment.sprintf("myComment=GROUP;myType=%d;myMeshName=%s;myName=%s", - VISU::TGROUP,aMeshName.c_str(),aGroupName.c_str()); - string aGroupEntry = CreateAttributes(myStudyDocument,aGroupsEntry.c_str(),aRefFatherEntry.c_str(), - "",aGroupName.c_str(),"",aComment.latin1(),true); + VISU::TGROUP, aMeshName.c_str(), aGroupName.c_str()); + string aGroupEntry = + CreateAttributes(myStudyDocument, aGroupsEntry.c_str(), aRefFatherEntry.c_str(), + "", aGroupName.c_str(), "", aComment.latin1(), true); + const VISU::PGroup aGroup = aGroupMapIter->second; const VISU::TFamilyAndEntitySet& aFamilyAndEntitySet = aGroup->myFamilyAndEntitySet; VISU::TFamilyAndEntitySet::const_iterator aFamilyAndEntitySetIter = aFamilyAndEntitySet.begin(); - for(; aFamilyAndEntitySetIter != aFamilyAndEntitySet.end(); aFamilyAndEntitySetIter++){ + for (; aFamilyAndEntitySetIter != aFamilyAndEntitySet.end(); aFamilyAndEntitySetIter++) { const VISU::TFamilyAndEntity& aFamilyAndEntity = *aFamilyAndEntitySetIter; const string& aFamilyName = aFamilyAndEntity.first; const VISU::TEntity& anEntity = aFamilyAndEntity.second; aComment.sprintf("myComment=FAMILY;myType=%d;myMeshName=%s;myEntityId=%d;myName=%s", - VISU::TFAMILY, - aMeshName.c_str(), - anEntity, - aFamilyName.c_str()); - CreateReference(myStudyDocument,aGroupEntry,aComment2EntryMap[aComment.latin1()]); + VISU::TFAMILY, aMeshName.c_str(), anEntity, aFamilyName.c_str()); + if (aComment2EntryMap.count(aComment.latin1()) > 0) + CreateReference(myStudyDocument, aGroupEntry, aComment2EntryMap[aComment.latin1()]); } } } + //Import fields string aFieldsEntry; bool isFieldEntryCreated = 0; aMeshOnEntityMapIter = aMeshOnEntityMap.begin(); - for(; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++){ + for (; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++) { const VISU::TEntity& anEntity = aMeshOnEntityMapIter->first; const VISU::PMeshOnEntity aMeshOnEntity = aMeshOnEntityMapIter->second; const VISU::TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap; VISU::TFieldMap::const_iterator aFieldMapIter = aFieldMap.begin(); - for(; aFieldMapIter != aFieldMap.end(); aFieldMapIter++){ - if(!isFieldEntryCreated){ - aComment.sprintf("myComment=FIELDS;myMeshName=%s", - aMeshName.c_str()); + for (; aFieldMapIter != aFieldMap.end(); aFieldMapIter++) { + if (!isFieldEntryCreated) { + aComment.sprintf("myComment=FIELDS;myMeshName=%s", aMeshName.c_str()); aFieldsEntry = - CreateAttributes(myStudyDocument, - aMeshEntry.c_str(), - aRefFatherEntry.c_str(), - "", - "Fields", - "", - aComment.latin1(), - true); + CreateAttributes(myStudyDocument, aMeshEntry.c_str(), aRefFatherEntry.c_str(), + "", "Fields", "", aComment.latin1(), true); isFieldEntryCreated = true; } const string& aFieldName = aFieldMapIter->first; const VISU::PField aField = aFieldMapIter->second; const VISU::TValField& aValField = aField->myValField; QString aFieldNameWithUnit = ::GenerateFieldName(aFieldName,aField->myUnitNames[0]); - aComment.sprintf("myComment=FIELD;myType=%d;myMeshName=%s;myEntityId=%d;myName=%s;myNbTimeStamps=%d;myNumComponent=%d", - VISU::TFIELD,aMeshName.c_str(),anEntity,aFieldName.c_str(),aValField.size(),aField->myNbComp); - string aFieldEntry = CreateAttributes(myStudyDocument,aFieldsEntry.c_str(),aRefFatherEntry.c_str(), - "",aFieldNameWithUnit.latin1(),"",aComment.latin1(),true); - CreateReference(myStudyDocument,aFieldEntry,aEntity2EntryMap[anEntity]); + aComment.sprintf("myComment=FIELD;myType=%d;myMeshName=%s;myEntityId=%d;myName=%s;" + "myNbTimeStamps=%d;myNumComponent=%d", + VISU::TFIELD, aMeshName.c_str(), anEntity, aFieldName.c_str(), + aValField.size(), aField->myNbComp); + string aFieldEntry = + CreateAttributes(myStudyDocument, aFieldsEntry.c_str(), aRefFatherEntry.c_str(), + "", aFieldNameWithUnit.latin1(), "", aComment.latin1(), true); + CreateReference(myStudyDocument, aFieldEntry, aEntity2EntryMap[anEntity]); + VISU::TValField::const_iterator aValFieldIter = aValField.begin(); - for(; aValFieldIter != aValField.end(); aValFieldIter++){ + for (; aValFieldIter != aValField.end(); aValFieldIter++) { int aTimeStamp = aValFieldIter->first; const VISU::PValForTime aValForTime = aValFieldIter->second; - aComment.sprintf("myComment=TIMESTAMP;myType=%d;myMeshName=%s;myEntityId=%d;myFieldName=%s;myTimeStampId=%d;myNumComponent=%d", - VISU::TTIMESTAMP,aMeshName.c_str(),anEntity,aFieldName.c_str(),aTimeStamp,aField->myNbComp); + aComment.sprintf("myComment=TIMESTAMP;myType=%d;myMeshName=%s;myEntityId=%d;" + "myFieldName=%s;myTimeStampId=%d;myNumComponent=%d", + VISU::TTIMESTAMP, aMeshName.c_str(), anEntity, + aFieldName.c_str(), aTimeStamp, aField->myNbComp); string aTimeStampId = VISU_Convertor::GenerateName(aValForTime->myTime); - CreateAttributes(myStudyDocument,aFieldEntry.c_str(),aRefFatherEntry.c_str(), - "",aTimeStampId.c_str(),"",aComment.latin1(),true); + CreateAttributes(myStudyDocument, aFieldEntry.c_str(), aRefFatherEntry.c_str(), + "", aTimeStampId.c_str(), "", aComment.latin1(), true); } } } } bool isBuildAll = VISU::GetResourceMgr()->booleanValue("VISU", "full_med_loading", false); - if(isBuildAll) BuildAll(); - }catch(std::exception& exc){ + if (isBuildAll) BuildAll(); + } catch(std::exception& exc) { INFOS("Follow exception was occured :\n"<