Salome HOME
Merge branch 'master' into Dev_1.1.0
[modules/shaper.git] / src / ModuleBase / ModuleBase_FilterFace.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        ModuleBase_FilterFace.cpp
4 // Created:     10 Dec 2014
5 // Author:      Natalia ERMOLAEVA
6
7
8 #include "ModuleBase_FilterFace.h"
9
10 #include <StdSelect_FaceFilter.hxx>
11 #include <StdSelect_TypeOfFace.hxx>
12
13 #include <Events_Error.h>
14
15 #include <QString>
16 #include <QMap>
17
18 typedef QMap<QString, StdSelect_TypeOfFace> FaceTypes;
19 static FaceTypes MyFaceTypes;
20
21 StdSelect_TypeOfFace ModuleBase_FilterFace::faceType(const std::string& theType)
22 {
23   if (MyFaceTypes.count() == 0) {
24     MyFaceTypes["plane"] = StdSelect_Plane;
25   }
26   QString aType = QString(theType.c_str()).toLower();
27   if (MyFaceTypes.contains(aType))
28     return MyFaceTypes[aType];
29   Events_Error::send("Face type defined in XML is not implemented!");
30   return StdSelect_AnyFace;
31 }
32
33 void ModuleBase_FilterFace::createFilter()
34 {
35   myFilter = new StdSelect_FaceFilter(StdSelect_AnyFace);
36 }
37
38 void ModuleBase_FilterFace::setArguments(const std::list<std::string>& theArguments)
39 {
40   if (theArguments.size()!= 1)
41     return;
42
43   std::string anArgument = theArguments.front();
44   Handle(StdSelect_FaceFilter) aFilter = Handle(StdSelect_FaceFilter)::DownCast(getFilter());
45   if (!aFilter.IsNull())
46     aFilter->SetType(faceType(anArgument));
47 }