X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_HypothesesUtils.cxx;h=3e5bd4122356a4165bb8d7ebea733a47d773431b;hp=9c67829795d66199da13d8278d4c0025785724ad;hb=HEAD;hpb=0fc0831670e27a5611b941c52dc152fd63964515 diff --git a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx index 9c6782979..8a07c2b9b 100644 --- a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx +++ b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -34,7 +34,8 @@ #include "SMESHGUI_VTKUtils.h" #include "SMESHGUI_XmlHandler.h" -#include "SMESH_Actor.h" +#include +#include // SALOME GUI includes #include @@ -80,12 +81,6 @@ #define env_sep ":" #endif // WIN32 -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - namespace SMESH { typedef IMap THypothesisDataMap; @@ -496,7 +491,7 @@ namespace SMESH SMESHGUI_GenericHypothesisCreator* GetHypothesisCreator(const QString& aHypType) { - if(MYDEBUG) MESSAGE("Get HypothesisCreator for " << aHypType.toLatin1().data()); + MESSAGE("Get HypothesisCreator for " << aHypType.toLatin1().data()); SMESHGUI_GenericHypothesisCreator* aCreator = 0; @@ -521,7 +516,7 @@ namespace SMESH // 3. Load Client Plugin Library try { // load plugin library - if(MYDEBUG) MESSAGE("Loading client meshers plugin library ..."); + MESSAGE("Loading client meshers plugin library ..."); #ifdef WIN32 #ifdef UNICODE LPTSTR path = new TCHAR[aClientLibName.length() + 1]; @@ -551,21 +546,21 @@ namespace SMESH } else { // get method, returning hypothesis creator - if(MYDEBUG) MESSAGE("Find GetHypothesisCreator() method ..."); + MESSAGE("Find GetHypothesisCreator() method ..."); typedef SMESHGUI_GenericHypothesisCreator* (*GetHypothesisCreator) \ ( const QString& ); GetHypothesisCreator procHandle = (GetHypothesisCreator)GetProc(libHandle, "GetHypothesisCreator"); if (!procHandle) { - if(MYDEBUG) MESSAGE("bad hypothesis client plugin library"); + MESSAGE("bad hypothesis client plugin library"); UnLoadLib(libHandle); } else { // get hypothesis creator - if(MYDEBUG) MESSAGE("Get Hypothesis Creator for " << aHypType.toLatin1().data()); + MESSAGE("Get Hypothesis Creator for " << aHypType.toLatin1().data()); aCreator = procHandle( aHypType ); if (!aCreator) { - if(MYDEBUG) MESSAGE("no such a hypothesis in this plugin"); + MESSAGE("no such a hypothesis in this plugin"); } else { // map hypothesis creator to a hypothesis name @@ -592,9 +587,9 @@ namespace SMESH SMESH::SMESH_Hypothesis_ptr CreateHypothesis(const QString& aHypType, const QString& aHypName, - const bool isAlgo) + const bool /*isAlgo*/) { - if(MYDEBUG) MESSAGE("Create " << aHypType.toLatin1().data() << + MESSAGE("Create " << aHypType.toLatin1().data() << " with name " << aHypName.toLatin1().data()); HypothesisData* aHypData = GetHypothesisData(aHypType); QString aServLib = aHypData->ServerLibName; @@ -628,16 +623,19 @@ namespace SMESH HypothesisData* aHypData = GetHypothesisData(aHypType); QString aServLib = aHypData->ServerLibName; + SMESH_TRY; return SMESHGUI::GetSMESHGen()->IsApplicable( aHypType.toLatin1().data(), aServLib.toUtf8().data(), theGeomObject, toCheckAll); + SMESH_CATCH( SMESH::printErrorInDebugMode ); + return false; } bool AddHypothesisOnMesh (SMESH::SMESH_Mesh_ptr aMesh, SMESH::SMESH_Hypothesis_ptr aHyp) { - if(MYDEBUG) MESSAGE ("SMESHGUI::AddHypothesisOnMesh"); + MESSAGE ("SMESHGUI::AddHypothesisOnMesh"); int res = SMESH::HYP_UNKNOWN_FATAL; SUIT_OverrideCursor wc; @@ -647,6 +645,7 @@ namespace SMESH try { CORBA::String_var error; res = aMesh->AddHypothesis(aShapeObject, aHyp, error.out()); + UpdateViewer(aMesh); if (res > SMESH::HYP_OK) { wc.suspend(); processHypothesisStatus(res, aHyp, true, error.in() ); @@ -665,7 +664,7 @@ namespace SMESH bool AddHypothesisOnSubMesh (SMESH::SMESH_subMesh_ptr aSubMesh, SMESH::SMESH_Hypothesis_ptr aHyp) { - if(MYDEBUG) MESSAGE("SMESHGUI::AddHypothesisOnSubMesh() "); + MESSAGE("SMESHGUI::AddHypothesisOnSubMesh() "); int res = SMESH::HYP_UNKNOWN_FATAL; SUIT_OverrideCursor wc; @@ -678,6 +677,7 @@ namespace SMESH { CORBA::String_var error; res = aMesh->AddHypothesis( aShapeObject, aHyp, error.out() ); + UpdateViewer(aMesh); if (res > SMESH::HYP_OK) { wc.suspend(); processHypothesisStatus( res, aHyp, true, error.in() ); @@ -766,12 +766,7 @@ namespace SMESH processHypothesisStatus(res, anHyp, false); wc.resume(); } - if ( _PTR(SObject) meshSO = SMESH::FindSObject(aMesh) ) - { - if ( SMESH_Actor* actor = SMESH::FindActorByEntry( meshSO->GetID().c_str() )) - if( actor->GetVisibility() ) - actor->Update(); - } + UpdateViewer(aMesh); } } catch(const SALOME::SALOME_Exception& S_ex) { wc.suspend(); @@ -780,6 +775,16 @@ namespace SMESH } } return res < SMESH::HYP_UNKNOWN_FATAL; + } + + void UpdateViewer(SMESH::SMESH_Mesh_ptr theMesh) + { + if (_PTR(SObject) meshSO = SMESH::FindSObject(theMesh)) + { + if (SMESH_Actor* actor = SMESH::FindActorByEntry(meshSO->GetID().c_str())) + if (actor->GetVisibility()) + actor->Update(); + } } SObjectList GetMeshesUsingAlgoOrHypothesis(SMESH::SMESH_Hypothesis_ptr AlgoOrHyp) @@ -793,7 +798,7 @@ namespace SMESH if (SO_Hypothesis) { SObjectList listSO = SMESH::getStudy()->FindDependances(SO_Hypothesis); - if(MYDEBUG) MESSAGE("SMESHGUI::GetMeshesUsingAlgoOrHypothesis(): dependency number ="<