From 6700512efe8b48d2ec9e90a39ecda8a002efd084 Mon Sep 17 00:00:00 2001 From: jriegel Date: Wed, 8 Feb 2012 22:29:34 +0100 Subject: [PATCH] Add some commands to assembly --- src/Mod/Assembly/Gui/AppAssemblyGui.cpp | 3 + src/Mod/Assembly/Gui/CMakeLists.txt | 1 + src/Mod/Assembly/Gui/Command.cpp | 66 +++++++++++++++++--- src/Mod/Assembly/Gui/CommandConstraints.cpp | 67 +++++++++++++++++++++ src/Mod/Assembly/Gui/Workbench.cpp | 4 ++ src/Mod/Part/App/AppPart.cpp | 2 + src/Mod/Part/App/Body.cpp | 60 ++++++++++++++++++ src/Mod/Part/App/Body.h | 64 ++++++++++++++++++++ src/Mod/Part/App/CMakeLists.txt | 2 + src/Mod/PartDesign/App/Body.cpp | 4 +- src/Mod/PartDesign/App/Body.h | 7 +-- src/Mod/PartDesign/Gui/CMakeLists.txt | 2 + src/Mod/PartDesign/Gui/ViewProviderBody.cpp | 54 +++++++++++++++++ src/Mod/PartDesign/Gui/ViewProviderBody.h | 51 ++++++++++++++++ 14 files changed, 373 insertions(+), 14 deletions(-) create mode 100644 src/Mod/Assembly/Gui/CommandConstraints.cpp create mode 100644 src/Mod/Part/App/Body.cpp create mode 100644 src/Mod/Part/App/Body.h create mode 100644 src/Mod/PartDesign/Gui/ViewProviderBody.cpp create mode 100644 src/Mod/PartDesign/Gui/ViewProviderBody.h diff --git a/src/Mod/Assembly/Gui/AppAssemblyGui.cpp b/src/Mod/Assembly/Gui/AppAssemblyGui.cpp index 95fbc16fe..a5973f1d2 100644 --- a/src/Mod/Assembly/Gui/AppAssemblyGui.cpp +++ b/src/Mod/Assembly/Gui/AppAssemblyGui.cpp @@ -39,6 +39,7 @@ // use a different name to CreateCommand() void CreateAssemblyCommands(void); +void CreateAssemblyConstraintCommands(void); void loadAssemblyResource() { @@ -65,6 +66,8 @@ void AssemblyGuiExport initAssemblyGui() // instanciating the commands CreateAssemblyCommands(); + CreateAssemblyConstraintCommands(); + AssemblyGui::Workbench::init(); AssemblyGui::ViewProviderItem ::init(); diff --git a/src/Mod/Assembly/Gui/CMakeLists.txt b/src/Mod/Assembly/Gui/CMakeLists.txt index 683333564..21be6e185 100644 --- a/src/Mod/Assembly/Gui/CMakeLists.txt +++ b/src/Mod/Assembly/Gui/CMakeLists.txt @@ -42,6 +42,7 @@ SET(AssemblyGuiModule_SRCS AppAssemblyGui.cpp AppAssemblyGuiPy.cpp Command.cpp + CommandConstraints.cpp Resources/Assembly.qrc qrc_Assembly.cxx PreCompiled.cpp diff --git a/src/Mod/Assembly/Gui/Command.cpp b/src/Mod/Assembly/Gui/Command.cpp index a763d90d4..3fb2de14c 100644 --- a/src/Mod/Assembly/Gui/Command.cpp +++ b/src/Mod/Assembly/Gui/Command.cpp @@ -33,33 +33,85 @@ using namespace std; -DEF_STD_CMD(CmdAssemblyConstraintAxle); -CmdAssemblyConstraintAxle::CmdAssemblyConstraintAxle() - :Command("Assembly_ConstraintAxle") + +//=========================================================================== + +DEF_STD_CMD(CmdAssemblyAddNewPart); + +CmdAssemblyAddNewPart::CmdAssemblyAddNewPart() + :Command("Assembly_AddNewPart") { sAppModule = "Assembly"; sGroup = QT_TR_NOOP("Assembly"); - sMenuText = QT_TR_NOOP("Constraint Axle..."); - sToolTipText = QT_TR_NOOP("set a axle constraint between two objects"); + sMenuText = QT_TR_NOOP("Add new Part"); + sToolTipText = QT_TR_NOOP("Add a new Part into the active Assembly"); sWhatsThis = "Assembly_ConstraintAxle"; sStatusTip = sToolTipText; sPixmap = "actions/Axle_constraint"; } -void CmdAssemblyConstraintAxle::activated(int iMsg) +void CmdAssemblyAddNewPart::activated(int iMsg) { // load the file with the module //Command::doCommand(Command::Gui, "import Assembly, AssemblyGui"); } +//=========================================================================== +DEF_STD_CMD(CmdAssemblyAddNewComponent); + +CmdAssemblyAddNewComponent::CmdAssemblyAddNewComponent() + :Command("Assembly_AddNewComponent") +{ + sAppModule = "Assembly"; + sGroup = QT_TR_NOOP("Assembly"); + sMenuText = QT_TR_NOOP("Add new Component"); + sToolTipText = QT_TR_NOOP("Add a new Component into the active Assembly"); + sWhatsThis = sToolTipText; + sStatusTip = sToolTipText; + sPixmap = "actions/Axle_constraint"; +} + + +void CmdAssemblyAddNewComponent::activated(int iMsg) +{ + // load the file with the module + //Command::doCommand(Command::Gui, "import Assembly, AssemblyGui"); + +} + +//=========================================================================== + +DEF_STD_CMD(CmdAssemblyAddExistingComponent); + +CmdAssemblyAddExistingComponent::CmdAssemblyAddExistingComponent() + :Command("Assembly_AddExistingComponent") +{ + sAppModule = "Assembly"; + sGroup = QT_TR_NOOP("Assembly"); + sMenuText = QT_TR_NOOP("Add existing Component..."); + sToolTipText = QT_TR_NOOP("Add a existing Component or File into the active Assembly"); + sWhatsThis = sToolTipText; + sStatusTip = sToolTipText; + sPixmap = "actions/Axle_constraint"; +} + + +void CmdAssemblyAddExistingComponent::activated(int iMsg) +{ + // load the file with the module + //Command::doCommand(Command::Gui, "import Assembly, AssemblyGui"); + +} void CreateAssemblyCommands(void) { Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager(); - rcCmdMgr.addCommand(new CmdAssemblyConstraintAxle()); + rcCmdMgr.addCommand(new CmdAssemblyAddNewPart()); + rcCmdMgr.addCommand(new CmdAssemblyAddNewComponent()); + rcCmdMgr.addCommand(new CmdAssemblyAddExistingComponent()); } diff --git a/src/Mod/Assembly/Gui/CommandConstraints.cpp b/src/Mod/Assembly/Gui/CommandConstraints.cpp new file mode 100644 index 000000000..083a9c1dd --- /dev/null +++ b/src/Mod/Assembly/Gui/CommandConstraints.cpp @@ -0,0 +1,67 @@ +/*************************************************************************** + * Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" +#ifndef _PreComp_ +#endif + +#include +#include +#include +#include + + +using namespace std; + + + +//=========================================================================== + +DEF_STD_CMD(CmdAssemblyConstraintAxle); + +CmdAssemblyConstraintAxle::CmdAssemblyConstraintAxle() + :Command("Assembly_ConstraintAxle") +{ + sAppModule = "Assembly"; + sGroup = QT_TR_NOOP("Assembly"); + sMenuText = QT_TR_NOOP("Constraint Axle..."); + sToolTipText = QT_TR_NOOP("set a axle constraint between two objects"); + sWhatsThis = sToolTipText; + sStatusTip = sToolTipText; + sPixmap = "actions/Axle_constraint"; +} + + +void CmdAssemblyConstraintAxle::activated(int iMsg) +{ + // load the file with the module + //Command::doCommand(Command::Gui, "import Assembly, AssemblyGui"); + +} + +void CreateAssemblyConstraintCommands(void) +{ + Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager(); + + rcCmdMgr.addCommand(new CmdAssemblyConstraintAxle()); + } diff --git a/src/Mod/Assembly/Gui/Workbench.cpp b/src/Mod/Assembly/Gui/Workbench.cpp index 2d55df865..b50793b24 100644 --- a/src/Mod/Assembly/Gui/Workbench.cpp +++ b/src/Mod/Assembly/Gui/Workbench.cpp @@ -49,6 +49,10 @@ Gui::ToolBarItem* Workbench::setupToolBars() const Gui::ToolBarItem* part = new Gui::ToolBarItem(root); part->setCommand(QT_TR_NOOP("Assembly")); *part << "Assembly_ConstraintAxle"; + *part << "Separator"; + *part << "Assembly_AddNewPart"; + *part << "Assembly_AddNewComponent"; + *part << "Assembly_AddExistingComponent"; return root; } diff --git a/src/Mod/Part/App/AppPart.cpp b/src/Mod/Part/App/AppPart.cpp index f6ae27a6e..ed1711256 100644 --- a/src/Mod/Part/App/AppPart.cpp +++ b/src/Mod/Part/App/AppPart.cpp @@ -49,6 +49,7 @@ #include "FeatureMirroring.h" #include "FeatureRevolution.h" #include "PartFeatures.h" +#include "Body.h" #include "PrimitiveFeature.h" #include "Part2DObject.h" #include "CustomFeature.h" @@ -218,6 +219,7 @@ PyMODINIT_FUNC initPart() Part::Feature ::init(); Part::FeatureExt ::init(); + Part::Body ::init(); Part::FeaturePython ::init(); Part::FeatureGeometrySet ::init(); Part::CustomFeature ::init(); diff --git a/src/Mod/Part/App/Body.cpp b/src/Mod/Part/App/Body.cpp new file mode 100644 index 000000000..1596c49da --- /dev/null +++ b/src/Mod/Part/App/Body.cpp @@ -0,0 +1,60 @@ +/*************************************************************************** + * Copyright (c) 2010 Juergen Riegel * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" +#ifndef _PreComp_ +#endif + +#include + +#include "Body.h" + + +using namespace Part; + +namespace Part { + + +PROPERTY_SOURCE(Part::Body, Part::Feature) + +Body::Body() +{ + ADD_PROPERTY(Model,(0)); + ADD_PROPERTY(Tip ,(0)); +} + +short Body::mustExecute() const +{ + //if (Sketch.isTouched() || + // Length.isTouched()) + // return 1; + return 0; +} + +App::DocumentObjectExecReturn *Body::execute(void) +{ + + return App::DocumentObject::StdReturn; +} + +} \ No newline at end of file diff --git a/src/Mod/Part/App/Body.h b/src/Mod/Part/App/Body.h new file mode 100644 index 000000000..d5e91d428 --- /dev/null +++ b/src/Mod/Part/App/Body.h @@ -0,0 +1,64 @@ +/*************************************************************************** + * Copyright (c) 2010 Juergen Riegel * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#ifndef PART_Body_H +#define PART_Body_H + +#include +#include + + +namespace Part +{ +/** Base class of all body objects in FreeCAD + * A body is used, e.g. in PartDesign, to agregate + * some modeling features to one shape. As long as not + * in edit or active on a workbench, the body shows only the + * resulting shape to the outside (Tip link). + */ +class PartExport Body : public Part::Feature +{ + PROPERTY_HEADER(PartDesign::Body); + +public: + Body(); + + App::PropertyLinkList Model; + App::PropertyLink Tip; + + /** @name methods override feature */ + //@{ + /// recalculate the feature + App::DocumentObjectExecReturn *execute(void); + short mustExecute() const; + /// returns the type name of the view provider + //const char* getViewProviderName(void) const { + // return "PartDesignGui::ViewProviderBody"; + //} + //@} +}; + +} //namespace Part + + +#endif // PART_Body_H diff --git a/src/Mod/Part/App/CMakeLists.txt b/src/Mod/Part/App/CMakeLists.txt index 98dac14be..4b6efbf1d 100644 --- a/src/Mod/Part/App/CMakeLists.txt +++ b/src/Mod/Part/App/CMakeLists.txt @@ -134,6 +134,8 @@ SET(Features_SRCS FeatureGeometrySet.cpp CustomFeature.cpp CustomFeature.h + Body.h + Body.cpp ) SOURCE_GROUP("Features" FILES ${Features_SRCS}) diff --git a/src/Mod/PartDesign/App/Body.cpp b/src/Mod/PartDesign/App/Body.cpp index 5f82a6ad1..a5939fdf3 100644 --- a/src/Mod/PartDesign/App/Body.cpp +++ b/src/Mod/PartDesign/App/Body.cpp @@ -35,11 +35,11 @@ using namespace PartDesign; namespace PartDesign { -PROPERTY_SOURCE(PartDesign::Body, Part::Feature) +PROPERTY_SOURCE(PartDesign::Body, Part::Body) Body::Body() { - ADD_PROPERTY(Model,(0)); + } short Body::mustExecute() const diff --git a/src/Mod/PartDesign/App/Body.h b/src/Mod/PartDesign/App/Body.h index 681d71b2f..b895425c3 100644 --- a/src/Mod/PartDesign/App/Body.h +++ b/src/Mod/PartDesign/App/Body.h @@ -25,22 +25,19 @@ #define PARTDESIGN_Body_H #include -#include +#include namespace PartDesign { -class Body : public Part::Feature +class Body : public Part::Body { PROPERTY_HEADER(PartDesign::Body); public: Body(); - App::PropertyLinkList Model; - App::PropertyLink Tip; - /** @name methods override feature */ //@{ /// recalculate the feature diff --git a/src/Mod/PartDesign/Gui/CMakeLists.txt b/src/Mod/PartDesign/Gui/CMakeLists.txt index 186c5f1c4..27a94d9e5 100644 --- a/src/Mod/PartDesign/Gui/CMakeLists.txt +++ b/src/Mod/PartDesign/Gui/CMakeLists.txt @@ -71,6 +71,8 @@ qt4_wrap_ui(PartDesignGui_UIC_HDRS ${PartDesignGui_UIC_SRCS}) SET(PartDesignGuiViewProvider_SRCS ViewProvider.cpp ViewProvider.h + ViewProviderBody.cpp + ViewProviderBody.h ViewProviderPad.cpp ViewProviderPad.h ViewProviderHole.cpp diff --git a/src/Mod/PartDesign/Gui/ViewProviderBody.cpp b/src/Mod/PartDesign/Gui/ViewProviderBody.cpp new file mode 100644 index 000000000..08472d0ca --- /dev/null +++ b/src/Mod/PartDesign/Gui/ViewProviderBody.cpp @@ -0,0 +1,54 @@ +/*************************************************************************** + * Copyright (c) 2011 Juergen Riegel * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" + +#ifndef _PreComp_ +#endif + +#include "ViewProviderBody.h" +#include +//#include + +using namespace PartDesignGui; + +PROPERTY_SOURCE(PartDesignGui::ViewProviderBody,PartGui::ViewProviderPart) + +ViewProviderBody::ViewProviderBody() +{ +} + +ViewProviderBody::~ViewProviderBody() +{ +} + +bool ViewProviderBody::doubleClicked(void) +{ + std::string Msg("Change "); + Msg += this->pcObject->getNameInDocument(); + Gui::Command::openCommand(Msg.c_str()); + Gui::Command::doCommand(Gui::Command::Gui,"Gui.activeDocument().setEdit('%s',0)",this->pcObject->getNameInDocument()); + return true; +} + + diff --git a/src/Mod/PartDesign/Gui/ViewProviderBody.h b/src/Mod/PartDesign/Gui/ViewProviderBody.h new file mode 100644 index 000000000..18f7de1cd --- /dev/null +++ b/src/Mod/PartDesign/Gui/ViewProviderBody.h @@ -0,0 +1,51 @@ +/*************************************************************************** + * Copyright (c) 2011 Juergen Riegel * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#ifndef PARTGUI_ViewProviderBody_H +#define PARTGUI_ViewProviderBody_H + +#include + + +namespace PartDesignGui { + +class PartDesignGuiExport ViewProviderBody : public PartGui::ViewProviderPart +{ + PROPERTY_HEADER(PartGui::ViewProviderBody); + +public: + /// constructor + ViewProviderBody(); + /// destructor + virtual ~ViewProviderBody(); + + virtual bool doubleClicked(void); + +}; + + + +} // namespace PartDesignGui + + +#endif // PARTGUI_ViewProviderHole_H