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()); } }