Salome HOME
IPAL22173 TC6.2.0: "Netgen1D-2D" algorithm doesn't work on "flight_solid.brep"
authoreap <eap@opencascade.com>
Tue, 28 Jun 2011 11:55:57 +0000 (11:55 +0000)
committereap <eap@opencascade.com>
Tue, 28 Jun 2011 11:55:57 +0000 (11:55 +0000)
    Treate a case where a valid mesh is computed anyhow while the algo reports errors

src/SMESHGUI/SMESHGUI_ComputeDlg.cxx
src/SMESHGUI/SMESHGUI_ComputeDlg.h
src/SMESHGUI/SMESH_msg_en.ts

index a8e8fd20c5fcf8b4ba9509a7650c4811714fa4bf..4397abe9f64f77847350d4a164b6dc1618241549 100644 (file)
@@ -349,6 +349,8 @@ namespace SMESH
       if ( strlen(comment) == 0 )
         text = QObject::tr("COMPERR_ALGO_FAILED");
       break;
+    case SMESH::COMPERR_WARNING:
+      return comment ? QString(comment) : QObject::tr("COMPERR_UNKNOWN");
     default:
       text = QString("#%1").arg( -errCode );
     }
@@ -535,10 +537,11 @@ QFrame* SMESHGUI_ComputeDlg::createMainFrame (QWidget* theParent, bool ForEval)
   // Computation errors
 
   myCompErrorGroup = new QGroupBox(tr("ERRORS"), aFrame);
-  myTable      = new QTableWidget( 1, NB_COLUMNS, myCompErrorGroup);
-  myShowBtn    = new QPushButton(tr("SHOW_SHAPE"), myCompErrorGroup);
-  myPublishBtn = new QPushButton(tr("PUBLISH_SHAPE"), myCompErrorGroup);
-  myBadMeshBtn = new QPushButton(tr("SHOW_BAD_MESH"), myCompErrorGroup);
+  myWarningLabel = new QLabel(QString("<b>%1</b>").arg(tr("COMPUTE_WARNING")), myCompErrorGroup);
+  myTable        = new QTableWidget( 1, NB_COLUMNS, myCompErrorGroup);
+  myShowBtn      = new QPushButton(tr("SHOW_SHAPE"), myCompErrorGroup);
+  myPublishBtn   = new QPushButton(tr("PUBLISH_SHAPE"), myCompErrorGroup);
+  myBadMeshBtn   = new QPushButton(tr("SHOW_BAD_MESH"), myCompErrorGroup);
 
   //myTable->setReadOnly( true ); // VSR: check
   myTable->setEditTriggers( QAbstractItemView::NoEditTriggers );
@@ -560,11 +563,12 @@ QFrame* SMESHGUI_ComputeDlg::createMainFrame (QWidget* theParent, bool ForEval)
   QGridLayout* grpLayout = new QGridLayout(myCompErrorGroup);
   grpLayout->setSpacing(SPACING);
   grpLayout->setMargin(MARGIN);
-  grpLayout->addWidget( myTable,      0, 0, 4, 1 );
-  grpLayout->addWidget( myShowBtn,    0, 1 );
-  grpLayout->addWidget( myPublishBtn, 1, 1 );
-  grpLayout->addWidget( myBadMeshBtn, 2, 1 );
-  grpLayout->setRowStretch( 3, 1 );
+  grpLayout->addWidget( myWarningLabel, 0, 0 );
+  grpLayout->addWidget( myTable,        1, 0, 4, 1 );
+  grpLayout->addWidget( myShowBtn,      1, 1 );
+  grpLayout->addWidget( myPublishBtn,   2, 1 );
+  grpLayout->addWidget( myBadMeshBtn,   3, 1 );
+  grpLayout->setRowStretch( 4, 1 );
 
   // Hypothesis definition errors
 
@@ -941,26 +945,44 @@ void SMESHGUI_BaseComputeOp::showComputeResult( const bool theMemoryLack,
   }
   else
   {
-    QTableWidget* tbl = aCompDlg->myTable;
+    bool onlyWarnings = !theNoCompError; // == valid mesh computed but there are errors reported
+    for ( int i = 0; i < theCompErrors->length() && onlyWarnings; ++i )
+      onlyWarnings = ( theCompErrors[ i ].code == SMESH::COMPERR_WARNING );
+
+    // full or brief mesh info
     SMESH::long_array_var aRes = myMesh->GetMeshInfo();
-    aCompDlg->myBriefInfo->SetMeshInfo( aRes );
-    aCompDlg->myBriefInfo->show();
-    aCompDlg->myFullInfo->hide();
+    if ( onlyWarnings ) {
+      aCompDlg->myFullInfo->SetMeshInfo( aRes );
+      aCompDlg->myFullInfo->show();
+      aCompDlg->myBriefInfo->hide();
+    } else {
+      aCompDlg->myBriefInfo->SetMeshInfo( aRes );
+      aCompDlg->myBriefInfo->show();
+      aCompDlg->myFullInfo->hide();
+    }
 
+    // pbs of hypo dfinitions
     if ( theNoHypoError ) {
       aCompDlg->myHypErrorGroup->hide();
-    }
-    else {
+    } else {
       aCompDlg->myHypErrorGroup->show();
       aCompDlg->myHypErrorLabel->setText( theHypErrors );
     }
 
-    if ( theNoCompError ) {
+    // table of errors
+    if ( theNoCompError )
+    {
       aCompDlg->myCompErrorGroup->hide();
     }
-    else {
+    else
+    {
       aCompDlg->myCompErrorGroup->show();
 
+      if ( onlyWarnings )
+        aCompDlg->myWarningLabel->show();
+      else
+        aCompDlg->myWarningLabel->hide();
+
       if ( !hasShape ) {
         aCompDlg->myPublishBtn->hide();
         aCompDlg->myShowBtn->hide();
@@ -971,6 +993,7 @@ void SMESHGUI_BaseComputeOp::showComputeResult( const bool theMemoryLack,
       }
 
       // fill table of errors
+      QTableWidget* tbl = aCompDlg->myTable;
       tbl->setRowCount( theCompErrors->length() );
       if ( !hasShape ) tbl->hideColumn( COL_SHAPE );
       else             tbl->showColumn( COL_SHAPE );
index 5a08d5656bfc318fe9c5d236317d71c3cb2b3c73..9d21176b755cd9ad222d250e9987523bad6c96df 100644 (file)
@@ -221,6 +221,7 @@ protected:
   QGroupBox*                   myCompErrorGroup;
   QGroupBox*                   myHypErrorGroup;
   QLabel*                      myHypErrorLabel;
+  QLabel*                      myWarningLabel;
   QTableWidget*                myTable;
   QPushButton*                 myShowBtn;
   QPushButton*                 myPublishBtn;
index f7c54e5d61ac0fecb855a38c18bba536e7685f43..b5c337db28125905b11dc7689d01d762b36439c2 100644 (file)
         <source>COMPERR_STD_EXCEPTION</source>
         <translation>std::exception</translation>
     </message>
+    <message>
+        <source>COMPERR_UNKNOWN</source>
+        <translation>Unknown error</translation>
+    </message>
     <message>
         <source>SMESH_GEOM</source>
         <translation>Geometry</translation>
@@ -3848,6 +3852,10 @@ Please, create VTK viewer and try again</translation>
         <source>MEMORY_LACK</source>
         <translation>Memory allocation problem</translation>
     </message>
+    <message>
+        <source>COMPUTE_WARNING</source>
+        <translation>The mesh seems to be OK but there are some errors reported</translation>
+    </message>
     <message>
         <source>PUBLISH_SHAPE</source>
         <translation>Publish SubShape</translation>