]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
0016585: EDF PAL 518: Clarify Solid construction error message.
authordmv <dmv@opencascade.com>
Mon, 28 Jul 2008 08:02:46 +0000 (08:02 +0000)
committerdmv <dmv@opencascade.com>
Mon, 28 Jul 2008 08:02:46 +0000 (08:02 +0000)
src/BuildGUI/BuildGUI_SolidDlg.cxx
src/BuildGUI/BuildGUI_SolidDlg.h

index b560080f57f948d0b3ea22670022d1fd65f50b7d..aca4110b1468d38e514dc5a565e360698c67f4bc 100644 (file)
@@ -32,6 +32,7 @@
 #include <GEOMImpl_Types.hxx>
 
 #include <SUIT_ResourceMgr.h>
+#include <SUIT_MessageBox.h>
 #include <SUIT_Session.h>
 #include <SalomeApp_Application.h>
 #include <LightApp_SelectionMgr.h>
@@ -134,6 +135,17 @@ void BuildGUI_SolidDlg::ClickOnOk()
 //=================================================================================
 bool BuildGUI_SolidDlg::ClickOnApply()
 {
+  for ( int i = 0, n = myShells.length(); i< n; i++ ) {
+    if ( !isClosed(i)) {
+      QString aName = GEOMBase::GetName( myShells[i] );
+      SUIT_MessageBox::warning( (QWidget*)SUIT_Session::session()->activeApplication()->desktop(),
+                                 QObject::tr("WRN_WARNING"),
+                                 QObject::tr("WRN_SHAPE_UNCLOSED").arg(aName) ,
+                                 QObject::tr("BUT_OK") );
+       return false;
+    }
+  }
+
   if ( !onAccept() )
     return false;
 
@@ -235,6 +247,42 @@ bool BuildGUI_SolidDlg::isValid( QString& )
   return myOkShells;
 }
 
+//=================================================================================
+// function : isClosed
+// purpose  : Check the object 'i' in myShells list is closed or unclosed
+//=================================================================================
+bool BuildGUI_SolidDlg::isClosed(int i)
+{
+  GEOM::GEOM_Object_var aShape = myShells[i];
+  GEOM::GEOM_IKindOfShape::shape_kind aKind;
+  GEOM::ListOfLong_var anInts;
+  GEOM::ListOfDouble_var aDbls;
+
+  if (aShape->_is_nil()) {
+    MESSAGE ("Shape is NULL!!!");
+    return false;
+  }
+
+  GEOM::GEOM_IMeasureOperations_ptr anOp = myGeomGUI->GetGeomGen()->GetIMeasureOperations( getStudyId() );
+
+  //  GEOM::GEOM_IMeasureOperations_var anOp = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() );
+
+  // Detect kind of shape and parameters
+  aKind = anOp->KindOfShape(aShape, anInts, aDbls);
+
+  if ( !anOp->IsDone() ) {
+    MESSAGE ("KindOfShape Operation is NOT DONE!!!");
+    return false;
+  }
+  
+  if ( anInts[0] == 1 )
+    return true;
+  else if ( anInts[0] == 2 )
+    return false;
+  return false;
+}
+
 //=================================================================================
 // function : execute
 // purpose  :
index 5ca0f7bc7d7c68729a5a0ea7a27ee1ef3199157f..d666fc0323a8338db3e16855b7029c622b87a0d6 100644 (file)
@@ -50,6 +50,7 @@ protected:
 
 private:
   void                               Init();
+  bool                               isClosed(int i);
   void                               enterEvent( QEvent* );
 
 private: