X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_ConstraintLength.cpp;h=6b291b643c716b091dde66958d92d1bc0cadf8a4;hb=30c051954fe28016ee74f7aaf851dbdec4249d8c;hp=ba18dae3e82b711fe03b25772d411ff0aaee6932;hpb=d34842c50d5f335cca443c78910c16c54139c7d0;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_ConstraintLength.cpp b/src/SketchPlugin/SketchPlugin_ConstraintLength.cpp index ba18dae3e..6b291b643 100644 --- a/src/SketchPlugin/SketchPlugin_ConstraintLength.cpp +++ b/src/SketchPlugin/SketchPlugin_ConstraintLength.cpp @@ -68,10 +68,12 @@ void SketchPlugin_ConstraintLength::execute() // aValueAttr->setValue(aLenght); //} - // the value should to be computed here, not in the getAISObject in order to change the model value + // 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()); + AttributePtr aFlyOutAttribute = + data()->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()); if (!aFlyOutAttribute->isInitialized()) { compute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()); } @@ -103,6 +105,18 @@ bool SketchPlugin_ConstraintLength::compute(const std::string& theAttributeId) return true; } +bool SketchPlugin_ConstraintLength::computeLenghtValue(double& theValue) +{ + bool aResult = false; + std::shared_ptr aPoint1, aPoint2; + std::shared_ptr aStartPoint, anEndPoint; + if (getPoints(aPoint1, aPoint2, aStartPoint, anEndPoint)) { + theValue = aPoint1->distance(aPoint2); + aResult = true; + } + return aResult; +} + bool SketchPlugin_ConstraintLength::getPoints( std::shared_ptr& thePoint1, std::shared_ptr& thePoint2, std::shared_ptr& theStartPoint, @@ -133,8 +147,8 @@ AISObjectPtr SketchPlugin_ConstraintLength::getAISObject(AISObjectPtr thePreviou if (!sketch()) return thePrevious; - AISObjectPtr anAIS = SketcherPrs_Factory::lengthDimensionConstraint(this, sketch()->coordinatePlane(), - thePrevious); + AISObjectPtr anAIS = SketcherPrs_Factory::lengthDimensionConstraint(this, + sketch()->coordinatePlane(), thePrevious); return anAIS; } @@ -174,13 +188,11 @@ void SketchPlugin_ConstraintLength::attributeChanged(const std::string& theID) { { std::shared_ptr aValueAttr = std::dynamic_pointer_cast< ModelAPI_AttributeDouble>(attribute(SketchPlugin_Constraint::VALUE())); - if (!aValueAttr->isInitialized()) { // only if it is not initialized, try to compute the current value - std::shared_ptr aPoint1, aPoint2; - std::shared_ptr aStartPoint, anEndPoint; - if (getPoints(aPoint1, aPoint2, aStartPoint, anEndPoint)) { - double aLength = aPoint1->distance(aPoint2); + if (!aValueAttr->isInitialized()) { + // only if it is not initialized, try to compute the current value + double aLength; + if (computeLenghtValue(aLength)) aValueAttr->setValue(aLength); - } } } else if (theID == SketchPlugin_Constraint::FLYOUT_VALUE_PNT() && !myFlyoutUpdate) { myFlyoutUpdate = true;