Salome HOME
PAL13330( When mesh generation does not success, trace where )
[modules/smesh.git] / src / SMESHFiltersSelection / SMESH_NumberFilter.cxx
index 692251556445c8498576573c090465265eb499b8..61162a581681c69ff04e618e2371d289cfe132d0 100644 (file)
@@ -15,7 +15,7 @@
 // License along with this library; if not, write to the Free Software 
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-// See http://www.salome-platform.org/
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //  File   : SMESH_NumberFilter.cxx
 //  Module : SMESH
@@ -102,6 +102,8 @@ bool SMESH_NumberFilter::isOk (const SUIT_DataOwner* theDataOwner) const
 
   // Get shape from geom object and verify its parameters
   GEOM_Client aGeomClient;
+  if ( CORBA::is_nil( GeometryGUI::GetGeomGen() ) && !GeometryGUI::InitGeomGen() )
+    return false;
   TopoDS_Shape aShape = aGeomClient.GetShape(GeometryGUI::GetGeomGen(), aGeomObj);
   if (aShape.IsNull() ||
       !myShapeTypes.Contains(aShape.ShapeType()))
@@ -174,24 +176,26 @@ GEOM::GEOM_Object_ptr SMESH_NumberFilter::getGeom
     return anObj._retn();
 
   // Get geom object corresponding to the mesh
-  _PTR(ChildIterator) anIter = study->NewChildIterator(aSO);
-  for (; anIter->More(); anIter->Next()) {
-    _PTR(SObject) aSO = anIter->Value();
-    if (!aSO)
-      continue;
-    _PTR(SObject) aRefSO;
-    _PTR(SObject) anObj;
-    if (aSO->ReferencedObject(aRefSO))
-      anObj = aRefSO;
-
-    if (!anObj)
-      anObj = aSO;
-
-    anObject = _CAST(SObject,anObj)->GetObject();
-    GEOM::GEOM_Object_var aMeshShape = GEOM::GEOM_Object::_narrow(anObject);
-
-    if (!aMeshShape->_is_nil())
-      return aMeshShape._retn();
+  if ( myKind == "SMESH" ) {
+    _PTR(ChildIterator) anIter = study->NewChildIterator(aSO);
+    for (; anIter->More(); anIter->Next()) {
+      _PTR(SObject) aSO = anIter->Value();
+      if (!aSO)
+        continue;
+      _PTR(SObject) aRefSO;
+      _PTR(SObject) anObj;
+      if (aSO->ReferencedObject(aRefSO))
+        anObj = aRefSO;
+
+      if (!anObj)
+        anObj = aSO;
+
+      anObject = _CAST(SObject,anObj)->GetObject();
+      GEOM::GEOM_Object_var aMeshShape = GEOM::GEOM_Object::_narrow(anObject);
+
+      if (!aMeshShape->_is_nil())
+        return aMeshShape._retn();
+    }
   }
 
   return GEOM::GEOM_Object::_nil();