X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_HypothesesUtils.cxx;h=021e003b93ada81e5b8ac34a605df6fa074364ff;hb=0be76e8fb82d47077bf6621c2ff176fa40f2ee88;hp=c1fc49bee78d6131bc95fe04ff1a9491d2ae4b1e;hpb=75d0234b452659c44159aaf33ed833af89a0ff4c;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx index c1fc49bee..021e003b9 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 @@ -66,7 +69,7 @@ #define UnLoadLib( handle ) FreeLibrary( handle ); #else #define LibHandle void* -#define LoadLib( name ) dlopen( name, RTLD_LAZY ) +#define LoadLib( name ) dlopen( name, RTLD_LAZY | RTLD_GLOBAL ) #define GetProc dlsym #define UnLoadLib( handle ) dlclose( handle ); #endif @@ -516,7 +519,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"; @@ -701,29 +704,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; } @@ -745,26 +748,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();