From 1d17c043eb87471eb577249fad2e8d0037e25a22 Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 5 Oct 2017 15:20:39 +0200 Subject: [PATCH] re-enable sketcher to reference elements of other body --- src/Mod/Sketcher/App/SketchObject.cpp | 1 + src/Mod/Sketcher/App/SketchObject.h | 19 +++++++++++++++++-- src/Mod/Sketcher/Gui/CommandCreateGeo.cpp | 8 ++++---- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index f9c3da107a..73de2b796a 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -99,6 +99,7 @@ SketchObject::SketchObject() ADD_PROPERTY_TYPE(Constraints, (0) ,"Sketch",(App::PropertyType)(App::Prop_None),"Sketch constraints"); ADD_PROPERTY_TYPE(ExternalGeometry,(0,0),"Sketch",(App::PropertyType)(App::Prop_None),"Sketch external geometry"); + ExternalGeometry.setScope(App::LinkScope::Global); allowOtherBody = true; allowUnaligned = true; diff --git a/src/Mod/Sketcher/App/SketchObject.h b/src/Mod/Sketcher/App/SketchObject.h index da36a33caa..d5cdc18a7a 100644 --- a/src/Mod/Sketcher/App/SketchObject.h +++ b/src/Mod/Sketcher/App/SketchObject.h @@ -306,9 +306,19 @@ public: inline Sketch &getSolvedSketch(void) {return solvedSketch;} /// Flag to allow external geometry from other bodies than the one this sketch belongs to - bool allowOtherBody; + bool isAllowedOtherBody() const { + return allowOtherBody; + } + void setAllowOtherBody(bool on) { + allowOtherBody = on; + } /// Flag to allow carbon copy from misaligned geometry - bool allowUnaligned; + bool isAllowedUnaligned() const { + return allowUnaligned; + } + void setAllowUnaligned(bool on) { + allowUnaligned = on; + } enum eReasonList{ rlAllowed, @@ -346,6 +356,11 @@ protected: std::vector supportedGeometry(const std::vector &geoList) const; private: + /// Flag to allow external geometry from other bodies than the one this sketch belongs to + bool allowOtherBody; + /// Flag to allow carbon copy from misaligned geometry + bool allowUnaligned; + std::vector ExternalGeo; std::vector VertexId2GeoId; diff --git a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp index b9d6f33278..2f66679181 100644 --- a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp +++ b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp @@ -6308,7 +6308,7 @@ namespace SketcherGui { bool allow(App::Document *pDoc, App::DocumentObject *pObj, const char *sSubName) { Sketcher::SketchObject *sketch = static_cast(object); - sketch->allowOtherBody = (QApplication::keyboardModifiers() == Qt::ControlModifier); + sketch->setAllowOtherBody(QApplication::keyboardModifiers() == Qt::ControlModifier); this->notAllowedReason = ""; Sketcher::SketchObject::eReasonList msg; @@ -6536,9 +6536,9 @@ namespace SketcherGui { Q_UNUSED(sSubName); Sketcher::SketchObject *sketch = static_cast(object); - sketch->allowOtherBody = (QApplication::keyboardModifiers() == Qt::ControlModifier || QApplication::keyboardModifiers() == (Qt::ControlModifier | Qt::AltModifier)); - sketch->allowUnaligned = QApplication::keyboardModifiers() == (Qt::ControlModifier | Qt::AltModifier); - + sketch->setAllowOtherBody(QApplication::keyboardModifiers() == Qt::ControlModifier || QApplication::keyboardModifiers() == (Qt::ControlModifier | Qt::AltModifier)); + sketch->setAllowUnaligned(QApplication::keyboardModifiers() == (Qt::ControlModifier | Qt::AltModifier)); + this->notAllowedReason = ""; Sketcher::SketchObject::eReasonList msg; // Reusing code: All good reasons not to allow a carbon copy