X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_FilterLinearEdge.cpp;h=a5634cba4a8f92609d63426cec0523045ca18486;hb=a2982d2108f929cf9e7f996cfd590c4ce59dc21c;hp=76712c0a7607996bdc75aef0991f166b21be11e1;hpb=24d4e1ff00e9d7fa972e06ed325122550a12d450;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_FilterLinearEdge.cpp b/src/ModuleBase/ModuleBase_FilterLinearEdge.cpp index 76712c0a7..a5634cba4 100644 --- a/src/ModuleBase/ModuleBase_FilterLinearEdge.cpp +++ b/src/ModuleBase/ModuleBase_FilterLinearEdge.cpp @@ -1,50 +1,48 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + // File: ModuleBase_FilterLinearEdge.cpp // Created: 10 Dec 2014 // Author: Natalia ERMOLAEVA #include "ModuleBase_FilterLinearEdge.h" -#include "ModuleBase_IWorkshop.h" - -#include -#include -#include -#include -#include +#include +#include -#include +#include -#include -#include -#include -#include +#include +#include +typedef QMap EdgeTypes; +static EdgeTypes MyEdgeTypes; -IMPLEMENT_STANDARD_HANDLE(ModuleBase_FilterLinearEdge, SelectMgr_Filter); -IMPLEMENT_STANDARD_RTTIEXT(ModuleBase_FilterLinearEdge, SelectMgr_Filter); +StdSelect_TypeOfEdge ModuleBase_FilterLinearEdge::edgeType(const std::string& theType) +{ + if (MyEdgeTypes.count() == 0) { + MyEdgeTypes["line"] = StdSelect_Line; + MyEdgeTypes["circle"] = StdSelect_Circle; + } + QString aType = QString(theType.c_str()).toLower(); + if (MyEdgeTypes.contains(aType)) + return MyEdgeTypes[aType]; + Events_Error::send("Edge type defined in XML is not implemented!"); + return StdSelect_AnyEdge; +} +void ModuleBase_FilterLinearEdge::createFilter() +{ + myFilter = new StdSelect_EdgeFilter(StdSelect_AnyEdge); +} -Standard_Boolean ModuleBase_FilterLinearEdge::IsOk(const Handle(SelectMgr_EntityOwner)& theOwner) const +void ModuleBase_FilterLinearEdge::setArguments(const std::list& theArguments) { - Standard_Boolean isOk = ModuleBase_Filter::IsOk(theOwner); - if (isOk && theOwner->HasSelectable()) { - Handle(AIS_InteractiveObject) aAisObj = - Handle(AIS_InteractiveObject)::DownCast(theOwner->Selectable()); - if (!aAisObj.IsNull()) { - std::shared_ptr aAISObj = AISObjectPtr(new GeomAPI_AISObject()); - aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aAisObj)); - //ObjectPtr aObj = myWorkshop->findPresentedObject(aAISObj); - - - /*foreach (QString aType, myTypes) { - if (aType.toLower() == "construction") { - ResultConstructionPtr aConstr = - std::dynamic_pointer_cast(aObj); - return (aConstr != NULL); - } // ToDo: Process other types of objects - }*/ - } - } - return Standard_False; + if (theArguments.size()!= 1) + return; + + std::string anArgument = theArguments.front(); + Handle(StdSelect_EdgeFilter) aFilter = Handle(StdSelect_EdgeFilter)::DownCast(getFilter()); + if (!aFilter.IsNull()) + aFilter->SetType(edgeType(anArgument)); }