#include "SMESHGUI_HypothesesUtils.h"
#include "SMDS_SetIterator.hxx"
+#include <SMDS_Mesh.hxx>
#include "GEOMBase.h"
#include "GEOM_Actor.h"
#include <BRepBndLib.hxx>
#include <BRepMesh_IncrementalMesh.hxx>
+#include <Standard_ErrorHandler.hxx>
+
// QT Includes
#include <qframe.h>
#include <qlayout.h>
CASE2TEXT( COMPERR_BAD_INPUT_MESH);
CASE2TEXT( COMPERR_STD_EXCEPTION );
CASE2TEXT( COMPERR_OCC_EXCEPTION );
- CASE2TEXT( COMPERR_SLM_EXCEPTION );
+ case SMESH::COMPERR_SLM_EXCEPTION: break; // avoid double "Salome exception"
CASE2TEXT( COMPERR_EXCEPTION );
CASE2TEXT( COMPERR_MEMORY_PB );
CASE2TEXT( COMPERR_BAD_SHAPE );
}
// -----------------------------------------------------------------------
/*!
- * \brief Return text describing a subshape
+ * \brief Return a list of selected rows
*/
bool getSelectedRows(QTable* table, list< int > & rows)
{
for ( int row = selected.topRow(); row <= selected.bottomRow(); ++row )
rows.push_back( row );
}
+ if (rows.empty() && table->currentRow() > -1 )
+ rows.push_back( table->currentRow() );
+
return !rows.empty();
}
connect(myDlg->myShowBtn, SIGNAL (clicked()), SLOT(onPreviewShape()));
connect(myDlg->myPublishBtn, SIGNAL (clicked()), SLOT(onPublishShape()));
connect(table(),SIGNAL(selectionChanged()), SLOT(currentCellChanged()));
+ connect(table(),SIGNAL(currentChanged(int,int)), SLOT(currentCellChanged()));
}
//=======================================================================
// COMPUTE MESH
bool computeFailed = true, memoryLack = false;
- int nbNodes = 0, nbEdges = 0, nbFaces = 0, nbVolums = 0;
LightApp_SelectionMgr *Sel = selectionMgr();
SALOME_ListIO selected; Sel->selectedObjects( selected );
MemoryReserve aMemoryReserve;
_PTR(SObject) aMeshSObj = SMESH::FindSObject(aMesh);
myMainShape = aMesh->GetShapeToMesh();
- if ( !myMainShape->_is_nil() && aMeshSObj )
+ if ( ((!myMainShape->_is_nil() && aMesh->HasShapeToMesh()) ||
+ (myMainShape->_is_nil() && !aMesh->HasShapeToMesh()))
+ && aMeshSObj )
{
myDlg->myMeshName->setText( aMeshSObj->GetName() );
SMESH::SMESH_Gen_var gen = getSMESHGUI()->GetSMESHGen();
}
SUIT_OverrideCursor aWaitCursor;
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (gen->Compute(aMesh, myMainShape))
computeFailed = false;
}
//SalomeApp_Tools::QtCatchCorbaException(S_ex);
}
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
anErrors = gen->GetComputeErrors( aMesh, myMainShape );
// if ( anErrors->length() == 0 ) {
// SUIT_MessageBox::warn1(desktop(),
// return;
// }
// check if there are memory problems
- for ( int i = 0; i < anErrors->length() && !memoryLack; ++i )
+ for ( int i = 0; (i < anErrors->length()) && !memoryLack; ++i )
memoryLack = ( anErrors[ i ].code == SMESH::COMPERR_MEMORY_PB );
}
catch(const SALOME::SALOME_Exception & S_ex){
update( UF_ObjBrowser | UF_Model );
// SHOW MESH
- // NPAL16631: if ( getSMESHGUI()->automaticUpdate() ) {
- if ( !memoryLack && getSMESHGUI()->automaticUpdate() ) // NPAL16631
+ // NPAL16631: if ( getSMESHGUI()->automaticUpdate() )
+ if ( !memoryLack && getSMESHGUI()->automaticUpdate() )
{
try {
- SVTK_ViewWindow* aVTKView = SMESH::GetViewWindow(getSMESHGUI(), true);
- if (aVTKView) {
- int anId = study()->id();
- TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId, IObject->getEntry());
- if (aVisualObj) {
- aVisualObj->Update();
- SMESH_Actor* anActor = SMESH::FindActorByEntry(IObject->getEntry());
- if (!anActor) {
- anActor = SMESH::CreateActor(studyDS(), IObject->getEntry());
- if (anActor) {
- SMESH::DisplayActor(aVTKView, anActor); //apo
- SMESH::FitAll();
- }
- }
- SMESH::RepaintCurrentView();
- Sel->setSelectedObjects( selected );
- }
- }
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ SMESH::Update(IObject, true);
}
catch (...) {
- memoryLack = true;
+#ifdef _DEBUG_
+ cout << "Exception thrown during mesh visualization" << endl;
+#endif
+ if ( SMDS_Mesh::CheckMemory(true) ) { // has memory to show warning?
+ SMESH::OnVisuException();
+ }
+ else {
+ memoryLack = true;
+ }
}
}
+ Sel->setSelectedObjects( selected );
}
}
}
}
else if ( noError )
{
+ SUIT_OverrideCursor aWaitCursor;
myDlg->myFullInfo->SetInfoByMesh( aMesh );
myDlg->myFullInfo->show();
myDlg->myBriefInfo->hide();
myDlg->myBriefInfo->show();
myDlg->myFullInfo->hide();
myDlg->myErrorGroup->show();
-
+
+ bool hasShape = aMesh->HasShapeToMesh();
+ if ( !hasShape )
+ {
+ myDlg->myPublishBtn->hide();
+ myDlg->myShowBtn->hide();
+ }
+ else
+ {
+ myDlg->myPublishBtn->show();
+ myDlg->myShowBtn->show();
+ }
// fill table of errors
tbl->setNumRows( anErrors->length() );
- bool hasShape = aMesh->HasShapeToMesh();
if ( !hasShape ) tbl->hideColumn( COL_SHAPE );
else tbl->showColumn( COL_SHAPE );
tbl->setColumnWidth( COL_ERROR, 200 );