X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_HypothesesUtils.cxx;h=def3ff5572faf09584510e225003f46769ff9aa5;hb=04f997252152407f9180e03f0af428ab2ca6f4be;hp=71b8125667e593efec3c64ffebb7b0ac51bd6c9d;hpb=dd0d39d752a4d5ba58ed2e417651093764bb8d09;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx index 71b812566..def3ff557 100644 --- a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx +++ b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx @@ -28,10 +28,13 @@ #include "SMESHGUI_HypothesesUtils.h" #include "SMESHGUI.h" +#include "SMESHGUI_GEOMGenUtils.h" #include "SMESHGUI_Hypotheses.h" -#include "SMESHGUI_XmlHandler.h" #include "SMESHGUI_Utils.h" -#include "SMESHGUI_GEOMGenUtils.h" +#include "SMESHGUI_VTKUtils.h" +#include "SMESHGUI_XmlHandler.h" + +#include "SMESH_Actor.h" // SALOME GUI includes #include @@ -60,16 +63,20 @@ #endif #ifdef WIN32 -#define LibHandle HMODULE -#define LoadLib( name ) LoadLibrary( name ) -#define GetProc GetProcAddress -#define UnLoadLib( handle ) FreeLibrary( handle ); -#else -#define LibHandle void* -#define LoadLib( name ) dlopen( name, RTLD_LAZY ) -#define GetProc dlsym -#define UnLoadLib( handle ) dlclose( handle ); -#endif + #define LibHandle HMODULE + #define LoadLib( name ) LoadLibrary( name ) + #define GetProc GetProcAddress + #define UnLoadLib( handle ) FreeLibrary( handle ); +#else // WIN32 + #define LibHandle void* + #ifdef DYNLOAD_LOCAL + #define LoadLib( name ) dlopen( name, RTLD_LAZY | RTLD_LOCAL ) + #else // DYNLOAD_LOCAL + #define LoadLib( name ) dlopen( name, RTLD_LAZY | RTLD_GLOBAL ) + #endif // DYNLOAD_LOCAL + #define GetProc dlsym + #define UnLoadLib( handle ) dlclose( handle ); +#endif // WIN32 #ifdef _DEBUG_ static int MYDEBUG = 0; @@ -282,14 +289,14 @@ namespace SMESH QStringList GetAvailableHypotheses( const bool isAlgo, const int theDim, const bool isAux, - const bool isNeedGeometry, + const bool hasGeometry, const bool isSubMesh) { QStringList aHypList; // Init list of available hypotheses, if needed InitAvailableHypotheses(); - bool checkGeometry = ( !isNeedGeometry && isAlgo ); + bool checkGeometry = ( isAlgo ); const char* context = isSubMesh ? "LOCAL" : "GLOBAL"; // fill list of hypotheses/algorithms THypothesisDataMap& pMap = isAlgo ? myAlgorithmsMap : myHypothesesMap; @@ -301,7 +308,8 @@ namespace SMESH ( theDim < 0 || aData->Dim.contains( theDim )) && ( isAlgo || aData->IsAuxOrNeedHyp == isAux ) && ( aData->Context == "ANY" || aData->Context == context ) && - ( !checkGeometry || aData->IsNeedGeometry == isNeedGeometry )) + ( !checkGeometry || (!aData->IsNeedGeometry || + ( aData->IsNeedGeometry > 0 ) == hasGeometry))) { aHypList.append(anIter.key()); } @@ -386,7 +394,7 @@ namespace SMESH QList dummyIL; dummyIL << 1; QStringList dummySL; HypothesisData group( dummyS,dummyS,dummyS,dummyS,dummyS,dummyS,dummyS,-1,-1, - dummyIL, 0, dummySL,dummySL,dummySL,dummySL ); + dummyIL, 0, dummySL,dummySL,dummySL,dummySL,0,0 ); // no group int key = 0; theGroups[ key ].push_back( group ); @@ -515,7 +523,7 @@ namespace SMESH if(MYDEBUG) MESSAGE("Loading client meshers plugin library ..."); LibHandle libHandle = LoadLib( aClientLibName.toLatin1().data() ); if (!libHandle) { - // report any error, if occured + // report any error, if occurred { #ifdef WIN32 const char* anError = "Can't load client meshers plugin library"; @@ -700,29 +708,29 @@ namespace SMESH _PTR(Study) aStudy = GetActiveStudyDocument(); _PTR(SObject) aHypObj = aStudy->FindObjectID( IObject->getEntry() ); if( aHypObj ) + { + _PTR(SObject) MorSM = SMESH::GetMeshOrSubmesh( aHypObj ); + _PTR(SObject) aRealHypo; + if( aHypObj->ReferencedObject( aRealHypo ) ) { - _PTR(SObject) MorSM = SMESH::GetMeshOrSubmesh( aHypObj ); - _PTR(SObject) aRealHypo; - if( aHypObj->ReferencedObject( aRealHypo ) ) - { - SMESH_Hypothesis_var hypo = SMESH_Hypothesis::_narrow( SObjectToObject( aRealHypo ) ); - RemoveHypothesisOrAlgorithmOnMesh( MorSM, hypo ); - } - else - { - SMESH_Hypothesis_var hypo = SMESH_Hypothesis::_narrow( SObjectToObject( aHypObj ) ); - SObjectList meshList = GetMeshesUsingAlgoOrHypothesis( hypo ); - for( size_t i = 0; i < meshList.size(); i++ ) - RemoveHypothesisOrAlgorithmOnMesh( meshList[ i ], hypo ); - } + SMESH_Hypothesis_var hypo = SMESH_Hypothesis::_narrow( SObjectToObject( aRealHypo ) ); + RemoveHypothesisOrAlgorithmOnMesh( MorSM, hypo ); + } + else + { + SMESH_Hypothesis_var hypo = SMESH_Hypothesis::_narrow( SObjectToObject( aHypObj ) ); + SObjectList meshList = GetMeshesUsingAlgoOrHypothesis( hypo ); + for( size_t i = 0; i < meshList.size(); i++ ) + RemoveHypothesisOrAlgorithmOnMesh( meshList[ i ], hypo ); } + } } catch(const SALOME::SALOME_Exception& S_ex) - { - wc.suspend(); - SalomeApp_Tools::QtCatchCorbaException(S_ex); - res = SMESH::HYP_UNKNOWN_FATAL; - } + { + wc.suspend(); + SalomeApp_Tools::QtCatchCorbaException(S_ex); + res = SMESH::HYP_UNKNOWN_FATAL; + } return res < SMESH::HYP_UNKNOWN_FATAL; } @@ -744,26 +752,24 @@ namespace SMESH if (!aMesh->_is_nil()) { if (aMesh->HasShapeToMesh() && !aShapeObject->_is_nil()) { 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); - } - } 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); - } } if (res > SMESH::HYP_OK) { wc.suspend(); processHypothesisStatus(res, anHyp, false); wc.resume(); } + if ( _PTR(SObject) meshSO = SMESH::FindSObject(aMesh) ) + { + if ( res < SMESH::HYP_UNKNOWN_FATAL ) + SMESH::ModifiedMesh(meshSO, false, aMesh->NbNodes()==0); + + if ( SMESH_Actor* actor = SMESH::FindActorByEntry( meshSO->GetID().c_str() )) + if( actor->GetVisibility() ) + actor->Update(); + } } } catch(const SALOME::SALOME_Exception& S_ex) { wc.suspend();