From 27f03e8edfb25ec29a80a675a9089130ca9cbeb2 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Tue, 11 Jun 2024 10:09:57 +0200 Subject: [PATCH] Assembly: Makes sure deleting assembly deletes the joints, the exploded views and the view group. --- src/Mod/Assembly/Gui/ViewProviderAssembly.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp index d9ea2ea4c5..9d07859cba 100644 --- a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp +++ b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp @@ -55,6 +55,7 @@ #include #include #include +#include #include #include "ViewProviderAssembly.h" @@ -887,10 +888,20 @@ void ViewProviderAssembly::onSelectionChanged(const Gui::SelectionChanges& msg) bool ViewProviderAssembly::onDelete(const std::vector& subNames) { - // Delete the joingroup when assembly is deleted + // Delete the assembly goups when assembly is deleted for (auto obj : getObject()->getOutList()) { - if (obj->getTypeId() == Assembly::JointGroup::getClassTypeId()) { - obj->getDocument()->removeObject(obj->getNameInDocument()); + if (obj->getTypeId() == Assembly::JointGroup::getClassTypeId() + || obj->getTypeId() == Assembly::ViewGroup::getClassTypeId() + /* || obj->getTypeId() == Assembly::BomGroup::getClassTypeId()*/) { + + // Delete the group content first. + Gui::Command::doCommand(Gui::Command::Doc, + "doc = App.getDocument(\"%s\")\n" + "objName = \"%s\"\n" + "doc.getObject(objName).removeObjectsFromDocument()\n" + "doc.removeObject(objName)\n", + obj->getDocument()->getName(), + obj->getNameInDocument()); } }