diff --git a/src/Mod/Part/App/AppPart.cpp b/src/Mod/Part/App/AppPart.cpp index 5951c82e8..d4dd38731 100644 --- a/src/Mod/Part/App/AppPart.cpp +++ b/src/Mod/Part/App/AppPart.cpp @@ -43,6 +43,7 @@ #include "FeatureGeometrySet.h" #include "FeatureChamfer.h" #include "FeatureCompound.h" +#include "FeatureFace.h" #include "FeatureExtrusion.h" #include "FeatureFillet.h" #include "FeatureMirroring.h" @@ -263,6 +264,7 @@ void PartExport initPart() Part::Wedge ::init(); Part::Part2DObject ::init(); Part::Part2DObjectPython ::init(); + Part::Face ::init(); Part::RuledSurface ::init(); Part::Loft ::init(); Part::Sweep ::init(); diff --git a/src/Mod/Part/App/CMakeLists.txt b/src/Mod/Part/App/CMakeLists.txt index 357bd399d..00bd1c9f2 100644 --- a/src/Mod/Part/App/CMakeLists.txt +++ b/src/Mod/Part/App/CMakeLists.txt @@ -113,6 +113,8 @@ SET(Features_SRCS FeatureCompound.h FeatureExtrusion.cpp FeatureExtrusion.h + FeatureFace.cpp + FeatureFace.h FeatureFillet.cpp FeatureFillet.h FeatureMirroring.cpp diff --git a/src/Mod/PartDesign/App/FeatureFace.cpp b/src/Mod/Part/App/FeatureFace.cpp similarity index 95% rename from src/Mod/PartDesign/App/FeatureFace.cpp rename to src/Mod/Part/App/FeatureFace.cpp index fb4b81dcf..682a87b2e 100644 --- a/src/Mod/PartDesign/App/FeatureFace.cpp +++ b/src/Mod/Part/App/FeatureFace.cpp @@ -44,12 +44,13 @@ #include #include "FeatureFace.h" +#include -using namespace PartDesign; +using namespace Part; -PROPERTY_SOURCE(PartDesign::Face, Part::Part2DObject) +PROPERTY_SOURCE(Part::Face, Part::Feature) Face::Face() { @@ -61,7 +62,7 @@ short Face::mustExecute() const { if (Sources.isTouched()) return 1; - return Part::Part2DObject::mustExecute(); + return Part::Feature::mustExecute(); } App::DocumentObjectExecReturn *Face::execute(void) diff --git a/src/Mod/PartDesign/App/FeatureFace.h b/src/Mod/Part/App/FeatureFace.h similarity index 86% rename from src/Mod/PartDesign/App/FeatureFace.h rename to src/Mod/Part/App/FeatureFace.h index 2cb69bd91..04e3fe8ba 100644 --- a/src/Mod/PartDesign/App/FeatureFace.h +++ b/src/Mod/Part/App/FeatureFace.h @@ -21,17 +21,17 @@ ***************************************************************************/ -#ifndef PARTDESIGN_FACE_H -#define PARTDESIGN_FACE_H +#ifndef PART_FACE_H +#define PART_FACE_H -#include +#include -namespace PartDesign +namespace Part { -class PartDesignExport Face : public Part::Part2DObject +class PartExport Face : public Part::Feature { - PROPERTY_HEADER(PartDesign::Face); + PROPERTY_HEADER(Part::Face); public: Face(); @@ -53,7 +53,7 @@ private: class Wire_Compare; }; -} //namespace PartDesign +} //namespace Part -#endif // PARTDESIGN_FACE_H +#endif // PART_FACE_H diff --git a/src/Mod/Part/Gui/Command.cpp b/src/Mod/Part/Gui/Command.cpp index b4689f18d..a968ec83c 100644 --- a/src/Mod/Part/Gui/Command.cpp +++ b/src/Mod/Part/Gui/Command.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -53,6 +54,7 @@ #include #include "../App/PartFeature.h" +#include #include "DlgPartImportStepImp.h" #include "DlgBooleanOperation.h" #include "DlgExtrusion.h" @@ -1021,6 +1023,44 @@ bool CmdPartExtrude::isActive(void) return (hasActiveDocument() && !Gui::Control().activeDialog()); } +//=========================================================================== +// Part_MakeFace +//=========================================================================== +DEF_STD_CMD_A(CmdPartMakeFace); + +CmdPartMakeFace::CmdPartMakeFace() + : Command("Part_MakeFace") +{ + sAppModule = "Part"; + sGroup = QT_TR_NOOP("Part"); + sMenuText = QT_TR_NOOP("Make face from sketch"); + sToolTipText = QT_TR_NOOP("Make face from a selected sketch"); + sWhatsThis = "Part_MakeFace"; + sStatusTip = sToolTipText; +} + +void CmdPartMakeFace::activated(int iMsg) +{ + std::vector sketches = Gui::Selection().getObjectsOfType(); + openCommand("Make face"); + for (std::vector::iterator it = sketches.begin(); it != sketches.end(); ++it) { + App::DocumentObjectT obj(*it); + std::stringstream str; + str << obj.getDocumentPython() + << ".addObject(\"Part::Face\", \"Face\").Sources = " + << obj.getObjectPython(); + doCommand(Doc,str.str().c_str()); + } + commitCommand(); + updateActive(); +} + +bool CmdPartMakeFace::isActive(void) +{ + return (Gui::Selection().countObjectsOfType(Part::Part2DObject::getClassTypeId()) > 0 && + !Gui::Control().activeDialog()); +} + //=========================================================================== // Part_Revolve //=========================================================================== @@ -1837,6 +1877,7 @@ void CreatePartCommands(void) rcCmdMgr.addCommand(new CmdPartReverseShape()); rcCmdMgr.addCommand(new CmdPartBoolean()); rcCmdMgr.addCommand(new CmdPartExtrude()); + rcCmdMgr.addCommand(new CmdPartMakeFace()); rcCmdMgr.addCommand(new CmdPartMirror()); rcCmdMgr.addCommand(new CmdPartRevolve()); rcCmdMgr.addCommand(new CmdPartCrossSections()); diff --git a/src/Mod/Part/Gui/Workbench.cpp b/src/Mod/Part/Gui/Workbench.cpp index 0736719e7..d7ecdbf79 100644 --- a/src/Mod/Part/Gui/Workbench.cpp +++ b/src/Mod/Part/Gui/Workbench.cpp @@ -79,7 +79,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const << "Part_ShapeFromMesh" << "Part_MakeSolid" << "Part_ReverseShape" << "Part_SimpleCopy" << "Part_RefineShape" << "Part_CheckGeometry" << "Separator" << bop << join << "Separator" - << "Part_CrossSections" << "Part_Compound" << "Part_Extrude" + << "Part_CrossSections" << "Part_Compound" << "Part_MakeFace" << "Part_Extrude" << "Part_Revolve" << "Part_Mirror" << "Part_Fillet" << "Part_Chamfer" << "Part_RuledSurface" << "Part_Loft" << "Part_Sweep" << "Part_Offset" << "Part_Thickness"; diff --git a/src/Mod/PartDesign/App/AppPartDesign.cpp b/src/Mod/PartDesign/App/AppPartDesign.cpp index d58dc6ceb..ee6f6c060 100644 --- a/src/Mod/PartDesign/App/AppPartDesign.cpp +++ b/src/Mod/PartDesign/App/AppPartDesign.cpp @@ -39,7 +39,6 @@ #include "FeatureDressUp.h" #include "FeatureChamfer.h" #include "FeatureDraft.h" -#include "FeatureFace.h" #include "FeatureSubtractive.h" #include "FeatureAdditive.h" #include "FeatureTransformed.h" @@ -96,8 +95,7 @@ void PartDesignExport init_PartDesign() PartDesign::Revolution ::init(); PartDesign::Groove ::init(); PartDesign::Chamfer ::init(); - PartDesign::Face ::init(); - PartDesign::Draft ::init(); + PartDesign::Draft ::init(); } } // extern "C" diff --git a/src/Mod/PartDesign/App/CMakeLists.txt b/src/Mod/PartDesign/App/CMakeLists.txt index a115a251a..8340a38a1 100644 --- a/src/Mod/PartDesign/App/CMakeLists.txt +++ b/src/Mod/PartDesign/App/CMakeLists.txt @@ -62,8 +62,6 @@ SOURCE_GROUP("DressUpFeatures" FILES ${FeaturesDressUp_SRCS}) SET(FeaturesSketchBased_SRCS FeatureSketchBased.cpp FeatureSketchBased.h - FeatureFace.cpp - FeatureFace.h FeaturePad.cpp FeaturePad.h FeaturePocket.cpp