#include <vtkUnstructuredGrid.h>
// OCCT includes
-#include <TColStd_IndexedMapOfInteger.hxx>
#include <Standard_ErrorHandler.hxx>
namespace SMESH
void OnVisuException()
{
try {
-#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
OCC_CATCH_SIGNALS;
-#endif
// PAL16774 (Crash after display of many groups). Salome sometimes crashes just
// after or at showing this message, so we do an additional check of available memory
// char* buf = new char[100*1024];
TVisualObjPtr aVisualObj;
TVisualObjCont::key_type aKey(theStudyId,theEntry);
try{
-#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
OCC_CATCH_SIGNALS;
-#endif
TVisualObjCont::iterator anIter = VISUAL_OBJ_CONT.find(aKey);
if(anIter != VISUAL_OBJ_CONT.end()){
aVisualObj = anIter->second;
bool objModified = false;
if ( aVisualObj ) {
try {
-#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
OCC_CATCH_SIGNALS;
-#endif
- //MESSAGE("GetVisualObj");
if (nulData)
- objModified = aVisualObj->NulData();
+ objModified = aVisualObj->NulData();
else
objModified = aVisualObj->Update();
}
catch (...) {
-#ifdef _DEBUG_
MESSAGE ( "Exception in SMESHGUI_VTKUtils::GetVisualObj()" );
-#endif
RemoveVisualObjectWithActors( theEntry ); // remove this object
OnVisuException();
aVisualObj.reset();
// TODO: estimate memory usage in other modes and take current mode into account
int freeMB = SMDS_Mesh::CheckMemory(true);
int usedMB = aVisualObj->GetUnstructuredGrid()->GetActualMemorySize() / 1024;
- MESSAGE("SMESHGUI_VTKUtils::GetVisualObj(), freeMB=" << freeMB << ", usedMB=" <<usedMB);
+ //MESSAGE("SMESHGUI_VTKUtils::GetVisualObj(), freeMB=" << freeMB << ", usedMB=" <<usedMB);
if ( freeMB > 0 && usedMB * 5 > freeMB ) {
- bool continu = false;
- if ( usedMB * 3 > freeMB )
- // even dont try to show
- SUIT_MessageBox::warning(SMESHGUI::desktop(), QObject::tr("SMESH_WRN_WARNING"),
- QObject::tr("SMESH_NO_MESH_VISUALIZATION"));
- else
- // there is a chance to succeed
- continu = SUIT_MessageBox::warning
- (SMESHGUI::desktop(),
- QObject::tr("SMESH_WRN_WARNING"),
- QObject::tr("SMESH_CONTINUE_MESH_VISUALIZATION"),
- SUIT_MessageBox::Yes | SUIT_MessageBox::No,
- SUIT_MessageBox::Yes ) == SUIT_MessageBox::Yes;
- if ( !continu ) {
- // remove the corresponding actors from all views
- RemoveVisualObjectWithActors( theEntry );
- aVisualObj.reset();
- }
+ bool continu = false;
+ if ( usedMB * 3 > freeMB )
+ // don't even try to show
+ SUIT_MessageBox::warning(SMESHGUI::desktop(), QObject::tr("SMESH_WRN_WARNING"),
+ QObject::tr("SMESH_NO_MESH_VISUALIZATION"));
+ else
+ // there is a chance to succeed
+ continu = SUIT_MessageBox::warning
+ (SMESHGUI::desktop(),
+ QObject::tr("SMESH_WRN_WARNING"),
+ QObject::tr("SMESH_CONTINUE_MESH_VISUALIZATION"),
+ SUIT_MessageBox::Yes | SUIT_MessageBox::No,
+ SUIT_MessageBox::Yes ) == SUIT_MessageBox::Yes;
+ if ( !continu ) {
+ // remove the corresponding actors from all views
+ RemoveVisualObjectWithActors( theEntry );
+ aVisualObj.reset();
+ }
}
}
if (SVTK_ViewWindow* wnd = GetCurrentVtkView())
{
try {
-#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
OCC_CATCH_SIGNALS;
-#endif
wnd->getRenderer()->Render();
wnd->Repaint(false);
}
catch (...) {
-#ifdef _DEBUG_
MESSAGE ( "Exception in SMESHGUI_VTKUtils::RepaintCurrentView()" );
-#endif
OnVisuException();
}
}
void RepaintViewWindow(SVTK_ViewWindow* theWindow)
{
try {
-#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
OCC_CATCH_SIGNALS;
-#endif
theWindow->getRenderer()->Render();
theWindow->Repaint();
}
catch (...) {
-#ifdef _DEBUG_
MESSAGE ( "Exception in SMESHGUI_VTKUtils::RepaintViewWindow(SVTK_ViewWindow*)" );
-#endif
OnVisuException();
}
}
void RenderViewWindow(SVTK_ViewWindow* theWindow)
{
try {
-#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
OCC_CATCH_SIGNALS;
-#endif
theWindow->getRenderer()->Render();
theWindow->Repaint();
}
catch (...) {
-#ifdef _DEBUG_
MESSAGE ( "Exception in SMESHGUI_VTKUtils::RenderViewWindow(SVTK_ViewWindow*)" );
-#endif
OnVisuException();
}
}
void FitAll(){
if(SVTK_ViewWindow* wnd = GetCurrentVtkView() ){
try {
-#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
OCC_CATCH_SIGNALS;
-#endif
wnd->onFitAll();
wnd->Repaint();
}
catch (...) {
-#ifdef _DEBUG_
MESSAGE ( "Exception in SMESHGUI_VTKUtils::FitAll()" );
-#endif
OnVisuException();
}
}
}
}
}
- MESSAGE("CreateActor " << anActor);
+ //MESSAGE("CreateActor " << anActor);
if( anActor )
if( SMESHGUI* aSMESHGUI = SMESHGUI::GetSMESHGUI() )
aSMESHGUI->addActorAsObserver( anActor );
void DisplayActor( SUIT_ViewWindow *theWnd, SMESH_Actor* theActor){
if(SVTK_ViewWindow* vtkWnd = GetVtkViewWindow(theWnd)){
try {
-#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
OCC_CATCH_SIGNALS;
-#endif
- MESSAGE("DisplayActor " << theActor);
+ //MESSAGE("DisplayActor " << theActor);
vtkWnd->AddActor(theActor);
vtkWnd->Repaint();
}
catch (...) {
-#ifdef _DEBUG_
MESSAGE ( "Exception in SMESHGUI_VTKUtils::DisplayActor()" );
-#endif
OnVisuException();
}
}
}
- void RemoveActor( SUIT_ViewWindow *theWnd, SMESH_Actor* theActor){
- if(SVTK_ViewWindow* vtkWnd = GetVtkViewWindow(theWnd)){
- MESSAGE("RemoveActor " << theActor);
+ void RemoveActor( SUIT_ViewWindow *theWnd, SMESH_Actor* theActor)
+ {
+ if ( SVTK_ViewWindow* vtkWnd = GetVtkViewWindow(theWnd)) {
+ //MESSAGE("RemoveActor " << theActor);
vtkWnd->RemoveActor(theActor);
if(theActor->hasIO()){
Handle(SALOME_InteractiveObject) anIO = theActor->getIO();
bool UpdateView(SUIT_ViewWindow *theWnd, EDisplaing theAction, const char* theEntry)
{
- //MESSAGE("UpdateView");
+ //MESSAGE("UpdateView");
bool OK = false;
SVTK_ViewWindow* aViewWnd = GetVtkViewWindow(theWnd);
if (!aViewWnd)
case eDisplayAll: {
while (vtkActor *anAct = aCollection->GetNextActor()) {
if (SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)) {
- MESSAGE("--- display " << anActor);
+ //MESSAGE("--- display " << anActor);
anActor->SetVisibility(true);
if(anActor->hasIO()){
//MESSAGE("---case eDisplayOnly");
while (vtkActor *anAct = aCollection->GetNextActor()) {
if (SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)) {
- //MESSAGE("--- erase " << anActor);
+ //MESSAGE("--- erase " << anActor);
anActor->SetVisibility(false);
}
}
switch (theAction) {
case eDisplay:
case eDisplayOnly:
- //MESSAGE("--- display " << anActor);
+ //MESSAGE("--- display " << anActor);
anActor->Update();
anActor->SetVisibility(true);
if (theAction == eDisplayOnly) aRenderer->ResetCameraClippingRange();
aStudy->setVisibilityState(theEntry, Qtx::ShownState);
break;
case eErase:
- //MESSAGE("--- erase " << anActor);
+ //MESSAGE("--- erase " << anActor);
anActor->SetVisibility(false);
aStudy->setVisibilityState(theEntry, Qtx::HiddenState);
break;
case eDisplay:
case eDisplayOnly:
{
- //MESSAGE("---");
+ //MESSAGE("---");
SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(theWnd->getViewManager()->study());
_PTR(Study) aDocument = aStudy->studyDS();
// Pass non-visual objects (hypotheses, etc.), return true in this case
if ((anActor = CreateActor(aDocument,theEntry,true))) {
bool needFitAll = noSmeshActors(theWnd); // fit for the first object only
DisplayActor(theWnd,anActor);
+ anActor->SetVisibility(true);
aStudy->setVisibilityState(theEntry, Qtx::ShownState);
// FitAll(); - PAL16770(Display of a group performs an automatic fit all)
if (needFitAll) FitAll();
bool UpdateView(EDisplaing theAction, const char* theEntry) {
- //MESSAGE("UpdateView");
+ //MESSAGE("UpdateView");
SalomeApp_Study* aStudy = dynamic_cast< SalomeApp_Study* >( GetActiveStudy() );
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( aStudy->application() );
if ( SUIT_ViewManager* vm = app->activeViewManager() )