X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_Validators.cpp;h=d774e390eff01044bc727d6e94eec256aa30c1dc;hb=ada5c6185cba8cc4352f0207f7540f12e6fda91f;hp=a432becdaa31f84efa7cf8f0a641362b45d96310;hpb=42985955d89fa845790a7e38609f5b6838285147;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_Validators.cpp b/src/SketchPlugin/SketchPlugin_Validators.cpp index a432becda..d774e390e 100755 --- a/src/SketchPlugin/SketchPlugin_Validators.cpp +++ b/src/SketchPlugin/SketchPlugin_Validators.cpp @@ -414,7 +414,7 @@ bool SketchPlugin_FilletVertexValidator::isValid(const AttributePtr& theAttribut FeaturePtr aFeature = std::dynamic_pointer_cast(theAttribute->owner()); AttributePtr aBaseLinesAttribute = aFeature->attribute(SketchPlugin_Constraint::ENTITY_C()); AttributeRefListPtr aRefListOfBaseLines = std::dynamic_pointer_cast(aBaseLinesAttribute); - if(aRefListOfBaseLines->list().size() == 2) { + if(!aRefListOfBaseLines->list().empty()) { return true; } @@ -451,34 +451,39 @@ bool SketchPlugin_FilletVertexValidator::isValid(const AttributePtr& theAttribut return false; } - std::set aCoinsideLines; + std::set aCoinsides; SketchPlugin_Tools::findCoincidences(aCoincident, SketchPlugin_ConstraintCoincidence::ENTITY_A(), - aCoinsideLines); + aCoinsides); SketchPlugin_Tools::findCoincidences(aCoincident, SketchPlugin_ConstraintCoincidence::ENTITY_B(), - aCoinsideLines); - if(aCoinsideLines.size() < 2) { - return false; + aCoinsides); + // Remove points + std::set aNewLines; + for(std::set::iterator anIt = aCoinsides.begin(); anIt != aCoinsides.end(); ++anIt) { + if((*anIt)->getKind() != SketchPlugin_Point::ID()) { + aNewLines.insert(*anIt); + } } + aCoinsides = aNewLines; // Remove auxilary lines - if(aCoinsideLines.size() > 2) { - std::set aNewLines; - for(std::set::iterator anIt = aCoinsideLines.begin(); anIt != aCoinsideLines.end(); ++anIt) { + if(aCoinsides.size() > 2) { + aNewLines.clear(); + for(std::set::iterator anIt = aCoinsides.begin(); anIt != aCoinsides.end(); ++anIt) { if(!(*anIt)->boolean(SketchPlugin_SketchEntity::AUXILIARY_ID())->value()) { aNewLines.insert(*anIt); } } - aCoinsideLines = aNewLines; + aCoinsides = aNewLines; } - if(aCoinsideLines.size() != 2) { + if(aCoinsides.size() != 2) { return false; } // Check that lines not collinear - std::set::iterator anIt = aCoinsideLines.begin(); + std::set::iterator anIt = aCoinsides.begin(); FeaturePtr aFirstFeature = *anIt++; FeaturePtr aSecondFeature = *anIt; if(aFirstFeature->getKind() == SketchPlugin_Line::ID() && aSecondFeature->getKind() == SketchPlugin_Line::ID()) {