From 356db441a6c4bf546828e149d7269b2d61c9f039 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 1 Mar 2021 13:58:02 +0100 Subject: [PATCH] PD: [skip ci] PolarPattern: Support 1 occurrence This is analogous to support 1 occurrence of the linear pattern feature: 81a5ec5e55ef --- .../PartDesign/App/FeaturePolarPattern.cpp | 21 +++++++++++-------- .../Gui/TaskPolarPatternParameters.cpp | 5 +++-- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/Mod/PartDesign/App/FeaturePolarPattern.cpp b/src/Mod/PartDesign/App/FeaturePolarPattern.cpp index 7b31c7a844..d17e2072b6 100644 --- a/src/Mod/PartDesign/App/FeaturePolarPattern.cpp +++ b/src/Mod/PartDesign/App/FeaturePolarPattern.cpp @@ -71,10 +71,19 @@ const std::list PolarPattern::getTransformations(const std::vector transformations; + gp_Trsf trans; + transformations.push_back(trans); // identity transformation + + if (occurrences < 2) + return transformations; + + bool reversed = Reversed.getValue(); double offset; if (std::fabs(angle - 360.0) < Precision::Confusion()) offset = Base::toRadians(angle) / occurrences; // Because e.g. two occurrences in 360 degrees need to be 180 degrees apart @@ -151,12 +160,6 @@ const std::list PolarPattern::getTransformations(const std::vector transformations; - gp_Trsf trans; - transformations.push_back(trans); // identity transformation - for (int i = 1; i < occurrences; i++) { trans.SetRotation(axis.Axis(), i * offset); transformations.push_back(trans); diff --git a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp index 6acfd34d7f..34c026b07a 100644 --- a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp @@ -121,6 +121,9 @@ void TaskPolarPatternParameters::setupUI() connect(ui->listWidgetFeatures->model(), SIGNAL(rowsMoved(QModelIndex, int, int, QModelIndex, int)), this, SLOT(indexesMoved())); + ui->spinOccurrences->setMaximum(INT_MAX); + ui->spinOccurrences->setMinimum(1); + updateViewTimer = new QTimer(this); updateViewTimer->setSingleShot(true); updateViewTimer->setInterval(getUpdateViewTimeout()); @@ -155,8 +158,6 @@ void TaskPolarPatternParameters::setupUI() // --------------------- ui->polarAngle->bind(pcPolarPattern->Angle); - ui->spinOccurrences->setMaximum(INT_MAX); - ui->spinOccurrences->setMinimum(2); ui->spinOccurrences->bind(pcPolarPattern->Occurrences); ui->comboAxis->setEnabled(true);