From 802af4c4641890e0d1b6d5cabb0dd3d2564e52f5 Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Sun, 6 Jul 2025 16:31:42 +0200 Subject: [PATCH] PartDesign: Add preview TaskBox to all feature task dialogs --- src/Mod/Part/Gui/DlgSettingsGeneral.cpp | 4 + src/Mod/Part/Gui/DlgSettingsGeneral.ui | 76 +++++++++++++++---- .../Part/Gui/ViewProviderPreviewExtension.cpp | 5 ++ .../Part/Gui/ViewProviderPreviewExtension.h | 1 + src/Mod/PartDesign/App/FeatureTransformed.cpp | 39 ++++++++++ src/Mod/PartDesign/App/FeatureTransformed.h | 2 + src/Mod/PartDesign/Gui/CMakeLists.txt | 1 + .../PartDesign/Gui/TaskChamferParameters.cpp | 1 + .../PartDesign/Gui/TaskFeatureParameters.cpp | 57 +++++++++++++- .../PartDesign/Gui/TaskFeatureParameters.h | 25 ++++++ .../PartDesign/Gui/TaskFilletParameters.cpp | 1 + .../PartDesign/Gui/TaskHelixParameters.cpp | 1 + src/Mod/PartDesign/Gui/TaskHoleParameters.cpp | 1 + .../Gui/TaskLinearPatternParameters.cpp | 1 + src/Mod/PartDesign/Gui/TaskLoftParameters.cpp | 1 + .../PartDesign/Gui/TaskMirroredParameters.cpp | 1 + .../Gui/TaskMultiTransformParameters.cpp | 1 + src/Mod/PartDesign/Gui/TaskPadParameters.cpp | 1 + src/Mod/PartDesign/Gui/TaskPipeParameters.cpp | 1 + .../PartDesign/Gui/TaskPocketParameters.cpp | 1 + .../Gui/TaskPolarPatternParameters.cpp | 1 + .../PartDesign/Gui/TaskPreviewParameters.ui | 35 +++++++++ .../Gui/TaskPrimitiveParameters.cpp | 1 + .../Gui/TaskRevolutionParameters.cpp | 2 + .../Gui/TaskThicknessParameters.cpp | 1 + .../Gui/ViewProviderTransformed.cpp | 20 +---- .../PartDesign/Gui/ViewProviderTransformed.h | 2 - 27 files changed, 242 insertions(+), 41 deletions(-) create mode 100644 src/Mod/PartDesign/Gui/TaskPreviewParameters.ui diff --git a/src/Mod/Part/Gui/DlgSettingsGeneral.cpp b/src/Mod/Part/Gui/DlgSettingsGeneral.cpp index 6ab826e391..0f884832f9 100644 --- a/src/Mod/Part/Gui/DlgSettingsGeneral.cpp +++ b/src/Mod/Part/Gui/DlgSettingsGeneral.cpp @@ -63,6 +63,8 @@ void DlgSettingsGeneral::saveSettings() ui->checkObjectNaming->onSave(); ui->checkAllowCompoundBody->onSave(); ui->comboDefaultProfileTypeForHole->onSave(); + ui->checkShowFinalPreview->onSave(); + ui->checkShowTransparentPreview->onSave(); ui->checkSwitchToTask->onSave(); } @@ -74,6 +76,8 @@ void DlgSettingsGeneral::loadSettings() ui->checkObjectNaming->onRestore(); ui->checkAllowCompoundBody->onRestore(); ui->comboDefaultProfileTypeForHole->onRestore(); + ui->checkShowFinalPreview->onRestore(); + ui->checkShowTransparentPreview->onRestore(); ui->checkSwitchToTask->onRestore(); } diff --git a/src/Mod/Part/Gui/DlgSettingsGeneral.ui b/src/Mod/Part/Gui/DlgSettingsGeneral.ui index 7cb42a47e3..7c90d959f8 100644 --- a/src/Mod/Part/Gui/DlgSettingsGeneral.ui +++ b/src/Mod/Part/Gui/DlgSettingsGeneral.ui @@ -21,11 +21,11 @@ - - + + Automatically check model after boolean operation - + true @@ -37,11 +37,11 @@ - - + + Automatically refine model after boolean operation - + true @@ -53,11 +53,11 @@ - - + + Automatically refine model after applying operations - + true @@ -84,8 +84,8 @@ - - + + Add name of base object @@ -172,6 +172,50 @@ + + + + true + + + Preview + + + false + + + + + + Show final result by default when editing feature + + + ShowFinal + + + Mod/PartDesign/Preview + + + + + + + Show transparent preview overlay by default when editing feature + + + true + + + ShowTransparentPreview + + + Mod/PartDesign/Preview + + + + + + @@ -213,7 +257,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -227,13 +271,13 @@ - Gui::PrefComboBox - QComboBox + Gui::PrefCheckBox + QCheckBox
Gui/PrefWidgets.h
- Gui::PrefCheckBox - QWidget + Gui::PrefComboBox + QComboBox
Gui/PrefWidgets.h
diff --git a/src/Mod/Part/Gui/ViewProviderPreviewExtension.cpp b/src/Mod/Part/Gui/ViewProviderPreviewExtension.cpp index eac9195389..0cc338ae33 100644 --- a/src/Mod/Part/Gui/ViewProviderPreviewExtension.cpp +++ b/src/Mod/Part/Gui/ViewProviderPreviewExtension.cpp @@ -117,6 +117,11 @@ SoPreviewShape::SoPreviewShape() SoSeparator::addChild(annotation); } +void SoPreviewShape::initClass() +{ + SO_NODE_INIT_CLASS(SoPreviewShape, SoSeparator, "Separator"); +} + EXTENSION_PROPERTY_SOURCE(PartGui::ViewProviderPreviewExtension, Gui::ViewProviderExtension) ViewProviderPreviewExtension::ViewProviderPreviewExtension() diff --git a/src/Mod/Part/Gui/ViewProviderPreviewExtension.h b/src/Mod/Part/Gui/ViewProviderPreviewExtension.h index f829445c41..137c3079fb 100644 --- a/src/Mod/Part/Gui/ViewProviderPreviewExtension.h +++ b/src/Mod/Part/Gui/ViewProviderPreviewExtension.h @@ -57,6 +57,7 @@ public: static const SbColor defaultColor; SoPreviewShape(); + static void initClass(); SoSFColor color; SoSFFloat transparency; diff --git a/src/Mod/PartDesign/App/FeatureTransformed.cpp b/src/Mod/PartDesign/App/FeatureTransformed.cpp index ae90ded7f3..2859530021 100644 --- a/src/Mod/PartDesign/App/FeatureTransformed.cpp +++ b/src/Mod/PartDesign/App/FeatureTransformed.cpp @@ -222,6 +222,45 @@ short Transformed::mustExecute() const } return PartDesign::Feature::mustExecute(); } + +App::DocumentObjectExecReturn* Transformed::recomputePreview() +{ + const auto mode = static_cast(TransformMode.getValue()); + + const auto makeCompoundOfToolShapes = [this]() { + BRep_Builder builder; + TopoDS_Compound compound; + + builder.MakeCompound(compound); + for (const auto& original : getOriginals()) { + if (auto* feature = freecad_cast(original)) { + const auto& shape = feature->AddSubShape.getShape(); + + if (shape.isNull()) { + continue; + } + + builder.Add(compound, shape.getShape()); + } + } + + return compound; + }; + + switch (mode) { + case Mode::TransformToolShapes: + PreviewShape.setValue(makeCompoundOfToolShapes()); + return StdReturn; + + case Mode::TransformBody: + PreviewShape.setValue(getBaseShape()); + return StdReturn; + + default: + return FeatureRefine::recomputePreview(); + } +} + void Transformed::onChanged(const App::Property* prop) { if (prop == &TransformMode) { diff --git a/src/Mod/PartDesign/App/FeatureTransformed.h b/src/Mod/PartDesign/App/FeatureTransformed.h index 015a7f5613..6e0321c697 100644 --- a/src/Mod/PartDesign/App/FeatureTransformed.h +++ b/src/Mod/PartDesign/App/FeatureTransformed.h @@ -94,6 +94,8 @@ public: short mustExecute() const override; //@} + App::DocumentObjectExecReturn* recomputePreview() override; + void onChanged(const App::Property* prop) override; /** returns the compound of the shapes that were rejected during the last execute diff --git a/src/Mod/PartDesign/Gui/CMakeLists.txt b/src/Mod/PartDesign/Gui/CMakeLists.txt index 5b1d316c5e..6bc83e47ec 100644 --- a/src/Mod/PartDesign/Gui/CMakeLists.txt +++ b/src/Mod/PartDesign/Gui/CMakeLists.txt @@ -44,6 +44,7 @@ set(PartDesignGui_UIC_SRCS TaskScaledParameters.ui TaskMultiTransformParameters.ui TaskShapeBinder.ui + TaskPreviewParameters.ui TaskPrimitiveParameters.ui TaskPipeParameters.ui TaskPipeOrientation.ui diff --git a/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp b/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp index 5f2dc70ca4..11a0a535bf 100644 --- a/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp @@ -339,6 +339,7 @@ TaskDlgChamferParameters::TaskDlgChamferParameters(ViewProviderChamfer* DressUpV parameter = new TaskChamferParameters(DressUpView); Content.push_back(parameter); + Content.push_back(preview); } TaskDlgChamferParameters::~TaskDlgChamferParameters() = default; diff --git a/src/Mod/PartDesign/Gui/TaskFeatureParameters.cpp b/src/Mod/PartDesign/Gui/TaskFeatureParameters.cpp index 8e71656e8d..718c9a34ac 100644 --- a/src/Mod/PartDesign/Gui/TaskFeatureParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskFeatureParameters.cpp @@ -34,6 +34,8 @@ #include #include +#include "ui_TaskPreviewParameters.h" + #include "TaskFeatureParameters.h" #include "TaskSketchBasedParameters.h" @@ -44,6 +46,55 @@ using namespace Gui; * Task Feature Parameters * *********************************************************************/ +TaskPreviewParameters::TaskPreviewParameters(ViewProvider* vp, QWidget* parent) + : TaskBox(BitmapFactory().pixmap("tree-pre-sel"), tr("Preview"), true, parent) + , vp(vp) + , ui(std::make_unique()) +{ + vp->showPreviousFeature(!hGrp->GetBool("ShowFinal", false)); + vp->showPreview(hGrp->GetBool("ShowTransparentPreview", true)); + + auto* proxy = new QWidget(this); + ui->setupUi(proxy); + + ui->showFinalCheckBox->setChecked(vp->isVisible()); + ui->showTransparentPreviewCheckBox->setChecked(vp->isPreviewEnabled()); + +#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0) + connect(ui->showTransparentPreviewCheckBox, + &QCheckBox::checkStateChanged, + this, + &TaskPreviewParameters::onShowPreviewChanged); + connect(ui->showFinalCheckBox, + &QCheckBox::checkStateChanged, + this, + &TaskPreviewParameters::onShowFinalChanged); +#else + connect(ui->showTransparentPreviewCheckBox, + &QCheckBox::stateChanged, + this, + &TaskPreviewParameters::onShowPreviewChanged); + connect(ui->showFinalCheckBox, + &QCheckBox::stateChanged, + this, + &TaskPreviewParameters::onShowFinalChanged); +#endif + + groupLayout()->addWidget(proxy); +} + +TaskPreviewParameters::~TaskPreviewParameters() = default; + +void TaskPreviewParameters::onShowFinalChanged(bool show) +{ + vp->showPreviousFeature(!show); +} + +void TaskPreviewParameters::onShowPreviewChanged(bool show) +{ + vp->showPreview(show); +} + TaskFeatureParameters::TaskFeatureParameters(PartDesignGui::ViewProvider *vp, QWidget *parent, const std::string& pixmapname, const QString& parname) : TaskBox(Gui::BitmapFactory().pixmap(pixmapname.c_str()), parname, true, parent) @@ -52,9 +103,6 @@ TaskFeatureParameters::TaskFeatureParameters(PartDesignGui::ViewProvider *vp, QW { Gui::Document* doc = vp->getDocument(); this->attachDocument(doc); - - vp->showPreviousFeature(true); - vp->showPreview(true); } void TaskFeatureParameters::slotDeletedObject(const Gui::ViewProviderDocumentObject& Obj) @@ -83,7 +131,8 @@ void TaskFeatureParameters::recomputeFeature() * Task Dialog * *********************************************************************/ TaskDlgFeatureParameters::TaskDlgFeatureParameters(PartDesignGui::ViewProvider *vp) - : vp(vp) + : preview(new TaskPreviewParameters(vp)) + , vp(vp) { assert(vp); } diff --git a/src/Mod/PartDesign/Gui/TaskFeatureParameters.h b/src/Mod/PartDesign/Gui/TaskFeatureParameters.h index 1a69973413..46c96b0a74 100644 --- a/src/Mod/PartDesign/Gui/TaskFeatureParameters.h +++ b/src/Mod/PartDesign/Gui/TaskFeatureParameters.h @@ -33,6 +33,28 @@ namespace PartDesignGui { +class Ui_TaskPreviewParameters; + +class TaskPreviewParameters : public Gui::TaskView::TaskBox +{ + Q_OBJECT + +public: + explicit TaskPreviewParameters(ViewProvider* vp, QWidget* parent = nullptr); + ~TaskPreviewParameters() override; + +public Q_SLOTS: + void onShowPreviewChanged(bool show); + void onShowFinalChanged(bool show); + +private: + ViewProvider* vp; + std::unique_ptr ui; + + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath( + "User parameter:BaseApp/Preferences/Mod/PartDesign/Preview"); +}; + /// Convenience class to collect common methods for all SketchBased features class TaskFeatureParameters : public Gui::TaskView::TaskBox, public Gui::DocumentObserver @@ -141,6 +163,9 @@ public: return nullptr; } +protected: + PartDesignGui::TaskPreviewParameters* preview; + private: PartDesignGui::ViewProvider* vp; }; diff --git a/src/Mod/PartDesign/Gui/TaskFilletParameters.cpp b/src/Mod/PartDesign/Gui/TaskFilletParameters.cpp index 23d4f7ca7c..327e1f2a73 100644 --- a/src/Mod/PartDesign/Gui/TaskFilletParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskFilletParameters.cpp @@ -206,6 +206,7 @@ TaskDlgFilletParameters::TaskDlgFilletParameters(ViewProviderFillet* DressUpView parameter = new TaskFilletParameters(DressUpView); Content.push_back(parameter); + Content.push_back(preview); } TaskDlgFilletParameters::~TaskDlgFilletParameters() = default; diff --git a/src/Mod/PartDesign/Gui/TaskHelixParameters.cpp b/src/Mod/PartDesign/Gui/TaskHelixParameters.cpp index 9e9d4ee584..80c8ae2713 100644 --- a/src/Mod/PartDesign/Gui/TaskHelixParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskHelixParameters.cpp @@ -713,6 +713,7 @@ TaskDlgHelixParameters::TaskDlgHelixParameters(ViewProviderHelix* HelixView) { assert(HelixView); Content.push_back(new TaskHelixParameters(HelixView)); + Content.push_back(preview); } diff --git a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp index defbe6b3a6..ed5b33de83 100644 --- a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp @@ -1159,6 +1159,7 @@ TaskDlgHoleParameters::TaskDlgHoleParameters(ViewProviderHole* HoleView) parameter = new TaskHoleParameters(HoleView); Content.push_back(parameter); + Content.push_back(preview); } TaskDlgHoleParameters::~TaskDlgHoleParameters() = default; diff --git a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp index 5cff275990..33cd6f77e6 100644 --- a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp @@ -432,6 +432,7 @@ TaskDlgLinearPatternParameters::TaskDlgLinearPatternParameters( parameter = new TaskLinearPatternParameters(LinearPatternView); Content.push_back(parameter); + Content.push_back(preview); } #include "moc_TaskLinearPatternParameters.cpp" diff --git a/src/Mod/PartDesign/Gui/TaskLoftParameters.cpp b/src/Mod/PartDesign/Gui/TaskLoftParameters.cpp index bdcb1fbfb0..0ee80f2500 100644 --- a/src/Mod/PartDesign/Gui/TaskLoftParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskLoftParameters.cpp @@ -381,6 +381,7 @@ TaskDlgLoftParameters::TaskDlgLoftParameters(ViewProviderLoft* LoftView, bool ne parameter = new TaskLoftParameters(LoftView, newObj); Content.push_back(parameter); + Content.push_back(preview); } TaskDlgLoftParameters::~TaskDlgLoftParameters() = default; diff --git a/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp b/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp index 3e8fcc74ae..3d6267c869 100644 --- a/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp @@ -246,6 +246,7 @@ TaskDlgMirroredParameters::TaskDlgMirroredParameters(ViewProviderMirrored* Mirro parameter = new TaskMirroredParameters(MirroredView); Content.push_back(parameter); + Content.push_back(preview); } #include "moc_TaskMirroredParameters.cpp" diff --git a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp index 240e307f1e..94e564a197 100644 --- a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp @@ -559,6 +559,7 @@ TaskDlgMultiTransformParameters::TaskDlgMultiTransformParameters( parameter->setEnabledTransaction(false); Content.push_back(parameter); + Content.push_back(preview); } #include "moc_TaskMultiTransformParameters.cpp" diff --git a/src/Mod/PartDesign/Gui/TaskPadParameters.cpp b/src/Mod/PartDesign/Gui/TaskPadParameters.cpp index 5ea987fe67..6f968cbbe6 100644 --- a/src/Mod/PartDesign/Gui/TaskPadParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPadParameters.cpp @@ -140,6 +140,7 @@ TaskDlgPadParameters::TaskDlgPadParameters(ViewProviderPad *PadView, bool /*newO : TaskDlgExtrudeParameters(PadView), parameters(new TaskPadParameters(PadView)) { Content.push_back(parameters); + Content.push_back(preview); } //==== calls from the TaskView =============================================================== diff --git a/src/Mod/PartDesign/Gui/TaskPipeParameters.cpp b/src/Mod/PartDesign/Gui/TaskPipeParameters.cpp index e3e8ec9dd1..ac25d709b5 100644 --- a/src/Mod/PartDesign/Gui/TaskPipeParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPipeParameters.cpp @@ -1132,6 +1132,7 @@ TaskDlgPipeParameters::TaskDlgPipeParameters(ViewProviderPipe* PipeView, bool ne Content.push_back(parameter); Content.push_back(orientation); Content.push_back(scaling); + Content.push_back(preview); parameter->stateHandler = stateHandler; orientation->stateHandler = stateHandler; diff --git a/src/Mod/PartDesign/Gui/TaskPocketParameters.cpp b/src/Mod/PartDesign/Gui/TaskPocketParameters.cpp index dee310c9f5..013780c3cc 100644 --- a/src/Mod/PartDesign/Gui/TaskPocketParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPocketParameters.cpp @@ -151,6 +151,7 @@ TaskDlgPocketParameters::TaskDlgPocketParameters(ViewProviderPocket *PocketView) : TaskDlgExtrudeParameters(PocketView), parameters(new TaskPocketParameters(PocketView)) { Content.push_back(parameters); + Content.push_back(preview); } #include "moc_TaskPocketParameters.cpp" diff --git a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp index d69d610591..e37bbeacdc 100644 --- a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp @@ -426,6 +426,7 @@ TaskDlgPolarPatternParameters::TaskDlgPolarPatternParameters( parameter = new TaskPolarPatternParameters(PolarPatternView); Content.push_back(parameter); + Content.push_back(preview); } #include "moc_TaskPolarPatternParameters.cpp" diff --git a/src/Mod/PartDesign/Gui/TaskPreviewParameters.ui b/src/Mod/PartDesign/Gui/TaskPreviewParameters.ui new file mode 100644 index 0000000000..08f73ab403 --- /dev/null +++ b/src/Mod/PartDesign/Gui/TaskPreviewParameters.ui @@ -0,0 +1,35 @@ + + + PartDesignGui::TaskPreviewParameters + + + + 0 + 0 + 364 + 62 + + + + Form + + + + + + Show final result + + + + + + + Show preview overlay + + + + + + + + diff --git a/src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp b/src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp index c30902fd2e..e68eb48cda 100644 --- a/src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp @@ -985,6 +985,7 @@ TaskDlgPrimitiveParameters::TaskDlgPrimitiveParameters(ViewProviderPrimitive* Pr Content.push_back(primitive); parameter = new PartGui::TaskAttacher(PrimitiveView, nullptr, QString(), tr("Attachment")); Content.push_back(parameter); + Content.push_back(preview); } TaskDlgPrimitiveParameters::~TaskDlgPrimitiveParameters() = default; diff --git a/src/Mod/PartDesign/Gui/TaskRevolutionParameters.cpp b/src/Mod/PartDesign/Gui/TaskRevolutionParameters.cpp index c3c8d711f7..562f94a433 100644 --- a/src/Mod/PartDesign/Gui/TaskRevolutionParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskRevolutionParameters.cpp @@ -713,6 +713,7 @@ TaskDlgRevolutionParameters::TaskDlgRevolutionParameters(ViewProviderRevolution { assert(RevolutionView); Content.push_back(new TaskRevolutionParameters(RevolutionView, "PartDesign_Revolution", tr("Revolution Parameters"))); + Content.push_back(preview); } TaskDlgGrooveParameters::TaskDlgGrooveParameters(ViewProviderGroove *GrooveView) @@ -720,6 +721,7 @@ TaskDlgGrooveParameters::TaskDlgGrooveParameters(ViewProviderGroove *GrooveView) { assert(GrooveView); Content.push_back(new TaskRevolutionParameters(GrooveView, "PartDesign_Groove", tr("Groove Parameters"))); + Content.push_back(preview); } diff --git a/src/Mod/PartDesign/Gui/TaskThicknessParameters.cpp b/src/Mod/PartDesign/Gui/TaskThicknessParameters.cpp index 24a5c8aa1a..6cb493221f 100644 --- a/src/Mod/PartDesign/Gui/TaskThicknessParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskThicknessParameters.cpp @@ -272,6 +272,7 @@ TaskDlgThicknessParameters::TaskDlgThicknessParameters(ViewProviderThickness* Dr parameter = new TaskThicknessParameters(DressUpView); Content.push_back(parameter); + Content.push_back(preview); } TaskDlgThicknessParameters::~TaskDlgThicknessParameters() = default; diff --git a/src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp b/src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp index 416819fc29..34446c1883 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp @@ -42,6 +42,7 @@ #include "ViewProviderTransformed.h" #include "TaskTransformedParameters.h" +#include #include using namespace PartDesignGui; @@ -109,8 +110,6 @@ void ViewProviderTransformed::updatePreview() return; } - transforms.pop_front(); - Gui::coinRemoveAllChildren(pcPreviewRoot); for (const auto& transform : transforms) { @@ -135,23 +134,6 @@ void ViewProviderTransformed::updatePreview() ViewProvider::updatePreview(); } -Part::TopoShape ViewProviderTransformed::getPreviewShape() const -{ - if (auto feature = getObject()) { - auto originals = feature->getOriginals(); - - if (originals.empty()) { - return {}; - } - - if (auto first = freecad_cast(originals.front())) { - return first->PreviewShape.getShape(); - } - } - - return {}; -} - void ViewProviderTransformed::handleTransformedResult(PartDesign::Transformed* pcTransformed) { unsigned rejected = 0; diff --git a/src/Mod/PartDesign/Gui/ViewProviderTransformed.h b/src/Mod/PartDesign/Gui/ViewProviderTransformed.h index 1c081b2d76..933fdaf7b3 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderTransformed.h +++ b/src/Mod/PartDesign/Gui/ViewProviderTransformed.h @@ -51,8 +51,6 @@ public: void recomputeFeature(bool recompute=true); void setupContextMenu(QMenu*, QObject*, const char*) override; - Part::TopoShape getPreviewShape() const override; - /// signals if the transformation contains errors boost::signals2::signal signalDiagnosis;