diff --git a/src/Mod/Sketcher/Gui/SketcherSettings.cpp b/src/Mod/Sketcher/Gui/SketcherSettings.cpp
index dea9a04874..d22d0e76f9 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 0b60d4197f..8c24d9372b 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 2e7008081f..8931a1fbf4 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++) {