X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_ISelection.cpp;h=8d13a0cdd0106325fa6d5c5794e61c3b8de0615f;hb=9afe243148ea67f2eccbd0afa419541424de451e;hp=b54f6e4eee19902ad0652be1c036c71bb2bbe6ac;hpb=87b6a30a3afb8fb32e7e43ade8d9c947d9eb1684;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_ISelection.cpp b/src/ModuleBase/ModuleBase_ISelection.cpp index b54f6e4ee..8d13a0cdd 100644 --- a/src/ModuleBase/ModuleBase_ISelection.cpp +++ b/src/ModuleBase/ModuleBase_ISelection.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2022 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 @@ -12,15 +12,15 @@ // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "ModuleBase_ISelection.h" #include "ModuleBase_ViewerPrs.h" +#include "ModelAPI_Feature.h" #include #include @@ -34,24 +34,19 @@ void ModuleBase_ISelection::appendSelected(const QList { // collect the objects from the viewer QObjectPtrList anExistedObjects; - QList::const_iterator aPrsIt = theValuesTo.begin(), - aPrsLast = theValuesTo.end(); - for (; aPrsIt != aPrsLast; aPrsIt++) { - if ((*aPrsIt)->owner() && (*aPrsIt)->object()) - anExistedObjects.push_back((*aPrsIt)->object()); + foreach(ModuleBase_ViewerPrsPtr aPrs, theValuesTo) { + if (aPrs->owner() && aPrs->object()) + anExistedObjects.append(aPrs->object()); } - - QList::const_iterator anIt = theValues.begin(), - aLast = theValues.end(); - for (; anIt != aLast; anIt++) { - ObjectPtr anObject = (*anIt)->object(); + ObjectPtr anObject; + foreach(ModuleBase_ViewerPrsPtr aPrs, theValues) { + anObject = aPrs->object(); if (anObject.get() != NULL && !anExistedObjects.contains(anObject)) { theValuesTo.append(std::shared_ptr( new ModuleBase_ViewerPrs(anObject, GeomShapePtr(), NULL))); } } - } //******************************************************************** @@ -59,8 +54,10 @@ ResultPtr ModuleBase_ISelection::getResult(const ModuleBase_ViewerPrsPtr& thePrs { ResultPtr aResult; - if (thePrs->object().get()) - aResult = std::dynamic_pointer_cast(thePrs->object()); + if (thePrs->object().get()) { + ObjectPtr aObject = thePrs->object(); + aResult = std::dynamic_pointer_cast(aObject); + } else if (!thePrs->owner().IsNull()) { ObjectPtr anObject = getSelectableObject(thePrs->owner()); aResult = std::dynamic_pointer_cast(anObject); @@ -118,11 +115,11 @@ void ModuleBase_ISelection::filterSelectionOnEqualPoints std::shared_ptr aGeomPrsVertex = getPresentationVertex(aPrs); if (aGeomPrsVertex.get()) { const TopoDS_Vertex& aPrsVertex = aGeomPrsVertex->impl(); - std::set >::const_iterator anIt = aVerticesMap.begin(), - aLast = aVerticesMap.end(); + std::set >::const_iterator aVIt = aVerticesMap.begin(), + aVLast = aVerticesMap.end(); bool aFound = false; - for (; anIt != aLast && !aFound; anIt++) { - std::shared_ptr aGeomVertex = *anIt; + for (; aVIt != aVLast && !aFound; aVIt++) { + std::shared_ptr aGeomVertex = *aVIt; const TopoDS_Vertex& aVertex = aGeomVertex->impl(); gp_Pnt aPoint1 = BRep_Tool::Pnt(aVertex); gp_Pnt aPoint2 = BRep_Tool::Pnt(aPrsVertex);