1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
3 // File: ModuleBase_FilterMulti.cpp
4 // Created: 12 Jan 2015
5 // Author: Natalia ERMOLAEVA
8 #include "ModuleBase_FilterMulti.h"
10 #include "ModuleBase_FilterLinearEdge.h"
11 #include "ModuleBase_FilterShapeType.h"
13 #include <SelectMgr_OrFilter.hxx>
15 #include <Events_Error.h>
20 ModuleBase_Filter* ModuleBase_FilterMulti::findFilter(const std::string& theType)
22 ModuleBase_Filter* aFilter = 0;
24 if (theType == "line") {
25 aFilter = new ModuleBase_FilterLinearEdge();
26 std::list<std::string> anArguments;
27 anArguments.push_back(theType);
28 aFilter->setArguments(anArguments);
30 if (theType == "vertex") {
31 aFilter = new ModuleBase_FilterShapeType();
32 std::list<std::string> anArguments;
33 anArguments.push_back(theType);
34 aFilter->setArguments(anArguments);
40 void ModuleBase_FilterMulti::createFilter()
42 myFilter = new SelectMgr_OrFilter();
44 // set filter arguments
45 Handle(SelectMgr_OrFilter) anOrFilter = Handle(SelectMgr_OrFilter)::DownCast(myFilter);
46 if (anOrFilter.IsNull())
49 std::list<std::string>::const_iterator anIt = myArguments.begin(),
50 aLast = myArguments.end();
51 for (; anIt != aLast; ++anIt) {
52 std::string aType = *anIt;
53 ModuleBase_Filter* aFilter = findFilter(aType);
55 anOrFilter->Add(aFilter->getFilter());
60 void ModuleBase_FilterMulti::setArguments(const std::list<std::string>& theArguments)
63 myArguments = theArguments;