From 7aefd2366f182c09683fc696f38c6a57c1b8fa15 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Sat, 5 Feb 2022 05:10:48 +0100 Subject: [PATCH] Sketcher: Control Polygon incomplete for periodic BSplines ========================================================== Bug fix: https://forum.freecadweb.org/viewtopic.php?p=565127#p565127 Incorrect indexing of lineset fixed --- .../Gui/EditModeInformationOverlayCoinConverter.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Mod/Sketcher/Gui/EditModeInformationOverlayCoinConverter.cpp b/src/Mod/Sketcher/Gui/EditModeInformationOverlayCoinConverter.cpp index 8767b431e4..629371dd69 100644 --- a/src/Mod/Sketcher/Gui/EditModeInformationOverlayCoinConverter.cpp +++ b/src/Mod/Sketcher/Gui/EditModeInformationOverlayCoinConverter.cpp @@ -114,10 +114,14 @@ void EditModeInformationOverlayCoinConverter::calculate(const Part::Geometry * g controlPolygon.coordinates.clear(); controlPolygon.indices.clear(); + size_t nvertices; + if (spline->isPeriodic()) - controlPolygon.coordinates.reserve(poles.size()+1); + nvertices = poles.size()+1; else - controlPolygon.coordinates.reserve(poles.size()); + nvertices = poles.size(); + + controlPolygon.coordinates.reserve(nvertices); for (auto & v : poles) controlPolygon.coordinates.emplace_back(v); @@ -125,7 +129,7 @@ void EditModeInformationOverlayCoinConverter::calculate(const Part::Geometry * g if (spline->isPeriodic()) controlPolygon.coordinates.emplace_back(poles[0]); - controlPolygon.indices.push_back(poles.size()); // single continuous polygon starting at index 0 + controlPolygon.indices.push_back(nvertices); // single continuous polygon starting at index 0 } else if constexpr (calculation == CalculationType::BSplineCurvatureComb ) {