Salome HOME
Make filter "On line" applicable to use axis as an argument.
[modules/shaper.git] / src / FiltersPlugin / FiltersPlugin_OnGeometry.cpp
index 44d9ff4017a9dd984409b1a8931a63d7e1dc1e92..ded1efd5f27141e3bdb75e0aad1fc31d8aa0065a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2019  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2020  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -35,28 +35,19 @@ bool FiltersPlugin_OnGeometry::isOk(const GeomShapePtr& theShape, const ResultPt
   if (!aList.get())
     return false;
   for (int i = 0; i < aList->size(); i++) {
-    AttributeSelectionPtr aAttr = aList->value(i);
-    GeomShapePtr aGeom = aAttr->value();
-    if (aGeom->isSameGeometry(theShape))
+    AttributeSelectionPtr aCurAttr = aList->value(i);
+    GeomShapePtr aGeom = aCurAttr->value();
+    if (!aGeom)
+      aGeom = aCurAttr->context()->shape();
+    if (aGeom && aGeom->isSameGeometry(theShape))
       return true;
   }
   return false;
 }
 
-static std::string XMLRepresentation =
-"<filter id = \"OnGeometry\">"
-" <multi_selector id=\"OnGeometry__OnGeometry\""
-"   label=\"Edges/faces:\""
-"   tooltip=\"Select objects to limit selection.\""
-"   type_choice=\"edges faces\">"
-"   <validator id=\"GeomValidators_ShapeType\" parameters=\"edge,face\"/>"
-" </multi_selector>"
-"</filter>";
-
-
 std::string FiltersPlugin_OnGeometry::xmlRepresentation() const
 {
-  return XMLRepresentation;
+  return xmlFromFile("filter-OnGeometry.xml");
 }
 
 void FiltersPlugin_OnGeometry::initAttributes(ModelAPI_FiltersArgs& theArguments)