X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_Validators.cpp;h=29bdf3c27310df0ba7abadc7ca882ea353ef4f85;hb=7e0da9d6edbfd2e934df3ff119b45cec3cff6936;hp=ce58a0b3b54f6350815dfd7f825fc60ab935096a;hpb=4783f146b71a48c651523fcf0e12367bcf3d1fa8;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_Validators.cpp b/src/SketchPlugin/SketchPlugin_Validators.cpp index ce58a0b3b..29bdf3c27 100644 --- a/src/SketchPlugin/SketchPlugin_Validators.cpp +++ b/src/SketchPlugin/SketchPlugin_Validators.cpp @@ -1,3 +1,5 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> + // File: SketchPlugin_Validators.cpp // Created: 01 Aug 2014 // Author: Vitaly SMETANNIKOV @@ -20,10 +22,18 @@ bool SketchPlugin_DistanceAttrValidator::isValid(const FeaturePtr& theFeature, SessionPtr aMgr = ModelAPI_Session::get(); ModelAPI_ValidatorsFactory* aFactory = aMgr->validators(); + const ModelAPI_ResultValidator* anArcValidator = + dynamic_cast(aFactory->validator("SketchPlugin_ResultArc")); + bool anArcValid = anArcValidator->isValid(theObject); + if (anArcValid) + return false; + + // If the object is not a line then it is accepted const ModelAPI_ResultValidator* aLineValidator = dynamic_cast(aFactory->validator("SketchPlugin_ResultLine")); - if (!aLineValidator->isValid(theObject)) + bool aLineValid = aLineValidator->isValid(theObject); + if (!aLineValid) return true; // If it is a line then we have to check that first attribute id not a line @@ -36,14 +46,15 @@ bool SketchPlugin_DistanceAttrValidator::isValid(const FeaturePtr& theFeature, bool SketchPlugin_DistanceAttrValidator::isValid( const AttributePtr& theAttribute, const std::list& theArguments ) const { - std::shared_ptr anAttr = - std::dynamic_pointer_cast(theAttribute); - if (anAttr) { - const ObjectPtr& anObj = theAttribute->owner(); - const FeaturePtr aFeature = std::dynamic_pointer_cast(anObj); - return isValid(aFeature, theArguments, anAttr->object()); - } - return true; // it may be not reference attribute, in this case, it is OK + // any point attribute is acceptable for the distance operation + return true; +} + +bool SketchPlugin_DistanceAttrValidator::isValid(const FeaturePtr& theFeature, + const std::list& theArguments, + const AttributePtr& theAttribute) const +{ + return isValid(theAttribute, theArguments); } bool SketchPlugin_DifferentObjectsValidator::isValid(const FeaturePtr& theFeature,