]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Dimensions move using ModelAPI_ObjectMovedMessage mechanism. Move by deltas is obsole...
authornds <nds@opencascade.com>
Wed, 5 Jul 2017 10:02:15 +0000 (13:02 +0300)
committernds <nds@opencascade.com>
Wed, 5 Jul 2017 10:02:45 +0000 (13:02 +0300)
40 files changed:
src/ModelAPI/ModelAPI_Events.cpp
src/ModuleBase/ModuleBase_WidgetEditor.cpp
src/ModuleBase/ModuleBase_WidgetEditor.h
src/SketchPlugin/SketchPlugin_Arc.cpp
src/SketchPlugin/SketchPlugin_Arc.h
src/SketchPlugin/SketchPlugin_Circle.cpp
src/SketchPlugin/SketchPlugin_Circle.h
src/SketchPlugin/SketchPlugin_ConstraintAngle.cpp
src/SketchPlugin/SketchPlugin_ConstraintAngle.h
src/SketchPlugin/SketchPlugin_ConstraintBase.cpp
src/SketchPlugin/SketchPlugin_ConstraintBase.h
src/SketchPlugin/SketchPlugin_ConstraintDistance.cpp
src/SketchPlugin/SketchPlugin_ConstraintDistance.h
src/SketchPlugin/SketchPlugin_ConstraintDistanceHorizontal.cpp
src/SketchPlugin/SketchPlugin_ConstraintDistanceHorizontal.h
src/SketchPlugin/SketchPlugin_ConstraintDistanceVertical.cpp
src/SketchPlugin/SketchPlugin_ConstraintDistanceVertical.h
src/SketchPlugin/SketchPlugin_ConstraintLength.cpp
src/SketchPlugin/SketchPlugin_ConstraintLength.h
src/SketchPlugin/SketchPlugin_ConstraintRadius.cpp
src/SketchPlugin/SketchPlugin_ConstraintRadius.h
src/SketchPlugin/SketchPlugin_Ellipse.cpp
src/SketchPlugin/SketchPlugin_Ellipse.h
src/SketchPlugin/SketchPlugin_Feature.h
src/SketchPlugin/SketchPlugin_IntersectionPoint.cpp
src/SketchPlugin/SketchPlugin_IntersectionPoint.h
src/SketchPlugin/SketchPlugin_Line.cpp
src/SketchPlugin/SketchPlugin_Line.h
src/SketchPlugin/SketchPlugin_MacroArc.h
src/SketchPlugin/SketchPlugin_MacroCircle.h
src/SketchPlugin/SketchPlugin_MacroEllipse.h
src/SketchPlugin/SketchPlugin_Point.cpp
src/SketchPlugin/SketchPlugin_Point.h
src/SketchPlugin/SketchPlugin_Projection.cpp
src/SketchPlugin/SketchPlugin_Projection.h
src/SketchPlugin/SketchPlugin_Sketch.h
src/SketchPlugin/SketchPlugin_Split.h
src/SketchPlugin/SketchPlugin_Trim.h
src/SketchSolver/SketchSolver_Manager.cpp
src/SketcherPrs/SketcherPrs_LengthDimension.cpp

index 9368211e04a3bc027000042cad93142471b8562e..0a425d8c2eb5e67a4e558c2c9759ce6667633009 100644 (file)
 
 #include <GeomAPI_Pnt2d.h>
 
+//#define DEBUG_OBJECT_MOVED_MESSAGE
+#ifdef DEBUG_OBJECT_MOVED_MESSAGE
+#include <iostream>
+#endif
+
 ModelAPI_ObjectUpdatedMessage::ModelAPI_ObjectUpdatedMessage(const Events_ID theID,
                                                              const void* theSender)
     : Events_MessageGroup(theID, theSender)
@@ -363,21 +368,41 @@ void ModelAPI_ObjectMovedMessage::setMovedAttribute(const AttributePtr& theMoved
 void ModelAPI_ObjectMovedMessage::setOriginalPosition(double theX, double theY)
 {
   myOriginalPosition = std::shared_ptr<GeomAPI_Pnt2d>(new GeomAPI_Pnt2d(theX, theY));
+#ifdef DEBUG_OBJECT_MOVED_MESSAGE
+  std::cout << "setOriginalPosition: " << myOriginalPosition->x() << ", "
+                                       << myOriginalPosition->y() << std::endl;
+#endif
 }
 
 void ModelAPI_ObjectMovedMessage::setOriginalPosition(
     const std::shared_ptr<GeomAPI_Pnt2d>& thePoint)
 {
   myOriginalPosition = thePoint;
+#ifdef DEBUG_OBJECT_MOVED_MESSAGE
+  std::cout << "setOriginalPosition: " << myOriginalPosition->x() << ", "
+                                       << myOriginalPosition->y() << std::endl;
+#endif
 }
 
 void ModelAPI_ObjectMovedMessage::setCurrentPosition(double theX, double theY)
 {
   myCurrentPosition = std::shared_ptr<GeomAPI_Pnt2d>(new GeomAPI_Pnt2d(theX, theY));
+#ifdef DEBUG_OBJECT_MOVED_MESSAGE
+  std::cout << "setCurrentPosition: " << myCurrentPosition->x() << ", " << myCurrentPosition->y()
+            << ", myCurrentPosition - myOriginalPosition: "
+            << myCurrentPosition->x() - myOriginalPosition->x() << ", "
+            << myCurrentPosition->y() - myOriginalPosition->y() << std::endl;
+#endif
 }
 
 void ModelAPI_ObjectMovedMessage::setCurrentPosition(
     const std::shared_ptr<GeomAPI_Pnt2d>& thePoint)
 {
   myCurrentPosition = thePoint;
+#ifdef DEBUG_OBJECT_MOVED_MESSAGE
+  std::cout << "setCurrentPosition: " << myCurrentPosition->x() << ", " << myCurrentPosition->y()
+            << ", myCurrentPosition - myOriginalPosition: "
+            << myCurrentPosition->x() - myOriginalPosition->x() << ", "
+            << myCurrentPosition->y() - myOriginalPosition->y() << std::endl;
+#endif
 }
index 93004ec366ec95c898638f064fc8905b7ea3ef38..3c4d0604a5778ff1454d17caf0e94ec994955257 100644 (file)
@@ -57,7 +57,8 @@ ModuleBase_WidgetEditor::~ModuleBase_WidgetEditor()
 {
 }
 
-bool ModuleBase_WidgetEditor::editedValue(double& outValue, QString& outText)
+bool ModuleBase_WidgetEditor::editedValue(double theSpinMinValue, double theSpinMaxValue,
+                                          double& outValue, QString& outText)
 {
   bool isValueAccepted = false;
 
@@ -67,8 +68,8 @@ bool ModuleBase_WidgetEditor::editedValue(double& outValue, QString& outText)
   aLay->setContentsMargins(2, 2, 2, 2);
 
   ModuleBase_ParamSpinBox* anEditor = new ModuleBase_ParamSpinBox(myEditorDialog);
-  anEditor->setMinimum(0);
-  anEditor->setMaximum(DBL_MAX);
+  anEditor->setMinimum(theSpinMinValue);
+  anEditor->setMaximum(theSpinMaxValue);
   if (outText.isEmpty())
     anEditor->setValue(outValue);
   else
@@ -122,7 +123,7 @@ bool ModuleBase_WidgetEditor::showPopupEditor(const bool theSendSignals)
   if (mySpinBox->hasVariable())
     aText = mySpinBox->text();
 
-  isValueAccepted = editedValue(aValue, aText);
+  isValueAccepted = editedValue(mySpinBox->minimum(), mySpinBox->maximum(), aValue, aText);
   if (isValueAccepted) {
     if (aText.isEmpty()) {
       if (mySpinBox->hasVariable()) {
index 84fb045d6f2589f10a56a49325e7e3681266d0f6..c8177d56a5bd09032f130746a97d52d136ca6e17 100644 (file)
@@ -73,10 +73,13 @@ Q_OBJECT
 
 private:
   /// Show editor
+  /// \param theSpinMinValue a minimal value of popup menu spin box
+  /// \param theSpinMaxValue a maximum value of popup menu spin box
   /// \param theOutValue a result value
   /// \param theOutText a result text
   /// \return true if the editor value is accepted
-  bool editedValue(double& theOutValue, QString& theOutText);
+  bool editedValue(double theSpinMinValue, double theSpinMaxValue,
+                   double& theOutValue, QString& theOutText);
 
  private:
    ///< the current widget feature
index 6c5f2e884b6c4dde43be996800c57226b22e3fbf..d8b03f5a83381c3e92f53e2afc36030ab3597a3d 100644 (file)
@@ -135,36 +135,6 @@ void SketchPlugin_Arc::execute()
   setResult(aResult, 1);
 }
 
-void SketchPlugin_Arc::move(double theDeltaX, double theDeltaY)
-{
-  std::shared_ptr<ModelAPI_Data> aData = data();
-  if(!aData->isValid()) {
-    return;
-  }
-
-  bool aWasBlocked = aData->blockSendAttributeUpdated(true);
-
-  std::shared_ptr<GeomDataAPI_Point2D> aCenter = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
-      attribute(CENTER_ID()));
-  if(aCenter->isInitialized()) {
-    aCenter->move(theDeltaX, theDeltaY);
-  }
-
-  std::shared_ptr<GeomDataAPI_Point2D> aStart = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
-      attribute(START_ID()));
-  if(aStart->isInitialized()) {
-    aStart->move(theDeltaX, theDeltaY);
-  }
-
-  std::shared_ptr<GeomDataAPI_Point2D> anEnd = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
-      attribute(END_ID()));
-  if(anEnd->isInitialized()) {
-    anEnd->move(theDeltaX, theDeltaY);
-  }
-
-  aData->blockSendAttributeUpdated(aWasBlocked);
-}
-
 bool SketchPlugin_Arc::isFixed()
 {
   return data()->selection(EXTERNAL_ID())->context().get() != NULL;
index 38c565b738768625993aa115ad26558fa40e4c30..b9dd9ed8fd5732615f64ea0bd45a2189842df60c 100644 (file)
@@ -103,11 +103,6 @@ class SketchPlugin_Arc: public SketchPlugin_SketchEntity
   /// Creates an arc-shape
   SKETCHPLUGIN_EXPORT virtual void execute();
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Updates the "reversed" flag
   /// \param isReversed  whether the arc will be reversed
   void setReversed(bool isReversed);
index 77ea5d998ae950b3faf19c56c965cd61c4333519..0975e57e43db79f00e2bde9e7f1bc3a8b6fda85b 100644 (file)
@@ -96,20 +96,6 @@ void SketchPlugin_Circle::execute()
   setResult(aResult, 1);
 }
 
-void SketchPlugin_Circle::move(double theDeltaX, double theDeltaY)
-{
-  std::shared_ptr<ModelAPI_Data> aData = data();
-  if(!aData->isValid()) {
-    return;
-  }
-
-  std::shared_ptr<GeomDataAPI_Point2D> aPoint = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
-      aData->attribute(CENTER_ID()));
-  if(aPoint->isInitialized()) {
-    aPoint->move(theDeltaX, theDeltaY);
-  }
-}
-
 bool SketchPlugin_Circle::isFixed() {
   return data()->selection(EXTERNAL_ID())->context().get() != NULL;
 }
index 6bc4050d86571c0e615d456af1803b4e608e1033..ea95823d87b5bc83dd45c96287f887ee588ae560 100644 (file)
@@ -69,11 +69,6 @@ class SketchPlugin_Circle: public SketchPlugin_SketchEntity
   /// Creates a new part document if needed
   SKETCHPLUGIN_EXPORT virtual void execute();
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Use plugin manager for features creation
   SketchPlugin_Circle();
 
index 3d2440b154b49fdec541e78000417988201c493d..14815ed666a854c70bbe50069b957b1d1dd37f5e 100644 (file)
@@ -269,20 +269,6 @@ void SketchPlugin_ConstraintAngle::updateConstraintValueByAngleValue()
   aValueAttr->setValue(anAngle);
 }
 
-void SketchPlugin_ConstraintAngle::move(double theDeltaX, double theDeltaY)
-{
-  std::shared_ptr<ModelAPI_Data> aData = data();
-  if (!aData->isValid())
-    return;
-
-  myFlyoutUpdate = true;
-  std::shared_ptr<GeomDataAPI_Point2D> aFlyoutAttr = std::dynamic_pointer_cast<
-      GeomDataAPI_Point2D>(aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()));
-  aFlyoutAttr->setValue(aFlyoutAttr->x() + theDeltaX, aFlyoutAttr->y() + theDeltaY);
-  myFlyoutUpdate = false;
-}
-
-
 bool SketchPlugin_ConstraintAngle::compute(const std::string& theAttributeId)
 {
   if (theAttributeId != SketchPlugin_Constraint::FLYOUT_VALUE_PNT())
index ce7e5f79542c1eeb5a81b5e41e4153b167cb1de2..ba00fbc9d76449eb5753dd92b1f666efe9b67cbd 100644 (file)
@@ -97,11 +97,6 @@ class SketchPlugin_ConstraintAngle : public SketchPlugin_ConstraintBase
   /// Returns the AIS preview
   SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Calculate current value of the angle
   double calculateAngle();
 
index 19037692fd9c58d12bb39f393dfb920488f4ceb4..0a499442b65045fc305851e9c365bc92a1156475 100644 (file)
@@ -29,9 +29,3 @@ const void SketchPlugin_ConstraintBase::addSub(const FeaturePtr& theFeature)
 {
 
 }
-
-void SketchPlugin_ConstraintBase::move(const double theDeltaX, const double theDeltaY)
-{
-
-}
-
index a30139b0226832da415452142a6f3a707df6c3f0..9c65757d6355809ed4a8a0c34fa11731b2302bc9 100644 (file)
@@ -64,10 +64,6 @@ class SketchPlugin_ConstraintBase : public SketchPlugin_Constraint, public GeomA
    *  \param theFeature sub-feature
    */
   SKETCHPLUGIN_EXPORT virtual const void addSub(const FeaturePtr& theFeature);
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
 
       /// Customize presentation of the feature
   virtual bool customisePresentation(ResultPtr theResult, AISObjectPtr thePrs,
index b541a3bc143b70953db80beb0c61ca3acbbe600d..9566988fd570640bb00298148e6a39e9d2756479 100644 (file)
@@ -92,60 +92,6 @@ AISObjectPtr SketchPlugin_ConstraintDistance::getAISObject(AISObjectPtr thePrevi
   return anAIS;
 }
 
-//*************************************************************************************
-void SketchPlugin_ConstraintDistance::move(double theDeltaX, double theDeltaY)
-{
-  std::shared_ptr<ModelAPI_Data> aData = data();
-  if (!aData->isValid())
-    return;
-
-  // Recalculate a shift of flyout point in terms of local coordinates
-  std::shared_ptr<GeomAPI_XY> aDir(new GeomAPI_XY(theDeltaX, theDeltaY));
-  std::shared_ptr<GeomAPI_Ax3> aPlane = SketchPlugin_Sketch::plane(sketch());
-  std::shared_ptr<GeomDataAPI_Point2D> aPointA = SketcherPrs_Tools::getFeaturePoint(
-      data(), SketchPlugin_Constraint::ENTITY_A(), aPlane);
-  std::shared_ptr<GeomDataAPI_Point2D> aPointB = SketcherPrs_Tools::getFeaturePoint(
-      data(), SketchPlugin_Constraint::ENTITY_B(), aPlane);
-
-  std::shared_ptr<GeomAPI_XY> aStartPnt;
-  std::shared_ptr<GeomAPI_XY> aEndPnt;
-  if (aPointA && aPointB) {
-    aStartPnt = aPointA->pnt()->xy();
-    aEndPnt = aPointB->pnt()->xy();
-  } else if (aPointA) {
-    FeaturePtr aLine = SketcherPrs_Tools::getFeatureLine(data(),
-        SketchPlugin_Constraint::ENTITY_B());
-    if (!aLine)
-      return;
-    std::shared_ptr<GeomAPI_Pnt2d> aPoint = aPointA->pnt();
-    aStartPnt = aPoint->xy();
-    aEndPnt = SketcherPrs_Tools::getProjectionPoint(aLine, aPoint)->xy();
-  } else if (aPointB) {
-    FeaturePtr aLine = SketcherPrs_Tools::getFeatureLine(data(),
-        SketchPlugin_Constraint::ENTITY_A());
-    if (!aLine)
-      return;
-    std::shared_ptr<GeomAPI_Pnt2d> aPoint = aPointB->pnt();
-    aStartPnt = SketcherPrs_Tools::getProjectionPoint(aLine, aPoint)->xy();
-    aEndPnt = aPoint->xy();
-  } else
-    return;
-
-  std::shared_ptr<GeomAPI_Dir2d> aLineDir(new GeomAPI_Dir2d(aEndPnt->decreased(aStartPnt)));
-  double dX = aDir->dot(aLineDir->xy());
-  double dY = -aDir->cross(aLineDir->xy());
-
-  std::shared_ptr<GeomDataAPI_Point2D> aPoint = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
-      aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()));
-  myFlyoutUpdate = true;
-  if (aPoint->isInitialized()) {
-    aPoint->setValue(aPoint->x() + dX, aPoint->y() + dY);
-  } else {
-    aPoint->setValue(dX, dY);
-  }
-  myFlyoutUpdate = false;
-}
-
 double SketchPlugin_ConstraintDistance::calculateCurrentDistance()
 {
   double aDistance = -1.;
@@ -220,7 +166,6 @@ void SketchPlugin_ConstraintDistance::attributeChanged(const std::string& theID)
       }
     }
   } else if (theID == SketchPlugin_Constraint::FLYOUT_VALUE_PNT() && !myFlyoutUpdate) {
-    myFlyoutUpdate = true;
     // Recalculate flyout point in local coordinates of the distance constraint:
     // the X coordinate is a length of projection of the flyout point on the
     //                  line binding two distanced points
@@ -264,6 +209,7 @@ void SketchPlugin_ConstraintDistance::attributeChanged(const std::string& theID)
     if (aEndPnt->distance(aStartPnt) < tolerance)
       return;
 
+    myFlyoutUpdate = true;
     std::shared_ptr<GeomAPI_Dir2d> aLineDir(new GeomAPI_Dir2d(aEndPnt->decreased(aStartPnt)));
     std::shared_ptr<GeomAPI_XY> aFlyoutDir = aFlyoutPnt->xy()->decreased(aStartPnt);
 
index 3c433e974366a39bc5452dd979dc1d74b881b260..e9e4b1501329863f3161ddb006fe920b4b63dedb 100644 (file)
@@ -78,11 +78,6 @@ class SketchPlugin_ConstraintDistance : public SketchPlugin_ConstraintBase
   /// Returns the AIS preview
   SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Called on change of any argument-attribute of this object
   /// \param theID identifier of changed attribute
   SKETCHPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
@@ -97,7 +92,7 @@ protected:
   /// Check the attributes related to distanced points/features are initialized
   bool areAttributesInitialized();
 
-private:
+protected:
   bool myFlyoutUpdate; ///< to avoid cyclic dependencies on automatic updates of flyout point
 };
 
index 4d9216477b7d60643dc048609f2d50e98a9caf0a..accd996af2b417ec04c1e7757857003f12276301 100644 (file)
@@ -73,42 +73,6 @@ AISObjectPtr SketchPlugin_ConstraintDistanceHorizontal::getAISObject(AISObjectPt
   return anAIS;
 }
 
-//*************************************************************************************
-void SketchPlugin_ConstraintDistanceHorizontal::move(double theDeltaX, double theDeltaY)
-{
-  std::shared_ptr<ModelAPI_Data> aData = data();
-  if (!aData->isValid())
-    return;
-
-  // Recalculate a shift of flyout point in terms of local coordinates
-  std::shared_ptr<GeomAPI_XY> aDir(new GeomAPI_XY(theDeltaX, theDeltaY));
-  std::shared_ptr<GeomAPI_Ax3> aPlane = SketchPlugin_Sketch::plane(sketch());
-  std::shared_ptr<GeomDataAPI_Point2D> aPointA = SketcherPrs_Tools::getFeaturePoint(
-      data(), SketchPlugin_Constraint::ENTITY_A(), aPlane);
-  std::shared_ptr<GeomDataAPI_Point2D> aPointB = SketcherPrs_Tools::getFeaturePoint(
-      data(), SketchPlugin_Constraint::ENTITY_B(), aPlane);
-
-  if (!aPointA || !aPointB)
-    return;
-
-  std::shared_ptr<GeomAPI_XY> aStartPnt = aPointA->pnt()->xy();
-  std::shared_ptr<GeomAPI_XY> aEndPnt = aPointB->pnt()->xy();
-
-  std::shared_ptr<GeomAPI_Dir2d> aLineDir(new GeomAPI_Dir2d(aEndPnt->decreased(aStartPnt)));
-  double dX = aDir->dot(aLineDir->xy());
-  double dY = -aDir->cross(aLineDir->xy());
-
-  std::shared_ptr<GeomDataAPI_Point2D> aPoint = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
-      aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()));
-  myFlyoutUpdate = true;
-  if (aPoint->isInitialized()) {
-    aPoint->setValue(aPoint->x() + dX, aPoint->y() + dY);
-  } else {
-    aPoint->setValue(dX, dY);
-  }
-  myFlyoutUpdate = false;
-}
-
 double SketchPlugin_ConstraintDistanceHorizontal::calculateCurrentDistance()
 {
   std::shared_ptr<ModelAPI_Data> aData = data();
@@ -133,7 +97,6 @@ void SketchPlugin_ConstraintDistanceHorizontal::attributeChanged(const std::stri
       aValueAttr->setValue(aDistance);
     }
   } else if (theID == SketchPlugin_Constraint::FLYOUT_VALUE_PNT() && !myFlyoutUpdate) {
-    myFlyoutUpdate = true;
     // Recalculate flyout point in local coordinates of the distance constraint:
     // the X coordinate is a length of projection of the flyout point on the
     //                  line binding two distanced points
@@ -152,15 +115,13 @@ void SketchPlugin_ConstraintDistanceHorizontal::attributeChanged(const std::stri
 
     std::shared_ptr<GeomAPI_XY> aStartPnt = aPointA->pnt()->xy();
     std::shared_ptr<GeomAPI_XY> aEndPnt = aPointB->pnt()->xy();
-
     if (aEndPnt->distance(aStartPnt) < tolerance)
       return;
 
-    std::shared_ptr<GeomAPI_Dir2d> aLineDir(new GeomAPI_Dir2d(aEndPnt->decreased(aStartPnt)));
-    std::shared_ptr<GeomAPI_XY> aFlyoutDir = aFlyoutPnt->xy()->decreased(aStartPnt);
-
-    double X = aFlyoutDir->dot(aLineDir->xy());
-    double Y = -aFlyoutDir->cross(aLineDir->xy());
+    myFlyoutUpdate = true;
+    std::shared_ptr<GeomAPI_XY> aFlyoutDir = aFlyoutPnt->xy()->decreased(aEndPnt);
+    double X = aFlyoutDir->x(); // Dot on OX axis
+    double Y = aFlyoutDir->y(); // Cross to OX axis
     aFlyoutAttr->setValue(X, Y);
     myFlyoutUpdate = false;
   }
index 98ef11796a6f1b9fc3772252ac1a8c19d4f613ee..e8f6cb8ebc2d2bb123736442654fbc98c7757a04 100644 (file)
@@ -61,11 +61,6 @@ public:
   /// Returns the AIS preview
   SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Called on change of any argument-attribute of this object
   /// \param theID identifier of changed attribute
   SKETCHPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
@@ -76,9 +71,6 @@ public:
 protected:
   /// Returns the current distance between the feature attributes
   virtual double calculateCurrentDistance();
-
-private:
-  bool myFlyoutUpdate; ///< to avoid cyclic dependencies on automatic updates of flyout point
 };
 
 #endif
index 6691ee51bba8ad4a231d9cf4953c9e4d5ce363ec..e9f645a0256063bfc40381de14ec9ae4045a84a2 100644 (file)
@@ -73,42 +73,6 @@ AISObjectPtr SketchPlugin_ConstraintDistanceVertical::getAISObject(AISObjectPtr
   return anAIS;
 }
 
-//*************************************************************************************
-void SketchPlugin_ConstraintDistanceVertical::move(double theDeltaX, double theDeltaY)
-{
-  std::shared_ptr<ModelAPI_Data> aData = data();
-  if (!aData->isValid())
-    return;
-
-  // Recalculate a shift of flyout point in terms of local coordinates
-  std::shared_ptr<GeomAPI_XY> aDir(new GeomAPI_XY(theDeltaX, theDeltaY));
-  std::shared_ptr<GeomAPI_Ax3> aPlane = SketchPlugin_Sketch::plane(sketch());
-  std::shared_ptr<GeomDataAPI_Point2D> aPointA = SketcherPrs_Tools::getFeaturePoint(
-      data(), SketchPlugin_Constraint::ENTITY_A(), aPlane);
-  std::shared_ptr<GeomDataAPI_Point2D> aPointB = SketcherPrs_Tools::getFeaturePoint(
-      data(), SketchPlugin_Constraint::ENTITY_B(), aPlane);
-
-  if (!aPointA || !aPointB)
-    return;
-
-  std::shared_ptr<GeomAPI_XY> aStartPnt = aPointA->pnt()->xy();
-  std::shared_ptr<GeomAPI_XY> aEndPnt = aPointB->pnt()->xy();
-
-  std::shared_ptr<GeomAPI_Dir2d> aLineDir(new GeomAPI_Dir2d(aEndPnt->decreased(aStartPnt)));
-  double dX = aDir->dot(aLineDir->xy());
-  double dY = -aDir->cross(aLineDir->xy());
-
-  std::shared_ptr<GeomDataAPI_Point2D> aPoint = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
-      aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()));
-  myFlyoutUpdate = true;
-  if (aPoint->isInitialized()) {
-    aPoint->setValue(aPoint->x() + dX, aPoint->y() + dY);
-  } else {
-    aPoint->setValue(dX, dY);
-  }
-  myFlyoutUpdate = false;
-}
-
 double SketchPlugin_ConstraintDistanceVertical::calculateCurrentDistance()
 {
   std::shared_ptr<ModelAPI_Data> aData = data();
@@ -133,7 +97,6 @@ void SketchPlugin_ConstraintDistanceVertical::attributeChanged(const std::string
       aValueAttr->setValue(aDistance);
     }
   } else if (theID == SketchPlugin_Constraint::FLYOUT_VALUE_PNT() && !myFlyoutUpdate) {
-    myFlyoutUpdate = true;
     // Recalculate flyout point in local coordinates of the distance constraint:
     // the X coordinate is a length of projection of the flyout point on the
     //                  line binding two distanced points
@@ -156,11 +119,10 @@ void SketchPlugin_ConstraintDistanceVertical::attributeChanged(const std::string
     if (aEndPnt->distance(aStartPnt) < tolerance)
       return;
 
-    std::shared_ptr<GeomAPI_Dir2d> aLineDir(new GeomAPI_Dir2d(aEndPnt->decreased(aStartPnt)));
-    std::shared_ptr<GeomAPI_XY> aFlyoutDir = aFlyoutPnt->xy()->decreased(aStartPnt);
-
-    double X = aFlyoutDir->dot(aLineDir->xy());
-    double Y = -aFlyoutDir->cross(aLineDir->xy());
+    std::shared_ptr<GeomAPI_XY> aFlyoutDir = aFlyoutPnt->xy()->decreased(aEndPnt);
+    myFlyoutUpdate = true;
+    double X =  aFlyoutDir->y(); // Dot on OY axis
+    double Y = -aFlyoutDir->x(); // Cross to OY axis
     aFlyoutAttr->setValue(X, Y);
     myFlyoutUpdate = false;
   }
index 7847700612850cc9633d0e03a4e1be318baaef87..2cdb36d7d0960eef25eaff113e71409808f07773 100644 (file)
@@ -61,11 +61,6 @@ public:
   /// Returns the AIS preview
   SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Called on change of any argument-attribute of this object
   /// \param theID identifier of changed attribute
   SKETCHPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
@@ -76,9 +71,6 @@ public:
 protected:
   /// Returns the current distance between the feature attributes
   virtual double calculateCurrentDistance();
-
-private:
-  bool myFlyoutUpdate; ///< to avoid cyclic dependencies on automatic updates of flyout point
 };
 
 #endif
index 881eace025e0da979dd9944e1d319d6d60764853..765984cb6f8fe64ad8afe93a017e1f1419333066 100644 (file)
@@ -166,37 +166,6 @@ AISObjectPtr SketchPlugin_ConstraintLength::getAISObject(AISObjectPtr thePreviou
   return anAIS;
 }
 
-void SketchPlugin_ConstraintLength::move(double theDeltaX, double theDeltaY)
-{
-  std::shared_ptr<ModelAPI_Data> aData = data();
-  if (!aData->isValid())
-    return;
-
-  AttributeRefAttrPtr aLineAttr = std::dynamic_pointer_cast<ModelAPI_AttributeRefAttr>(
-      attribute(SketchPlugin_Constraint::ENTITY_A()));
-  if (!aLineAttr || !aLineAttr->isObject())
-    return;
-  FeaturePtr aLine = ModelAPI_Feature::feature(aLineAttr->object());
-  if (!aLine || aLine->getKind() != SketchPlugin_Line::ID())
-    return;
-
-  // Recalculate a shift of flyout point in terms of local coordinates
-  std::shared_ptr<GeomAPI_XY> aDir(new GeomAPI_XY(theDeltaX, theDeltaY));
-  std::shared_ptr<GeomAPI_XY> aStartPnt = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
-      aLine->attribute(SketchPlugin_Line::START_ID()))->pnt()->xy();
-  std::shared_ptr<GeomAPI_XY> aEndPnt = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
-      aLine->attribute(SketchPlugin_Line::END_ID()))->pnt()->xy();
-  std::shared_ptr<GeomAPI_Dir2d> aLineDir(new GeomAPI_Dir2d(aEndPnt->decreased(aStartPnt)));
-  double dX = aDir->dot(aLineDir->xy());
-  double dY = -aDir->cross(aLineDir->xy());
-
-  myFlyoutUpdate = true;
-  std::shared_ptr<GeomDataAPI_Point2D> aPoint = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
-      aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()));
-  aPoint->setValue(aPoint->x() + dX, aPoint->y() + dY);
-  myFlyoutUpdate = false;
-}
-
 void SketchPlugin_ConstraintLength::attributeChanged(const std::string& theID) {
   if (theID == SketchPlugin_Constraint::ENTITY_A())
   {
@@ -209,7 +178,6 @@ void SketchPlugin_ConstraintLength::attributeChanged(const std::string& theID) {
         aValueAttr->setValue(aLength);
     }
   } else if (theID == SketchPlugin_Constraint::FLYOUT_VALUE_PNT() && !myFlyoutUpdate) {
-    myFlyoutUpdate = true;
     // Recalculate flyout point in local coordinates of the line:
     // the X coordinate is a length of projection of the flyout point on the line
     // the Y coordinate is a distance from the point to the line
@@ -230,6 +198,7 @@ void SketchPlugin_ConstraintLength::attributeChanged(const std::string& theID) {
     std::shared_ptr<GeomAPI_XY> aEndPnt = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
         aLine->attribute(SketchPlugin_Line::END_ID()))->pnt()->xy();
 
+    myFlyoutUpdate = true;
     std::shared_ptr<GeomAPI_Dir2d> aLineDir(new GeomAPI_Dir2d(aEndPnt->decreased(aStartPnt)));
     std::shared_ptr<GeomAPI_XY> aFlyoutDir = aFlyoutPnt->xy()->decreased(aStartPnt);
     double X = aFlyoutDir->dot(aLineDir->xy());
index 042201613e5df694b13d24f02ebfe0800b9b447a..50e9ebb9b5c10654b0b39d3c11b89a552cd20ad4 100644 (file)
@@ -29,6 +29,7 @@
 
 #include <list>
 
+class GeomAPI_Pnt2d;
 class GeomDataAPI_Point2D;
 
 /** \class SketchPlugin_ConstraintLength
@@ -73,11 +74,6 @@ class SketchPlugin_ConstraintLength : public SketchPlugin_ConstraintBase
   /// Returns the AIS preview
   SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Called on change of any argument-attribute of this object
   /// \param theID identifier of changed attribute
   SKETCHPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
index 41be22e742475117d7a225e9fdbf7347fee0f963..16c7b60326aa4e775d6b084fbcec0d8b34aa1720 100644 (file)
@@ -173,19 +173,6 @@ AISObjectPtr SketchPlugin_ConstraintRadius::getAISObject(AISObjectPtr thePreviou
   return anAIS;
 }
 
-void SketchPlugin_ConstraintRadius::move(double theDeltaX, double theDeltaY)
-{
-  std::shared_ptr<ModelAPI_Data> aData = data();
-  if (!aData->isValid())
-    return;
-
-  myFlyoutUpdate = true;
-  std::shared_ptr<GeomDataAPI_Point2D> aFlyoutAttr = std::dynamic_pointer_cast<
-      GeomDataAPI_Point2D>(aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()));
-  aFlyoutAttr->setValue(aFlyoutAttr->x() + theDeltaX, aFlyoutAttr->y() + theDeltaY);
-  myFlyoutUpdate = false;
-}
-
 void SketchPlugin_ConstraintRadius::attributeChanged(const std::string& theID) {
   if (theID == SketchPlugin_Constraint::ENTITY_A()) {
     std::shared_ptr<ModelAPI_AttributeDouble> aValueAttr = std::dynamic_pointer_cast<
index d4ad2f5979de525e20f573d1b6df27914401a46c..cdb83eccd522b6ada6ea80c62450dd8bd249b3af 100644 (file)
@@ -67,11 +67,6 @@ class SketchPlugin_ConstraintRadius : public SketchPlugin_ConstraintBase
   /// Returns the AIS preview
   SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Called on change of any argument-attribute of this object
   /// \param theID identifier of changed attribute
   SKETCHPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
index d9f61e165814e763df3099d4bfc6f439c149cacd..b7ec05716d689323d5ee41d0857b5b630cddb939 100644 (file)
@@ -102,20 +102,6 @@ void SketchPlugin_Ellipse::execute()
   setResult(aResult, 1);
 }
 
-void SketchPlugin_Ellipse::move(double theDeltaX, double theDeltaY)
-{
-  std::shared_ptr<ModelAPI_Data> aData = data();
-  if(!aData->isValid()) {
-    return;
-  }
-
-  std::shared_ptr<GeomDataAPI_Point2D> aPoint = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
-      aData->attribute(CENTER_ID()));
-  if(aPoint->isInitialized()) {
-    aPoint->move(theDeltaX, theDeltaY);
-  }
-}
-
 bool SketchPlugin_Ellipse::isFixed() {
   return data()->selection(EXTERNAL_ID())->context().get() != NULL;
 }
index fc4b77c64e48be137a9b04d00704664b86aac12c..fe0873f083b76f27feb5e417bf83769926c286b4 100644 (file)
@@ -86,11 +86,6 @@ class SketchPlugin_Ellipse: public SketchPlugin_SketchEntity
   /// Creates a new part document if needed
   SKETCHPLUGIN_EXPORT virtual void execute();
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Use plugin manager for features creation
   SketchPlugin_Ellipse();
 
index a780d5e10efc223bf7f27575b36c679e4a63b911..a9823830700559907394b85759940a911e842a53 100644 (file)
@@ -65,11 +65,6 @@ class SketchPlugin_Feature : public ModelAPI_Feature
     return true;
   }
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY) = 0;
-
   /// Construction result is allways recomuted on the fly
   SKETCHPLUGIN_EXPORT virtual bool isPersistentResult() {return false;}
 
index a7ff0b68e92136d1148de98f62cb457aadb869e8..a391b22e6a31f49d5c9a9a373575db2833dd75bd 100644 (file)
@@ -52,10 +52,6 @@ void SketchPlugin_IntersectionPoint::execute()
   }
 }
 
-void SketchPlugin_IntersectionPoint::move(double theDeltaX, double theDeltaY)
-{
-}
-
 void SketchPlugin_IntersectionPoint::attributeChanged(const std::string& theID)
 {
   if (theID == EXTERNAL_LINE_ID()) {
index b93e262a3294c1a504261708a7425260a54ddb70..a25f1be363dbcfe3c63bcac0c01cefa31b66e2b0 100644 (file)
@@ -57,11 +57,6 @@ public:
   /// Creates a new part document if needed
   SKETCHPLUGIN_EXPORT virtual void execute();
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Called on change of any argument-attribute of this object: for external point
   SKETCHPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
 
index 0e2d723d1a0a2281cbbcb96003d515bcb8a5e28c..23cbe266674cfd4cc376d113f1d9807341e8a32b 100644 (file)
@@ -92,21 +92,6 @@ void SketchPlugin_Line::execute()
   }
 }
 
-void SketchPlugin_Line::move(double theDeltaX, double theDeltaY)
-{
-  std::shared_ptr<ModelAPI_Data> aData = data();
-  if (!aData->isValid())
-    return;
-
-  std::shared_ptr<GeomDataAPI_Point2D> aPoint1 = std::dynamic_pointer_cast<GeomDataAPI_Point2D>
-    (aData->attribute(START_ID()));
-  aPoint1->move(theDeltaX, theDeltaY);
-
-  std::shared_ptr<GeomDataAPI_Point2D> aPoint2 = std::dynamic_pointer_cast<GeomDataAPI_Point2D>
-    (aData->attribute(END_ID()));
-  aPoint2->move(theDeltaX, theDeltaY);
-}
-
 std::string SketchPlugin_Line::processEvent(const std::shared_ptr<Events_Message>& theMessage)
 {
   std::string aFilledAttributeName;
index 31e38a28a6993aa4b6697bf36033cd609958bc9c..d51c6608f79225a3944b8d74e107f113627a32b7 100644 (file)
@@ -76,11 +76,6 @@ class SketchPlugin_Line : public SketchPlugin_SketchEntity,
   /// Creates a new part document if needed
   SKETCHPLUGIN_EXPORT virtual void execute();
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Apply information of the message to current object. It fills start attribute of
   /// the currrent feature by last attribute of the message feature, build coincidence
   /// if message has selected object
index 023c1f76fcaa0d7102afbf9539b625a5123d53c2..20b42c4629c0cf01ae8dbcbd7bf2fba0aa1b23e9 100644 (file)
@@ -200,13 +200,6 @@ class SketchPlugin_MacroArc: public SketchPlugin_SketchEntity,
   /// Creates an arc-shape
   SKETCHPLUGIN_EXPORT virtual void execute();
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY)
-  {
-  };
-
   /// Reimplemented from ModelAPI_Feature::isMacro().
   SKETCHPLUGIN_EXPORT virtual bool isMacro() const {return true;};
 
index 9208dfdb1fe4eae8cf69c0e2d3b709c300a94834..621439c445fd7a2904945bdf613fe80dabd87b12 100644 (file)
@@ -170,12 +170,6 @@ class SketchPlugin_MacroCircle: public SketchPlugin_SketchEntity,
   /// Creates a new part document if needed
   SKETCHPLUGIN_EXPORT virtual void execute();
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY)
-  {};
-
   /// Reimplemented from ModelAPI_Feature::isMacro().
   /// \returns true
   SKETCHPLUGIN_EXPORT virtual bool isMacro() const {return true;};
index d31d0d55f3fb3b83d5af430bb57e2aa6a2d7e97f..0af9ee7bd06d3d62802c513eaf8fd97bfbd7195e 100644 (file)
@@ -124,12 +124,6 @@ class SketchPlugin_MacroEllipse: public SketchPlugin_SketchEntity,
   /// Creates a new part document if needed
   SKETCHPLUGIN_EXPORT virtual void execute();
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY)
-  {}
-
   /// Reimplemented from ModelAPI_Feature::isMacro().
   /// \returns true
   SKETCHPLUGIN_EXPORT virtual bool isMacro() const
index 766d33936db8b080f3011176af3566c3bfbc397e..252ecf18118b57f82eda9f600e73a45ba5b1639c 100644 (file)
@@ -62,17 +62,6 @@ void SketchPlugin_Point::execute()
   }
 }
 
-void SketchPlugin_Point::move(double theDeltaX, double theDeltaY)
-{
-  std::shared_ptr<ModelAPI_Data> aData = data();
-  if (!aData->isValid())
-    return;
-
-  std::shared_ptr<GeomDataAPI_Point2D> aPoint1 = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
-      aData->attribute(SketchPlugin_Point::COORD_ID()));
-  aPoint1->move(theDeltaX, theDeltaY);
-}
-
 bool SketchPlugin_Point::isFixed() {
   return data()->selection(EXTERNAL_ID())->context().get() != NULL;
 }
index 7e7a4c6736de8b1195691acbd0628806444721d1..ae23556e3cc846c29f74b342b090f691a365983b 100644 (file)
@@ -58,11 +58,6 @@ class SketchPlugin_Point : public SketchPlugin_SketchEntity
   /// Creates a new part document if needed
   SKETCHPLUGIN_EXPORT virtual void execute();
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Called on change of any argument-attribute of this object: for external point
   SKETCHPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
 
index d6b5654154c3aed42fefae4ff78c851dcda84218..9b8f4e4b874acc77a19a4614d6862f72879f340e 100644 (file)
@@ -90,11 +90,6 @@ void SketchPlugin_Projection::execute()
   computeProjection(EXTERNAL_FEATURE_ID());
 }
 
-void SketchPlugin_Projection::move(double theDeltaX, double theDeltaY)
-{
-  // feature cannot be moved
-}
-
 void SketchPlugin_Projection::attributeChanged(const std::string& theID)
 {
   if ((theID == EXTERNAL_FEATURE_ID() || theID == EXTERNAL_ID()) && !myIsComputing) {
index c5c3e83783bb4c0c9e7f567ea8f298ec8b3c172e..26b4b960e0a91bbbf82098b5bfe8752ccf92bbce 100644 (file)
@@ -75,11 +75,6 @@ public:
   /// Creates a new part document if needed
   SKETCHPLUGIN_EXPORT virtual void execute();
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY);
-
   /// Called on change of any argument-attribute of this object: for external point
   SKETCHPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
 
index 6b76be658885f82508f481432db62c861d8417fc..3e7328e77cc15623cdfb930d5964e25228331bf6 100644 (file)
@@ -104,13 +104,6 @@ class SketchPlugin_Sketch : public ModelAPI_CompositeFeature, public GeomAPI_ICu
   /// Request for initialization of data model of the feature: adding all attributes
   SKETCHPLUGIN_EXPORT virtual void initAttributes();
 
-  /// Moves the feature
-  /// \param theDeltaX the delta for X coordinate is moved
-  /// \param theDeltaY the delta for Y coordinate is moved
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY)
-  {
-  }
-
   /// Converts a 2D sketch space point into point in 3D space
   /// \param theX an X coordinate
   /// \param theY an Y coordinate
index 4a37a3f0a17e807c36bd68868f340e4aa84c41e4..1c9ae40e53441b66a14737ec0cdd42675579968b 100644 (file)
@@ -128,9 +128,6 @@ class SketchPlugin_Split : public SketchPlugin_Feature, public GeomAPI_IPresenta
   /// Returns the AIS preview
   SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
 
-  /// Moves the feature : Empty
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY) {};
-
   /// Apply information of the message to current object. It fills selected point and object
   virtual std::string processEvent(const std::shared_ptr<Events_Message>& theMessage);
 
index 9dd5015db7fe1fd40ab35df97daaf0ff6083b045..f03c5d59f5bca6622e92ae62ac4135d9af77d781 100644 (file)
@@ -103,9 +103,6 @@ class SketchPlugin_Trim : public SketchPlugin_Feature, public GeomAPI_IPresentab
   /// Returns the AIS preview
   SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
 
-  /// Moves the feature : Empty
-  SKETCHPLUGIN_EXPORT virtual void move(const double theDeltaX, const double theDeltaY) {};
-
   /// Apply information of the message to current object. It fills selected point and object
   virtual std::string processEvent(const std::shared_ptr<Events_Message>& theMessage);
 
index d253916c981ded6b8df351a2d92e0c8323a5000b..506c8e46d99a9341a1dc2c983eae606e5f88f27c 100644 (file)
@@ -226,6 +226,17 @@ bool SketchSolver_Manager::moveFeature(
   if (!aGroup)
     return false;
 
+  std::shared_ptr<SketchPlugin_Constraint> aConstraint =
+      std::dynamic_pointer_cast<SketchPlugin_Constraint>(theMovedFeature);
+  if (aConstraint)
+  {
+    std::shared_ptr<GeomDataAPI_Point2D> aPntAttr = std::dynamic_pointer_cast<GeomDataAPI_Point2D>
+      (aConstraint->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT()));
+    aPntAttr->setValue(theTo);
+    Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_UPDATED));
+    return true;
+  }
+
   aGroup->blockEvents(true);
   return aGroup->moveFeature(theMovedFeature, theFrom, theTo);
 }
@@ -240,6 +251,15 @@ bool SketchSolver_Manager::moveAttribute(
     const std::shared_ptr<GeomAPI_Pnt2d>& theTo)
 {
   FeaturePtr anOwner = ModelAPI_Feature::feature(theMovedAttribute->owner());
+  std::shared_ptr<SketchPlugin_Constraint> aConstraint =
+      std::dynamic_pointer_cast<SketchPlugin_Constraint>(anOwner);
+  if (aConstraint)
+  {
+    theMovedAttribute->setValue(theTo);
+    Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_UPDATED));
+    return true;
+  }
+
   std::shared_ptr<SketchPlugin_Feature> aSketchFeature =
       std::dynamic_pointer_cast<SketchPlugin_Feature>(anOwner);
   SketchGroupPtr aGroup;
index 5e5c60465379a607308c023fc738da9d62df5df5..34fb6a6eed108e69660e376bb0a35e19eec050a9 100644 (file)
@@ -42,6 +42,7 @@
 
 #include <AIS_DisplaySpecialSymbol.hxx>
 
+//#ifdef OCCT_28850_FIXED
 
 /// Creates an aspect to be shown in length/radius dimension presentations
 /// \return an instance of aspect
@@ -103,6 +104,13 @@ SketcherPrs_LengthDimension::SketcherPrs_LengthDimension(ModelAPI_Feature* theCo
 {
   SetDimensionAspect(createDimensionAspect());
   myStyleListener = new SketcherPrs_DimensionStyleListener();
+
+#ifdef OCCT_28850_FIXED
+  if (theConstraint->getKind() == SketchPlugin_ConstraintDistanceHorizontal::ID())
+    SetDirection(true, mySketcherPlane->dirX()->impl<gp_Dir>());
+  else if (theConstraint->getKind() == SketchPlugin_ConstraintDistanceVertical::ID())
+    SetDirection(true, mySketcherPlane->dirY()->impl<gp_Dir>());
+#endif
 }
 
 SketcherPrs_LengthDimension::~SketcherPrs_LengthDimension()