}
if ( objModified ) {
- // PAL16631. Mesurements showed that to show aVisualObj in shading mode,
+ // PAL16631. Mesurements showed that to show aVisualObj in SHADING(default) mode,
// ~10 times more memory is used than it occupies.
// Warn the user if there is less free memory than 30 sizes of a grid
+ // 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;
if ( freeMB > 0 && usedMB * 30 > freeMB ) {
- int continu = SUIT_MessageBox::warn2
- (SMESHGUI::desktop(),
- QObject::tr("SMESH_WRN_WARNING"),
- QObject::tr("SMESH_CONTINUE_MESH_VISUALIZATION"),
- QObject::tr("SMESH_BUT_YES"), QObject::tr("SMESH_BUT_NO"),
- 1, 0, 1);
+#ifdef _DEBUG_
+ cout << "SMESHGUI_VTKUtils::GetVisualObj(), freeMB=" << freeMB
+ << ", usedMB=" << usedMB<< endl;
+#endif
+ int continu = 0;
+ if ( usedMB * 10 > freeMB )
+ // even dont try to show
+ SUIT_MessageBox::warn1 (SMESHGUI::desktop(), QObject::tr("SMESH_WRN_WARNING"),
+ QObject::tr("SMESH_NO_MESH_VISUALIZATION"),
+ QObject::tr("SMESH_BUT_OK"));
+ else
+ // there is a chance to succeed
+ continu = SUIT_MessageBox::warn2
+ (SMESHGUI::desktop(),
+ QObject::tr("SMESH_WRN_WARNING"),
+ QObject::tr("SMESH_CONTINUE_MESH_VISUALIZATION"),
+ QObject::tr("SMESH_BUT_YES"), QObject::tr("SMESH_BUT_NO"),
+ 1, 0, 1);
if ( !continu ) {
// remove the corresponding actors from all views
RemoveVisualObjectWithActors( theEntry );
wnd->Repaint(false);
}
catch (...) {
- OnVisuException();
#ifdef _DEBUG_
cout << "Exception in SMESHGUI_VTKUtils::RepaintCurrentView()" << endl;
#endif
+ OnVisuException();
}
}
}
theWindow->Repaint();
}
catch (...) {
- OnVisuException();
#ifdef _DEBUG_
cout << "Exception in SMESHGUI_VTKUtils::RepaintViewWindow(SVTK_ViewWindow)" << endl;
#endif
+ OnVisuException();
}
}
theWindow->Repaint();
}
catch (...) {
- OnVisuException();
#ifdef _DEBUG_
cout << "Exception in SMESHGUI_VTKUtils::RenderViewWindow(SVTK_ViewWindow)" << endl;
#endif
+ OnVisuException();
}
}
wnd->Repaint();
}
catch (...) {
- OnVisuException();
#ifdef _DEBUG_
cout << "Exception in SMESHGUI_VTKUtils::FitAll()" << endl;
#endif
+ OnVisuException();
}
}
}
vtkWnd->Repaint();
}
catch (...) {
- OnVisuException();
#ifdef _DEBUG_
cout << "Exception in SMESHGUI_VTKUtils::DisplayActor()" << endl;
#endif
+ OnVisuException();
}
}
}
while(vtkActor *anAct = aCollection->GetNextActor()){
if(SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)){
if(anActor->hasIO())
- Update(anActor->getIO(),anActor->GetVisibility());
+ if (!Update(anActor->getIO(),anActor->GetVisibility()))
+ break; // avoid multiple warinings if visu failed
}
}
}else{
SALOME_ListIteratorOfListIO anIter( selected );
for(; anIter.More(); anIter.Next()){
Handle(SALOME_InteractiveObject) anIO = anIter.Value();
- Update(anIO,true);
+ if ( !Update(anIO,true) )
+ break; // avoid multiple warinings if visu failed
}
}
RepaintCurrentView();
}
- void Update(const Handle(SALOME_InteractiveObject)& theIO,
+ bool Update(const Handle(SALOME_InteractiveObject)& theIO,
bool theDisplay)
{
_PTR(Study) aStudy = GetActiveStudyDocument();
CORBA::Long anId = aStudy->StudyId();
if ( TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId,theIO->getEntry())) {
- // if( aVisualObj )
- // aVisualObj->Update(); -> PAL16631, already done in GetVisualObj()
if ( theDisplay )
UpdateView(SMESH::eDisplay,theIO->getEntry());
+ return true;
}
+ return false;
}