From 76c0f55ebe15a6889dc1621b1a9ea49a296cf14b Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 4 Aug 2015 11:32:52 +0200 Subject: [PATCH] + make mesh merge more performant --- src/Mod/Mesh/Gui/Command.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Mod/Mesh/Gui/Command.cpp b/src/Mod/Mesh/Gui/Command.cpp index 9e2f54dc4..45556ddad 100644 --- a/src/Mod/Mesh/Gui/Command.cpp +++ b/src/Mod/Mesh/Gui/Command.cpp @@ -1643,7 +1643,7 @@ CmdMeshMerge::CmdMeshMerge() sAppModule = "Mesh"; sGroup = QT_TR_NOOP("Mesh"); sMenuText = QT_TR_NOOP("Merge"); - sToolTipText = "Merges selected meshes into one"; + sToolTipText = QT_TR_NOOP("Merges selected meshes into one"); sWhatsThis = "Mesh_Merge"; sStatusTip = sToolTipText; } @@ -1653,16 +1653,17 @@ void CmdMeshMerge::activated(int iMsg) App::Document *pcDoc = App::GetApplication().getActiveDocument(); if (!pcDoc) return; + openCommand("Mesh merge"); - Mesh::MeshObject* newMesh = new(Mesh::MeshObject); + Mesh::Feature *pcFeature = static_cast(pcDoc->addObject("Mesh::Feature", "Mesh")); + Mesh::MeshObject* newMesh = pcFeature->Mesh.startEditing(); std::vector objs = Gui::Selection().getObjectsOfType(Mesh::Feature::getClassTypeId()); for (std::vector::const_iterator it = objs.begin(); it != objs.end(); ++it) { const MeshObject& mesh = static_cast(*it)->Mesh.getValue(); - MeshCore::MeshKernel kernel = mesh.getKernel(); - newMesh->addMesh(kernel); + newMesh->addMesh(mesh); } - Mesh::Feature *pcFeature = (Mesh::Feature*)pcDoc->addObject("Mesh::Feature", "Mesh"); - pcFeature->Mesh.setValue(*newMesh); + + pcFeature->Mesh.finishEditing(); updateActive(); commitCommand(); }