From 9177b4057cf5ffade1183367f39996ba993f5d46 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 15 Jun 2019 12:23:47 +0200 Subject: [PATCH] remove dependency of datum element if creation of copy fails --- src/Mod/PartDesign/Gui/TaskDatumParameters.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Mod/PartDesign/Gui/TaskDatumParameters.cpp b/src/Mod/PartDesign/Gui/TaskDatumParameters.cpp index 7d7d5e46dcfd..beb3e84489f2 100644 --- a/src/Mod/PartDesign/Gui/TaskDatumParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskDatumParameters.cpp @@ -151,23 +151,28 @@ bool TaskDlgDatumParameters::accept() { if (result == QDialog::DialogCode::Rejected) return false; else if (!dlg.radioXRef->isChecked()) { - std::vector objs; + std::vector copyObjects; + std::vector copySubValues; std::vector subs = pcDatum->Support.getSubValues(); int index = 0; for (App::DocumentObject* obj : pcDatum->Support.getValues()) { if (!pcActiveBody->hasObject(obj) && !pcActiveBody->getOrigin()->hasObject(obj)) { - objs.push_back(PartDesignGui::TaskFeaturePick::makeCopy(obj, subs[index], dlg.radioIndependent->isChecked())); - copies.push_back(objs.back()); - subs[index] = ""; + auto* copy = PartDesignGui::TaskFeaturePick::makeCopy(obj, subs[index], dlg.radioIndependent->isChecked()); + if (copy) { + copyObjects.push_back(copy); + copies.push_back(copyObjects.back()); + copySubValues.push_back(std::string()); + } } else { - objs.push_back(obj); + copyObjects.push_back(obj); + copySubValues.push_back(subs[index]); } index++; } - pcDatum->Support.setValues(objs, subs); + pcDatum->Support.setValues(copyObjects, copySubValues); } }