From f99b0031d33376f08817d9492bf8fd70b73e6c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Tr=C3=B6ger?= Date: Thu, 7 May 2015 22:38:04 +0200 Subject: [PATCH] adopt mirror feature to base plane selection --- .../PartDesign/Gui/TaskMirroredParameters.cpp | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp b/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp index 3fe441781..67552cf82 100644 --- a/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -125,6 +126,21 @@ void TaskMirroredParameters::setupUI() ui->comboPlane->setEnabled(true); updateUI(); + + //show the parts coordinate system axis for selection + for(App::Part* part : App::GetApplication().getActiveDocument()->getObjectsOfType()) { + + if(part->hasObject(getObject(), true)) { + auto app_origin = part->getObjectsOfType(App::Origin::getClassTypeId()); + if(!app_origin.empty()) { + ViewProviderOrigin* origin; + origin = static_cast(Gui::Application::Instance->activeDocument()->getViewProvider(app_origin[0])); + origin->setTemporaryVisibilityMode(true, Gui::Application::Instance->activeDocument()); + origin->setTemporaryVisibilityPlanes(true); + } + break; + } + } } void TaskMirroredParameters::updateUI() @@ -226,6 +242,18 @@ void TaskMirroredParameters::onSelectionChanged(const Gui::SelectionChanges& msg ui->comboPlane->setCurrentIndex(maxcount); ui->comboPlane->addItem(tr("Select reference...")); } + } else if( strcmp(msg.pObjectName, App::Part::BaseplaneTypes[0]) == 0 || + strcmp(msg.pObjectName, App::Part::BaseplaneTypes[1]) == 0 || + strcmp(msg.pObjectName, App::Part::BaseplaneTypes[2]) == 0) { + + std::vector planes; + App::DocumentObject* selObj; + PartDesign::Mirrored* pcMirrored = static_cast(getObject()); + getReferencedSelection(pcMirrored, msg, selObj, planes); + pcMirrored->MirrorPlane.setValue(selObj, planes); + + recomputeFeature(); + updateUI(); } } } @@ -353,6 +381,21 @@ void TaskMirroredParameters::apply() TaskMirroredParameters::~TaskMirroredParameters() { + //hide the parts coordinate system axis for selection + for(App::Part* part : App::GetApplication().getActiveDocument()->getObjectsOfType()) { + + if(part->hasObject(getObject(), true)) { + auto app_origin = part->getObjectsOfType(App::Origin::getClassTypeId()); + if(!app_origin.empty()) { + ViewProviderOrigin* origin; + origin = static_cast(Gui::Application::Instance->activeDocument()->getViewProvider(app_origin[0])); + origin->setTemporaryVisibilityMode(false); + } + break; + } + } + + delete ui; if (proxy) delete proxy;