X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_HypothesesUtils.cxx;h=878163738503d7c11750c49d8a28003c3fb89311;hb=5c6d39bbb8b894c5a84a67b494692a694e46ca41;hp=da461060c52d311516b2ed14d9b3be1743a4d912;hpb=b0a908c0d20341651771d0249fb10882f54b2aad;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx index da461060c..878163738 100644 --- a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx +++ b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx @@ -84,7 +84,7 @@ namespace SMESH typedef IMap THypothesisDataMap; THypothesisDataMap myHypothesesMap; THypothesisDataMap myAlgorithmsMap; - + // BUG 0020378 //typedef QMap THypCreatorMap; //THypCreatorMap myHypCreatorMap; @@ -220,16 +220,16 @@ namespace SMESH if (ok) { THypothesisDataMap::ConstIterator it1 = aXmlHandler->myHypothesesMap.begin(); - + for( ;it1 != aXmlHandler->myHypothesesMap.end(); it1++) myHypothesesMap.insert( it1.key(), it1.value() ); - + it1 = aXmlHandler->myAlgorithmsMap.begin(); for( ;it1 != aXmlHandler->myAlgorithmsMap.end(); it1++) myAlgorithmsMap.insert( it1.key(), it1.value() ); - + QList::iterator it; - for ( it = aXmlHandler->myListOfHypothesesSets.begin(); + for ( it = aXmlHandler->myListOfHypothesesSets.begin(); it != aXmlHandler->myListOfHypothesesSets.end(); ++it ) { @@ -281,27 +281,23 @@ namespace SMESH // fill list of hypotheses/algorithms THypothesisDataMap& pMap = isAlgo ? myAlgorithmsMap : myHypothesesMap; THypothesisDataMap::ConstIterator anIter; - for ( anIter = pMap.begin(); anIter != pMap.end(); anIter++ ) { + for ( anIter = pMap.begin(); anIter != pMap.end(); anIter++ ) + { HypothesisData* aData = anIter.value(); - if(!aData || aData->Label.isEmpty()) continue; - if (( theDim < 0 || aData->Dim.contains( theDim )) && - ( isAlgo || aData->IsAuxOrNeedHyp == isAux ) && - ( aData->Context == "ANY" || aData->Context == context )) + if (( aData && !aData->Label.isEmpty() ) && + ( theDim < 0 || aData->Dim.contains( theDim )) && + ( isAlgo || aData->IsAuxOrNeedHyp == isAux ) && + ( aData->Context == "ANY" || aData->Context == context ) && + ( !checkGeometry || aData->IsNeedGeometry == isNeedGeometry )) { - if (checkGeometry) { - if (aData->IsNeedGeometry == isNeedGeometry) - aHypList.append(anIter.key()); - } - else { - aHypList.append(anIter.key()); - } + aHypList.append(anIter.key()); } } return aHypList; } - QStringList GetHypothesesSets(int maxDim, const QString& MeshType) + QStringList GetHypothesesSets(int maxDim) { QStringList aSetNameList; @@ -309,37 +305,14 @@ namespace SMESH InitAvailableHypotheses(); QList::iterator hypoSet; for ( hypoSet = myListOfHypothesesSets.begin(); - hypoSet != myListOfHypothesesSets.end(); - ++hypoSet ) { + hypoSet != myListOfHypothesesSets.end(); + ++hypoSet ) { HypothesesSet* aSet = *hypoSet; - bool isAvailable = false; - if ( !MeshType.isEmpty() ) - { - if ( aSet->maxDim() != maxDim) - continue; - aSet->init( true ); - while ( aSet->next(), aSet->more() ) - { - if ( HypothesisData* hypData = SMESH::GetHypothesisData( aSet->current() ) ) - { - QStringList::const_iterator inElemType = hypData->OutputTypes.begin(); - for ( ; inElemType != hypData->OutputTypes.end(); inElemType++ ) - { - if ( *inElemType == MeshType ){ - isAvailable = true; - break; - } - } - } - if ( isAvailable ) break; - } - } - else if ( aSet && ( aSet->count( true ) || aSet->count( false )) && - aSet->maxDim() <= maxDim) + if ( aSet && ( aSet->count( true ) || aSet->count( false )) && + aSet->maxDim() <= maxDim) { - isAvailable = true; + aSetNameList.append( mangledHypoSetName( aSet )); } - if ( isAvailable ) aSetNameList.append( mangledHypoSetName( aSet )); } aSetNameList.removeDuplicates(); aSetNameList.sort(); @@ -348,7 +321,7 @@ namespace SMESH QStringList reversedNames; for ( int i = 0; i < aSetNameList.count(); ++i ) reversedNames.prepend( aSetNameList[i] ); - + return reversedNames; } @@ -356,7 +329,7 @@ namespace SMESH { QString name = demangledHypoSetName( theSetName ); QList::iterator hypoSet; - for ( hypoSet = myListOfHypothesesSets.begin(); + for ( hypoSet = myListOfHypothesesSets.begin(); hypoSet != myListOfHypothesesSets.end(); ++hypoSet ) { HypothesesSet* aSet = *hypoSet; @@ -433,7 +406,7 @@ namespace SMESH // 2. Get names of plugin libraries HypothesisData* aHypData = GetHypothesisData(aHypType); - if (!aHypData) + if (!aHypData) return aCreator; QString aClientLibName = aHypData->ClientLibName; @@ -450,7 +423,7 @@ namespace SMESH #ifdef WIN32 const char* anError = "Can't load client meshers plugin library"; #else - const char* anError = dlerror(); + const char* anError = dlerror(); #endif INFOS(anError); // always display this kind of error ! } @@ -480,7 +453,7 @@ namespace SMESH //rnv : This dynamic property of the QObject stores the name of the plugin. // It is used to obtain plugin root dir environment variable - // in the SMESHGUI_HypothesisDlg class. Plugin root dir environment + // in the SMESHGUI_HypothesisDlg class. Plugin root dir environment // variable is used to display documentation. aCreator->setProperty(PLUGIN_NAME,aHypData->PluginName); } @@ -500,7 +473,7 @@ namespace SMESH const QString& aHypName, const bool isAlgo) { - if(MYDEBUG) MESSAGE("Create " << aHypType.toLatin1().data() << + if(MYDEBUG) MESSAGE("Create " << aHypType.toLatin1().data() << " with name " << aHypName.toLatin1().data()); HypothesisData* aHypData = GetHypothesisData(aHypType); QString aServLib = aHypData->ServerLibName; @@ -524,6 +497,17 @@ namespace SMESH return SMESH::SMESH_Hypothesis::_nil(); } + bool IsApplicable(const QString& aHypType, + GEOM::GEOM_Object_ptr theGeomObject, + const bool toCheckAll) + { + HypothesisData* aHypData = GetHypothesisData(aHypType); + QString aServLib = aHypData->ServerLibName; + return SMESHGUI::GetSMESHGen()->IsApplicable( aHypType.toLatin1().data(), + aServLib.toLatin1().data(), + theGeomObject, + toCheckAll); + } bool AddHypothesisOnMesh (SMESH::SMESH_Mesh_ptr aMesh, SMESH::SMESH_Hypothesis_ptr aHyp) @@ -653,7 +637,7 @@ namespace SMESH if (!aSubMesh->_is_nil()) aMesh = aSubMesh->GetFather(); - if (!aMesh->_is_nil()) { + if (!aMesh->_is_nil()) { if (aMesh->HasShapeToMesh() && !aShapeObject->_is_nil()) { res = aMesh->RemoveHypothesis(aShapeObject, anHyp); if (res < SMESH::HYP_UNKNOWN_FATAL) { @@ -661,14 +645,14 @@ namespace SMESH if (meshSO) SMESH::ModifiedMesh(meshSO, false, aMesh->NbNodes()==0); } - + } else if(!aMesh->HasShapeToMesh()){ res = aMesh->RemoveHypothesis(aShapeObject, anHyp); if (res < SMESH::HYP_UNKNOWN_FATAL) { _PTR(SObject) meshSO = SMESH::FindSObject(aMesh); if (meshSO) - SMESH::ModifiedMesh(meshSO, false, aMesh->NbNodes()==0); + SMESH::ModifiedMesh(meshSO, false, aMesh->NbNodes()==0); } } if (res > SMESH::HYP_OK) { @@ -730,7 +714,7 @@ namespace SMESH QString msg; if ( !hasAlgo ) msg = QObject::tr( "STATE_ALGO_MISSING" ); - else + else switch( error.state ) { CASE2MESSAGE( HYP_MISSING ); CASE2MESSAGE( HYP_NOTCONFORM );