From 2033bc1b7b07ad7f324f3fef5a5e1d933ddfe8fb Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 5 May 2025 16:18:59 +0200 Subject: [PATCH] Points: Optimize translation of imported points --- src/Mod/Points/Gui/Command.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/Mod/Points/Gui/Command.cpp b/src/Mod/Points/Gui/Command.cpp index 5aaa6683b8..0663980f2c 100644 --- a/src/Mod/Points/Gui/Command.cpp +++ b/src/Mod/Points/Gui/Command.cpp @@ -89,13 +89,13 @@ void CmdPointsImport::activated(int iMsg) if (!fn.isEmpty()) { fn = Base::Tools::escapeEncodeFilename(fn); - Gui::Document* doc = getActiveGuiDocument(); + App::Document* doc = getActiveDocument(); openCommand(QT_TRANSLATE_NOOP("Command", "Import points")); addModule(Command::App, "Points"); doCommand(Command::Doc, "Points.insert(\"%s\", \"%s\")", fn.toUtf8().data(), - doc->getDocument()->getName()); + doc->getName()); commitCommand(); updateActive(); @@ -105,8 +105,7 @@ void CmdPointsImport::activated(int iMsg) * origin had inaccuracies in the relative positioning of the points due to * imprecise floating point variables used in COIN **/ - auto* pcFtr = dynamic_cast(doc->getDocument()->getActiveObject()); - if (pcFtr) { + if (auto pcFtr = dynamic_cast(doc->getActiveObject())) { auto points = pcFtr->Points.getValue(); auto bbox = points.getBoundBox(); auto center = bbox.GetCenter(); @@ -123,11 +122,9 @@ void CmdPointsImport::activated(int iMsg) auto ret = msgBox.exec(); if (ret == QMessageBox::Yes) { - Points::PointKernel translatedPoints; - for (const auto& point : points) { - translatedPoints.push_back(point - center); - } - pcFtr->Points.setValue(translatedPoints); + Points::PointKernel* kernel = pcFtr->Points.startEditing(); + kernel->moveGeometry(-center); + pcFtr->Points.finishEditing(); } } }