-// 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
return theType == GeomAPI_Shape::EDGE || theType == GeomAPI_Shape::FACE;
}
-bool FiltersPlugin_OnGeometry::isOk(const GeomShapePtr& theShape,
- const ModelAPI_FiltersArgs& theArgs) const
+bool FiltersPlugin_OnGeometry::isOk(const GeomShapePtr& theShape, const ResultPtr&,
+ const ModelAPI_FiltersArgs& theArgs) const
{
AttributePtr aAttr = theArgs.argument("OnGeometry");
AttributeSelectionListPtr aList =
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)