X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_Tools.cpp;h=2b5315a8fbcd79168330f5626f9eb962a44b3028;hb=75a52b87325dd36217603277b84bab5fa345b642;hp=678e14074db79147c2e72f3c8853949d0e0dc57a;hpb=e8163f13bd18658d050ac98ad111281d18cdae0d;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_Tools.cpp b/src/PartSet/PartSet_Tools.cpp index 678e14074..2b5315a8f 100755 --- a/src/PartSet/PartSet_Tools.cpp +++ b/src/PartSet/PartSet_Tools.cpp @@ -1,8 +1,22 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: PartSet_Tools.cpp -// Created: 28 Apr 2014 -// Author: Natalia ERMOLAEVA +// Copyright (C) 2014-2017 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 +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// 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 +// +// See http://www.salome-platform.org/ or +// email : webmaster.salome@opencascade.com +// #include #include @@ -749,7 +763,7 @@ FeaturePtr PartSet_Tools::findFirstCoincidence(const FeaturePtr& theFeature, void PartSet_Tools::findCoincidences(FeaturePtr theStartCoin, QList& theList, QList& theCoincidencies, - std::string theAttr) + std::string theAttr, QList& theIsAttributes) { std::shared_ptr aOrig = getCoincedencePoint(theStartCoin); if (aOrig.get() == NULL) @@ -764,6 +778,7 @@ void PartSet_Tools::findCoincidences(FeaturePtr theStartCoin, QList& if (!theList.contains(aFeature)) { theList.append(aFeature); theCoincidencies.append(theStartCoin); + theIsAttributes.append(true); // point attribute on a feature const std::set& aRefsList = aFeature->data()->refsToMe(); std::set::const_iterator aIt; for (aIt = aRefsList.cbegin(); aIt != aRefsList.cend(); ++aIt) { @@ -774,9 +789,9 @@ void PartSet_Tools::findCoincidences(FeaturePtr theStartCoin, QList& std::shared_ptr aPnt = getCoincedencePoint(aConstrFeature); if (aPnt.get() && aOrig->isEqual(aPnt)) { findCoincidences(aConstrFeature, theList, theCoincidencies, - SketchPlugin_ConstraintCoincidence::ENTITY_A()); + SketchPlugin_ConstraintCoincidence::ENTITY_A(), theIsAttributes); findCoincidences(aConstrFeature, theList, theCoincidencies, - SketchPlugin_ConstraintCoincidence::ENTITY_B()); + SketchPlugin_ConstraintCoincidence::ENTITY_B(), theIsAttributes); } } } @@ -790,6 +805,7 @@ void PartSet_Tools::findCoincidences(FeaturePtr theStartCoin, QList& if (!theList.contains(aFeature)) theList.append(aFeature); theCoincidencies.append(theStartCoin); + theIsAttributes.append(false); // point attribute on a feature const std::set& aRefsList = aResult->data()->refsToMe(); std::set::const_iterator aIt; @@ -801,9 +817,9 @@ void PartSet_Tools::findCoincidences(FeaturePtr theStartCoin, QList& std::shared_ptr aPnt = getCoincedencePoint(aConstrFeature); if (aPnt.get() && aOrig->isEqual(aPnt)) { findCoincidences(aConstrFeature, theList, theCoincidencies, - SketchPlugin_ConstraintCoincidence::ENTITY_A()); + SketchPlugin_ConstraintCoincidence::ENTITY_A(), theIsAttributes); findCoincidences(aConstrFeature, theList, theCoincidencies, - SketchPlugin_ConstraintCoincidence::ENTITY_B()); + SketchPlugin_ConstraintCoincidence::ENTITY_B(), theIsAttributes); } } } @@ -889,29 +905,3 @@ bool PartSet_Tools::isAuxiliarySketchEntity(const ObjectPtr& theObject) return isAuxiliaryFeature; } - - -ResultPtr PartSet_Tools::createFixedByExternalCenter( - const ObjectPtr& theObject, - const std::shared_ptr& theEdge, - ModelAPI_AttributeSelection::CenterType theType, - const CompositeFeaturePtr& theSketch, - bool theTemporary) -{ - FeaturePtr aMyFeature = theSketch->addFeature(SketchPlugin_Point::ID()); - - if (aMyFeature) { - DataPtr aData = aMyFeature->data(); - AttributeSelectionPtr anAttr = - std::dynamic_pointer_cast - (aData->attribute(SketchPlugin_SketchEntity::EXTERNAL_ID())); - - ResultPtr aRes = std::dynamic_pointer_cast(theObject); - if (anAttr.get() && aRes.get()) { - anAttr->setValueCenter(aRes, theEdge, theType, theTemporary); - aMyFeature->execute(); - return aMyFeature->lastResult(); - } - } - return ResultPtr(); -}