From: vsv Date: Mon, 17 Sep 2018 11:53:52 +0000 (+0300) Subject: Issue #2639: Avoid using pre-selection of feature in Sketcher X-Git-Tag: V9_2_0a1~29 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=4f480152c47932671dec2ad9313c0ff9dc5d2c90;p=modules%2Fshaper.git Issue #2639: Avoid using pre-selection of feature in Sketcher --- diff --git a/src/ModuleBase/ModuleBase_WidgetValidated.cpp b/src/ModuleBase/ModuleBase_WidgetValidated.cpp index f55678ade..b59050037 100644 --- a/src/ModuleBase/ModuleBase_WidgetValidated.cpp +++ b/src/ModuleBase/ModuleBase_WidgetValidated.cpp @@ -136,6 +136,8 @@ bool ModuleBase_WidgetValidated::isValidInFilters(const ModuleBase_ViewerPrsPtr& } aSelectAttr->setValue(ObjectPtr(), GeomShapePtr(), true); } + else + aValid = false; // only results with a shape can be filtered } else aValid = false; // only results with a shape can be filtered } diff --git a/src/SketchPlugin/SketchPlugin_ConstraintLength.cpp b/src/SketchPlugin/SketchPlugin_ConstraintLength.cpp index b1cc7010d..f4dc4a4ff 100644 --- a/src/SketchPlugin/SketchPlugin_ConstraintLength.cpp +++ b/src/SketchPlugin/SketchPlugin_ConstraintLength.cpp @@ -82,22 +82,24 @@ void SketchPlugin_ConstraintLength::execute() std::shared_ptr aPoint2 = std::dynamic_pointer_cast< GeomDataAPI_Point2D>(aFeature->data()->attribute(SketchPlugin_Line::END_ID())); - double aLenght = aPoint1->pnt()->distance(aPoint2->pnt()); - - //std::shared_ptr aValueAttr = std::dynamic_pointer_cast< - // ModelAPI_AttributeDouble>(data()->attribute(SketchPlugin_Constraint::VALUE())); - //if(!aValueAttr->isInitialized()) { - // aValueAttr->setValue(aLenght); - //} - - // the value should to be computed here, not in the getAISObject - // in order to change the model value - // inside the object transaction. This is important for creating a constraint by preselection. - // The display of the presentation in this case happens after the transaction commit - AttributePtr aFlyOutAttribute = - data()->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()); - if (!aFlyOutAttribute->isInitialized()) { - compute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()); + if (aPoint1.get() && aPoint2.get()) { + double aLenght = aPoint1->pnt()->distance(aPoint2->pnt()); + + //std::shared_ptr aValueAttr = std::dynamic_pointer_cast< + // ModelAPI_AttributeDouble>(data()->attribute(SketchPlugin_Constraint::VALUE())); + //if(!aValueAttr->isInitialized()) { + // aValueAttr->setValue(aLenght); + //} + + // the value should to be computed here, not in the getAISObject + // in order to change the model value + // inside the object transaction. This is important for creating a constraint by preselection. + // The display of the presentation in this case happens after the transaction commit + AttributePtr aFlyOutAttribute = + data()->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()); + if (!aFlyOutAttribute->isInitialized()) { + compute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()); + } } } }