From d92b3fcc07c9e32c88feac1928d6cc04fb24b9a0 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Sun, 12 Feb 2017 18:27:50 +0100 Subject: [PATCH] Sketcher: Settings - Allow to set the number of segments per geometry --- src/Mod/Sketcher/Gui/SketcherSettings.cpp | 2 + src/Mod/Sketcher/Gui/SketcherSettings.ui | 61 ++++++++++++++------- src/Mod/Sketcher/Gui/ViewProviderSketch.cpp | 16 +++--- 3 files changed, 53 insertions(+), 26 deletions(-) diff --git a/src/Mod/Sketcher/Gui/SketcherSettings.cpp b/src/Mod/Sketcher/Gui/SketcherSettings.cpp index dea9a0487..d22d0e76f 100644 --- a/src/Mod/Sketcher/Gui/SketcherSettings.cpp +++ b/src/Mod/Sketcher/Gui/SketcherSettings.cpp @@ -122,6 +122,7 @@ void SketcherSettings::saveSettings() // Sketch editing ui->EditSketcherFontSize->onSave(); + ui->SegmentsPerGeometry->onSave(); ui->dialogOnDistanceConstraint->onSave(); ui->continueMode->onSave(); ui->checkBoxAdvancedSolverTaskBox->onSave(); @@ -164,6 +165,7 @@ void SketcherSettings::loadSettings() // Sketch editing ui->EditSketcherFontSize->onRestore(); + ui->SegmentsPerGeometry->onRestore(); ui->dialogOnDistanceConstraint->onRestore(); ui->continueMode->onRestore(); ui->checkBoxAdvancedSolverTaskBox->onRestore(); diff --git a/src/Mod/Sketcher/Gui/SketcherSettings.ui b/src/Mod/Sketcher/Gui/SketcherSettings.ui index 0b60d4197..8c24d9372 100644 --- a/src/Mod/Sketcher/Gui/SketcherSettings.ui +++ b/src/Mod/Sketcher/Gui/SketcherSettings.ui @@ -527,6 +527,19 @@ Sketch editing + + + + + 182 + 0 + + + + Font size + + + @@ -562,19 +575,6 @@ - - - - - 182 - 0 - - - - Font size - - - @@ -582,7 +582,7 @@ - + Ask for value after creating a distance constraint @@ -598,9 +598,6 @@ - - - @@ -608,7 +605,10 @@ - + + + + Geometry Creation "Continue Mode" @@ -624,7 +624,7 @@ - + true @@ -771,6 +771,29 @@ + + + + Segments per geometry + + + + + + + 50 + + + 1000 + + + SegmentsPerGeometry + + + View + + + diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index 2e7008081..8931a1fbf 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -3216,6 +3216,8 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer // end information layer int GeoId = 0; + + int stdcountsegments = hGrp->GetInt("SegmentsPerGeometry", 50); // RootPoint Points.push_back(Base::Vector3d(0.,0.,0.)); @@ -3241,7 +3243,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer const Part::GeomCircle *circle = static_cast(*it); Handle_Geom_Circle curve = Handle_Geom_Circle::DownCast(circle->handle()); - int countSegments = 50; + int countSegments = stdcountsegments; Base::Vector3d center = circle->getCenter(); double segment = (2 * M_PI) / countSegments; for (int i=0; i < countSegments; i++) { @@ -3260,7 +3262,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer const Part::GeomEllipse *ellipse = static_cast(*it); Handle_Geom_Ellipse curve = Handle_Geom_Ellipse::DownCast(ellipse->handle()); - int countSegments = 50; + int countSegments = stdcountsegments; Base::Vector3d center = ellipse->getCenter(); double segment = (2 * M_PI) / countSegments; for (int i=0; i < countSegments; i++) { @@ -3285,7 +3287,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer std::swap(startangle, endangle); double range = endangle-startangle; - int countSegments = std::max(6, int(50.0 * range / (2 * M_PI))); + int countSegments = std::max(6, int(stdcountsegments * range / (2 * M_PI))); double segment = range / countSegments; Base::Vector3d center = arc->getCenter(); @@ -3318,7 +3320,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer std::swap(startangle, endangle); double range = endangle-startangle; - int countSegments = std::max(6, int(50.0 * range / (2 * M_PI))); + int countSegments = std::max(6, int(stdcountsegments * range / (2 * M_PI))); double segment = range / countSegments; Base::Vector3d center = arc->getCenter(); @@ -3351,7 +3353,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer std::swap(startangle, endangle); double range = endangle-startangle; - int countSegments = std::max(6, int(50.0 * range / (2 * M_PI))); + int countSegments = std::max(6, int(stdcountsegments * range / (2 * M_PI))); double segment = range / countSegments; Base::Vector3d center = aoh->getCenter(); @@ -3384,7 +3386,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer std::swap(startangle, endangle); double range = endangle-startangle; - int countSegments = std::max(6, int(50.0 * range / (2 * M_PI))); + int countSegments = std::max(6, int(stdcountsegments * range / (2 * M_PI))); double segment = range / countSegments; Base::Vector3d center = aop->getCenter(); @@ -3420,7 +3422,7 @@ void ViewProviderSketch::draw(bool temp /*=false*/, bool rebuildinformationlayer std::swap(first, last); double range = last-first; - int countSegments = 50; + int countSegments = stdcountsegments; double segment = range / countSegments; for (int i=0; i < countSegments; i++) {