From fde9bded2835138524084fce77b219254561a488 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 27 Nov 2016 14:36:08 +0100 Subject: [PATCH] fix bottleneck in creation of sketcher grid --- src/Mod/Part/Gui/ViewProvider2DObject.cpp | 42 ++++++++++++++++------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/src/Mod/Part/Gui/ViewProvider2DObject.cpp b/src/Mod/Part/Gui/ViewProvider2DObject.cpp index d4072520558f..591ed70e313d 100644 --- a/src/Mod/Part/Gui/ViewProvider2DObject.cpp +++ b/src/Mod/Part/Gui/ViewProvider2DObject.cpp @@ -169,24 +169,42 @@ SoSeparator* ViewProvider2DObject::createGrid(void) vts = new SoVertexProperty; grid->vertexProperty = vts; - int vi=0, l=0; + // vertical lines + int vlines = static_cast((MaX - MiX) / Step + 0.5f); + + // horizontal lines + int hlines = static_cast((MaY - MiY) / Step + 0.5f); + + int lines = vlines + hlines; + + // set the grid indices + grid->numVertices.setNum(lines); + int32_t* vertices = grid->numVertices.startEditing(); + for (int i=0; inumVertices.finishEditing(); + + // set the grid coordinates + vts->vertex.setNum(2*lines); + SbVec3f* coords = vts->vertex.startEditing(); // vertical lines - float i; - for (i=MiX; ivertex.set1Value(vi++, i, MiY, zGrid); - vts->vertex.set1Value(vi++, i, MaY, zGrid); - grid->numVertices.set1Value(l++, 2); + float vx = MiX; + for (int i=0; ivertex.set1Value(vi++, MiX, i, zGrid); - vts->vertex.set1Value(vi++, MaX, i, zGrid); - grid->numVertices.set1Value(l++, 2); + float vy = MiY; + for (int i=vlines; ivertex.finishEditing(); + parent->addChild(vts); parent->addChild(grid);