From df83ddafb2a272a9613191bee8cb0abef7a727b9 Mon Sep 17 00:00:00 2001 From: azv Date: Mon, 9 Sep 2019 16:38:40 +0300 Subject: [PATCH] Correct validators for tangent/transversal arcs. --- src/SketchPlugin/SketchPlugin_Validators.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/SketchPlugin/SketchPlugin_Validators.cpp b/src/SketchPlugin/SketchPlugin_Validators.cpp index fb9be5197..4ec13cbc7 100644 --- a/src/SketchPlugin/SketchPlugin_Validators.cpp +++ b/src/SketchPlugin/SketchPlugin_Validators.cpp @@ -800,6 +800,11 @@ bool SketchPlugin_ArcTangentPointValidator::isValid(const AttributePtr& theAttri theError.arg(theAttribute->attributeType()); return false; } + FeaturePtr anOwner = std::dynamic_pointer_cast(theAttribute->owner()); + AttributeStringPtr anArcTypeAttr = anOwner->string(SketchPlugin_MacroArc::ARC_TYPE()); + if (anArcTypeAttr && anArcTypeAttr->value() != SketchPlugin_MacroArc::ARC_TYPE_BY_TANGENT_EDGE()) + return true; // not applicable for non-tangent arcs + AttributeRefAttrPtr aRefAttr = std::dynamic_pointer_cast(theAttribute); AttributePtr anAttr = aRefAttr->attr(); if (!anAttr) { @@ -847,6 +852,11 @@ bool SketchPlugin_ArcTransversalPointValidator::isValid( theError.arg(theAttribute->attributeType()); return false; } + FeaturePtr anOwner = std::dynamic_pointer_cast(theAttribute->owner()); + AttributeStringPtr anArcTypeAttr = anOwner->string(SketchPlugin_MacroArc::ARC_TYPE()); + if (anArcTypeAttr && anArcTypeAttr->value() != SketchPlugin_MacroArc::ARC_TYPE_BY_TRANSVERSAL_LINE()) + return true; // not applicable for non-transversal arcs + AttributeRefAttrPtr aRefAttr = std::dynamic_pointer_cast(theAttribute); AttributePtr anAttr = aRefAttr->attr(); if (!anAttr) { -- 2.39.2