X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_Tools.cpp;h=a9aa9d90c9227f17193f72ea945b42141ec2fd42;hb=c7a5ff20294ae8270bfb9120b8887f0c9959d658;hp=28d78bbd490f38abe1d06345eb2aa1dd7118c098;hpb=229b929fc67912cafece1c9c53ee715de2a8703c;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_Tools.cpp b/src/SketchPlugin/SketchPlugin_Tools.cpp index 28d78bbd4..a9aa9d90c 100644 --- a/src/SketchPlugin/SketchPlugin_Tools.cpp +++ b/src/SketchPlugin/SketchPlugin_Tools.cpp @@ -121,4 +121,37 @@ void updateMultiAttribute(const AttributePtr& theFirstAngleAttribute, aDoubleSecondAttr->setValue(aValue/theValue); } +void updateMultiAttribute(const AttributePtr& theFirstAttribute, + const AttributePtr& theSecondAttribute, + const AttributePtr& theModifiedAttribute, + const int& theValue, + const bool toMultiply) +{ + if (theValue == 0 || !theFirstAttribute->isInitialized() + || !theSecondAttribute->isInitialized()) + return; + + std::shared_ptr aFirstPoint = + std::dynamic_pointer_cast(theFirstAttribute); + std::shared_ptr aSecondPoint = + std::dynamic_pointer_cast(theSecondAttribute); + std::shared_ptr aModifiedPoint = + std::dynamic_pointer_cast(theModifiedAttribute); + + if (!aFirstPoint.get() || !aSecondPoint.get() || !aModifiedPoint.get()) + return; + + if (aFirstPoint->pnt()->isEqual(aSecondPoint->pnt())) + aModifiedPoint->setValue(aFirstPoint->pnt()); + else { + double aDx = aSecondPoint->x() - aFirstPoint->x(); + double aDy = aSecondPoint->y() - aFirstPoint->y(); + + double aX = toMultiply ? aDx * theValue : aDx / theValue; + double anY = toMultiply ? aDy * theValue : aDy / theValue; + + aModifiedPoint->setValue(aFirstPoint->x() + aX, aFirstPoint->y() + anY); + } +} + } // namespace SketchPlugin_Tools