From 1f1acad4f8cb3b3fa2cd01ad68873558cad73aa1 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 9 May 2015 14:54:28 +0200 Subject: [PATCH] + set appropriate step size in clipping dialog --- src/Gui/Clipping.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/Gui/Clipping.cpp b/src/Gui/Clipping.cpp index 5ca369574..ceeb66374 100644 --- a/src/Gui/Clipping.cpp +++ b/src/Gui/Clipping.cpp @@ -27,6 +27,7 @@ # include # include # include +# include #endif # include @@ -138,6 +139,45 @@ Clipping::Clipping(Gui::View3DInventor* view, QWidget* parent) d->ui.clipX->setValue(cnt[0]); d->ui.clipY->setValue(cnt[1]); d->ui.clipZ->setValue(cnt[2]); + + int minDecimals = 2; + float lenx, leny,lenz; + box.getSize(lenx, leny, lenz); + int steps = 100; + float minlen = std::min(lenx, std::min(leny, lenz)); + + // determine the single step values + { + minlen = minlen / steps; + int dim = static_cast(log10(minlen)); + double singleStep = pow(10.0, dim); + d->ui.clipView->setSingleStep(singleStep); + minDecimals = std::max(minDecimals, -dim); + } + { + lenx = lenx / steps; + int dim = static_cast(log10(lenx)); + double singleStep = pow(10.0, dim); + d->ui.clipX->setSingleStep(singleStep); + } + { + leny = leny / steps; + int dim = static_cast(log10(leny)); + double singleStep = pow(10.0, dim); + d->ui.clipY->setSingleStep(singleStep); + } + { + lenz = lenz / steps; + int dim = static_cast(log10(lenz)); + double singleStep = pow(10.0, dim); + d->ui.clipZ->setSingleStep(singleStep); + } + + // set decimals + d->ui.clipView->setDecimals(minDecimals); + d->ui.clipX->setDecimals(minDecimals); + d->ui.clipY->setDecimals(minDecimals); + d->ui.clipZ->setDecimals(minDecimals); } }