From 849fdd69565f4040aabd3f897b783e97b20c7f92 Mon Sep 17 00:00:00 2001 From: Paddle Date: Wed, 15 Mar 2023 11:09:09 +0100 Subject: [PATCH] Sketcher: Snap: Add 'Snap at angle' support to DrawSketchHandler. --- src/Mod/Sketcher/Gui/DrawSketchHandler.cpp | 10 ++++++++++ src/Mod/Sketcher/Gui/DrawSketchHandler.h | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp index a3161dcec5..190f1febd2 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp @@ -114,6 +114,11 @@ inline int ViewProviderSketchDrawSketchHandlerAttorney::getPreselectCross(const return vp.getPreselectCross(); } +inline void ViewProviderSketchDrawSketchHandlerAttorney::setAngleSnapping(ViewProviderSketch &vp, bool enable, Base::Vector2d referencePoint) +{ + vp.setAngleSnapping(enable, referencePoint); +} + /**************************** CurveConverter **********************************************/ @@ -250,6 +255,7 @@ void DrawSketchHandler::deactivate() drawEditMarkers(std::vector()); resetPositionText(); unsetCursor(); + setAngleSnapping(false); } void DrawSketchHandler::preActivated() @@ -992,3 +998,7 @@ Sketcher::SketchObject * DrawSketchHandler::getSketchObject() return sketchgui->getSketchObject(); } +void DrawSketchHandler::setAngleSnapping(bool enable, Base::Vector2d referencePoint) +{ + ViewProviderSketchDrawSketchHandlerAttorney::setAngleSnapping(*sketchgui, enable, referencePoint); +} \ No newline at end of file diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.h b/src/Mod/Sketcher/Gui/DrawSketchHandler.h index 2cd1cf4c5d..750db4e87e 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.h @@ -86,11 +86,13 @@ private: static inline void setAxisPickStyle(ViewProviderSketch &vp, bool on); static inline void moveCursorToSketchPoint(ViewProviderSketch &vp, Base::Vector2d point); static inline void preselectAtPoint(ViewProviderSketch &vp, Base::Vector2d point); + static inline void setAngleSnapping(ViewProviderSketch &vp, bool enable, Base::Vector2d referencePoint = Base::Vector2d(0., 0.)); static inline int getPreselectPoint(const ViewProviderSketch &vp); static inline int getPreselectCurve(const ViewProviderSketch &vp); static inline int getPreselectCross(const ViewProviderSketch &vp); + friend class DrawSketchHandler; }; @@ -203,6 +205,8 @@ protected: Sketcher::SketchObject * getSketchObject(); + void setAngleSnapping(bool enable, Base::Vector2d referencePoint = Base::Vector2d(0., 0.)); + private: void setSvgCursor(const QString &svgName, int x, int y, const std::map& colorMapping = std::map());