From 40a1487cb5b7535923bbd144a382f54c6f0add45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Althaus?= Date: Sat, 18 May 2024 18:45:24 +0200 Subject: [PATCH] Set TransformMode to "Transform body" if no features are selected on creation of transform features --- src/Mod/PartDesign/Gui/Command.cpp | 67 +++++++++--------------------- 1 file changed, 19 insertions(+), 48 deletions(-) diff --git a/src/Mod/PartDesign/Gui/Command.cpp b/src/Mod/PartDesign/Gui/Command.cpp index 77ec3e6381..53b2715b6e 100644 --- a/src/Mod/PartDesign/Gui/Command.cpp +++ b/src/Mod/PartDesign/Gui/Command.cpp @@ -1877,14 +1877,6 @@ void prepareTransformed(PartDesign::Body *pcActiveBody, Gui::Command* cmd, const { std::string FeatName = cmd->getUniqueObjectName(which.c_str(), pcActiveBody); - auto accepter = [=](std::vector features) -> bool { - - if (features.empty()) - return false; - - return true; - }; - auto worker = [=](std::vector features) { std::stringstream str; str << cmd->getObjectCmd(FeatName.c_str(), pcActiveBody->getDocument()) << ".Originals = ["; @@ -1904,6 +1896,10 @@ void prepareTransformed(PartDesign::Body *pcActiveBody, Gui::Command* cmd, const auto Feat = pcActiveBody->getDocument()->getObject(FeatName.c_str()); + if (features.empty()) { + FCMD_OBJ_CMD(Feat,"TransformMode = \"Transform body\""); + } + // TODO What is this function supposed to do? (2015-08-05, Fat-Zer) func(Feat, features); @@ -1943,6 +1939,9 @@ void prepareTransformed(PartDesign::Body *pcActiveBody, Gui::Command* cmd, const Gui::Control().closeDialog(); Gui::Selection().clearSelection(); + auto accepter = [](std::vector) -> bool { + return true; + }; Gui::Control().showDialog(new PartDesignGui::TaskDlgFeaturePick(features, status, accepter, worker, false)); return; } else if (features.empty()) { @@ -1999,24 +1998,17 @@ void CmdPartDesignMirrored::activated(int iMsg) return; Gui::Command* cmd = this; - auto worker = [cmd](App::DocumentObject *Feat, std::vector features) { - - if (features.empty()) - return; - + auto worker = [cmd, pcActiveBody](App::DocumentObject *Feat, std::vector features) { bool direction = false; - if (features.front()->isDerivedFrom(PartDesign::ProfileBased::getClassTypeId())) { - Part::Part2DObject *sketch = (static_cast(features.front()))->getVerifiedSketch(/* silent =*/ true); + if (!features.empty() && features.front()->isDerivedFrom(PartDesign::ProfileBased::getClassTypeId())) { + Part::Part2DObject* sketch = (static_cast(features.front()))->getVerifiedSketch(/* silent =*/ true); if (sketch) { FCMD_OBJ_CMD(Feat,"MirrorPlane = ("<(Part::BodyBase::findBodyOf(features.front())); - if (body) { - FCMD_OBJ_CMD(Feat,"MirrorPlane = ("<getOrigin()->getXY())<<", [''])"); - } + FCMD_OBJ_CMD(Feat,"MirrorPlane = ("<getOrigin()->getXY())<<", [''])"); } finishTransformed(cmd, Feat); @@ -2061,13 +2053,9 @@ void CmdPartDesignLinearPattern::activated(int iMsg) return; Gui::Command* cmd = this; - auto worker = [cmd](App::DocumentObject *Feat, std::vector features) { - - if (!Feat || features.empty()) - return; - + auto worker = [cmd, pcActiveBody](App::DocumentObject *Feat, std::vector features) { bool direction = false; - if (features.front()->isDerivedFrom(PartDesign::ProfileBased::getClassTypeId())) { + if (!features.empty() && features.front()->isDerivedFrom(PartDesign::ProfileBased::getClassTypeId())) { Part::Part2DObject *sketch = (static_cast(features.front()))->getVerifiedSketch(/* silent =*/ true); if (sketch) { FCMD_OBJ_CMD(Feat,"Direction = ("<(Part::BodyBase::findBodyOf(features.front())); - if (body) { - FCMD_OBJ_CMD(Feat,"Direction = ("<getOrigin()->getX())<<",[''])"); - } + FCMD_OBJ_CMD(Feat,"Direction = ("<getOrigin()->getX())<<",[''])"); } FCMD_OBJ_CMD(Feat,"Length = 100"); FCMD_OBJ_CMD(Feat,"Occurrences = 2"); @@ -2125,13 +2110,10 @@ void CmdPartDesignPolarPattern::activated(int iMsg) return; Gui::Command* cmd = this; - auto worker = [cmd](App::DocumentObject *Feat, std::vector features) { - - if (!Feat || features.empty()) - return; + auto worker = [cmd, pcActiveBody](App::DocumentObject *Feat, std::vector features) { bool direction = false; - if (features.front()->isDerivedFrom(PartDesign::ProfileBased::getClassTypeId())) { + if (!features.empty() && features.front()->isDerivedFrom(PartDesign::ProfileBased::getClassTypeId())) { Part::Part2DObject *sketch = (static_cast(features.front()))->getVerifiedSketch(/* silent =*/ true); if (sketch) { FCMD_OBJ_CMD(Feat,"Axis = ("<(Part::BodyBase::findBodyOf(features.front())); - if (body) { - FCMD_OBJ_CMD(Feat,"Axis = ("<getOrigin()->getZ())<<",[''])"); - } + FCMD_OBJ_CMD(Feat,"Axis = ("<getOrigin()->getZ())<<",[''])"); } FCMD_OBJ_CMD(Feat,"Angle = 360"); @@ -2189,11 +2168,7 @@ void CmdPartDesignScaled::activated(int iMsg) return; Gui::Command* cmd = this; - auto worker = [cmd](App::DocumentObject *Feat, std::vector features) { - - if (!Feat || features.empty()) - return; - + auto worker = [cmd](App::DocumentObject *Feat, std::vector /*features*/) { FCMD_OBJ_CMD(Feat,"Factor = 2"); FCMD_OBJ_CMD(Feat,"Occurrences = 2"); @@ -2307,11 +2282,7 @@ void CmdPartDesignMultiTransform::activated(int iMsg) } else { Gui::Command* cmd = this; - auto worker = [cmd, pcActiveBody](App::DocumentObject *Feat, std::vector features) { - - if (!Feat || features.empty()) - return; - + auto worker = [cmd, pcActiveBody](App::DocumentObject *Feat, std::vector /*features*/) { // Make sure the user isn't presented with an empty screen because no transformations are defined yet... App::DocumentObject* prevSolid = pcActiveBody->Tip.getValue(); if (prevSolid) {