Salome HOME
Merge branch 'master' of salome:modules/shaper
[modules/shaper.git] / src / GeomValidators / GeomValidators_ZeroOffset.cpp
index 1ba9664d992f2a58501d8cf8bb0d41056daa0e62..20d324edd59db1d70acaf4c152607a02cf6b75fd 100644 (file)
@@ -6,6 +6,8 @@
 
 #include <GeomValidators_ZeroOffset.h>
 
+#include <Events_InfoMessage.h>
+
 #include <ModelAPI_AttributeDouble.h>
 #include <ModelAPI_AttributeSelection.h>
 #include <ModelAPI_AttributeSelectionList.h>
@@ -21,7 +23,7 @@
 //=================================================================================================
 bool GeomValidators_ZeroOffset::isValid(const std::shared_ptr<ModelAPI_Feature>& theFeature,
                                         const std::list<std::string>& theArguments,
-                                        std::string& theError) const
+                                        Events_InfoMessage& theError) const
 {
   if(theArguments.size() != 9) {
     theError = "Wrong number of validator arguments in xml(expected 9).";
@@ -140,9 +142,17 @@ bool GeomValidators_ZeroOffset::isValid(const std::shared_ptr<ModelAPI_Feature>&
     isPlanesCoincident = true;
   } else if(aFromShape.get() && aToShape.get()) {
     std::shared_ptr<GeomAPI_Face> aFromFace(new GeomAPI_Face(aFromShape));
+    if (aFromFace->isNull()) {
+      theError = "From face selection is invalid.";
+      return false;
+    }
     std::shared_ptr<GeomAPI_Pln>  aFromPln = aFromFace->getPlane();
 
     std::shared_ptr<GeomAPI_Face> aToFace(new GeomAPI_Face(aToShape));
+    if (aToFace->isNull()) {
+      theError = "To face selection is invalid.";
+      return false;
+    }
     std::shared_ptr<GeomAPI_Pln>  aToPln = aToFace->getPlane();
 
     if(aFromPln.get()) {
@@ -152,8 +162,16 @@ bool GeomValidators_ZeroOffset::isValid(const std::shared_ptr<ModelAPI_Feature>&
     std::shared_ptr<GeomAPI_Face> aFace;
     if(aFromShape.get()) {
       aFace.reset(new GeomAPI_Face(aFromShape));
+      if (aFace->isNull()) {
+        theError = "From face selection is invalid.";
+        return false;
+      }
     } else {
       aFace.reset(new GeomAPI_Face(aToShape));
+      if (aFace->isNull()) {
+        theError = "To face selection is invalid.";
+        return false;
+      }
     }
     std::shared_ptr<GeomAPI_Pln> aPln = aFace->getPlane();
     if(aPln.get()) {