From 05b5b48af802df573f0e6f64dbbcb14bb3f9478d Mon Sep 17 00:00:00 2001 From: Ian Rees Date: Tue, 4 Apr 2017 16:50:48 +1200 Subject: [PATCH] Refactor PartDesign create primitive commands --- src/Mod/PartDesign/Gui/CommandPrimitive.cpp | 160 ++++---------------- 1 file changed, 30 insertions(+), 130 deletions(-) diff --git a/src/Mod/PartDesign/Gui/CommandPrimitive.cpp b/src/Mod/PartDesign/Gui/CommandPrimitive.cpp index e470191d14..788eaa703f 100644 --- a/src/Mod/PartDesign/Gui/CommandPrimitive.cpp +++ b/src/Mod/PartDesign/Gui/CommandPrimitive.cpp @@ -46,6 +46,21 @@ using namespace std; DEF_STD_CMD_ACL(CmdPrimtiveCompAdditive); +static const char * primitiveIntToName(int id) +{ + switch(id) { + case 0: return "Box"; + case 1: return "Cylinder"; + case 2: return "Sphere"; + case 3: return "Cone"; + case 4: return "Ellipsoid"; + case 5: return "Torus"; + case 6: return "Prism"; + case 7: return "Wedge"; + default: return nullptr; + }; +}; + CmdPrimtiveCompAdditive::CmdPrimtiveCompAdditive() : Command("PartDesign_CompPrimitiveAdditive") { @@ -72,72 +87,14 @@ void CmdPrimtiveCompAdditive::activated(int iMsg) Gui::ActionGroup* pcAction = qobject_cast(_pcAction); pcAction->setIcon(pcAction->actions().at(iMsg)->icon()); - std::string FeatName; - if(iMsg == 0) { - - FeatName = getUniqueObjectName("Box"); - - Gui::Command::openCommand("Make additive box"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::AdditiveBox\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 1) { - - FeatName = getUniqueObjectName("Cylinder"); - - Gui::Command::openCommand("Make additive cylinder"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::AdditiveCylinder\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 2) { - - FeatName = getUniqueObjectName("Sphere"); - - Gui::Command::openCommand("Make additive sphere"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::AdditiveSphere\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 3) { - - FeatName = getUniqueObjectName("Cone"); - - Gui::Command::openCommand("Make additive cone"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::AdditiveCone\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 4) { - - FeatName = getUniqueObjectName("Ellipsoid"); - - Gui::Command::openCommand("Make additive ellipsoid"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::AdditiveEllipsoid\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 5) { - - FeatName = getUniqueObjectName("Torus"); - - Gui::Command::openCommand("Make additive torus"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::AdditiveTorus\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 6) { - - FeatName = getUniqueObjectName("Prism"); - - Gui::Command::openCommand("Make additive prism"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::AdditivePrism\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 7) { - - FeatName = getUniqueObjectName("Wedge"); - - Gui::Command::openCommand("Make additive wedge"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::AdditiveWedge\',\'%s\')", - FeatName.c_str()); - } + auto shapeType( primitiveIntToName(iMsg) ); + auto FeatName( getUniqueObjectName(shapeType) ); + Gui::Command::openCommand( (std::string("Make additive ") + shapeType).c_str() ); + Gui::Command::doCommand( + Gui::Command::Doc, + "App.ActiveDocument.addObject(\'PartDesign::Additive%s\',\'%s\')", + shapeType, FeatName.c_str() ); Gui::Command::doCommand(Doc,"App.ActiveDocument.%s.addObject(App.activeDocument().%s)" ,pcActiveBody->getNameInDocument(), FeatName.c_str()); @@ -268,77 +225,20 @@ void CmdPrimtiveCompSubtractive::activated(int iMsg) return; } - std::string FeatName; - if(iMsg == 0) { + auto shapeType( primitiveIntToName(iMsg) ); + auto FeatName( getUniqueObjectName(shapeType) ); - FeatName = getUniqueObjectName("Box"); - - Gui::Command::openCommand("Make subtractive box"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::SubtractiveBox\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 1) { - - FeatName = getUniqueObjectName("Cylinder"); - - Gui::Command::openCommand("Make subtractive cylinder"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::SubtractiveCylinder\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 2) { - - FeatName = getUniqueObjectName("Sphere"); - - Gui::Command::openCommand("Make subtractive sphere"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::SubtractiveSphere\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 3) { - - FeatName = getUniqueObjectName("Cone"); - - Gui::Command::openCommand("Make subtractive cone"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::SubtractiveCone\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 4) { - - FeatName = getUniqueObjectName("Ellipsoid"); - - Gui::Command::openCommand("Make subtractive ellipsoid"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::SubtractiveEllipsoid\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 5) { - - FeatName = getUniqueObjectName("Torus"); - - Gui::Command::openCommand("Make subtractive torus"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::SubtractiveTorus\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 6) { - - FeatName = getUniqueObjectName("Prism"); - - Gui::Command::openCommand("Make subtractive prism"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::SubtractivePrism\',\'%s\')", - FeatName.c_str()); - } - else if(iMsg == 7) { - - FeatName = getUniqueObjectName("Wedge"); - - Gui::Command::openCommand("Make subtractive wedge"); - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject(\'PartDesign::SubtractiveWedge\',\'%s\')", - FeatName.c_str()); - } + Gui::Command::openCommand( (std::string("Make subtractive ") + shapeType).c_str() ); + Gui::Command::doCommand( + Gui::Command::Doc, + "App.ActiveDocument.addObject(\'PartDesign::Subtractive%s\',\'%s\')", + shapeType, FeatName.c_str() ); Gui::Command::doCommand(Doc,"App.ActiveDocument.%s.addObject(App.activeDocument().%s)" ,pcActiveBody->getNameInDocument(), FeatName.c_str()); Gui::Command::updateActive(); - if (isActiveObjectValid() && (pcActiveBody != NULL)) { + if ( isActiveObjectValid() ) { // TODO (2015-08-05, Fat-Zer) if (prevSolid) { doCommand(Gui,"Gui.activeDocument().hide(\"%s\")", prevSolid->getNameInDocument());